Программа представляет собой файл кода стандартной структуры, являющийся результатом работы транслятора. Во время исполнения программы этот файл отображается в оперативную память, причем структура этого отображения соответствует структуре файла и архитектуре центрального процессора.

В простейшем случае во время трансляции с языка, имеющего блочную структуру, каждая процедура (блок) транслируется в отдельный сегмент кода, так что каждой процедуре соответствует собственный сегмент кода. Обращение в программе к другой процедуре (блоку) транслируется в обращение к соответствующему сегменту кода. Каждый сегмент имеет в программе уникальный номер, который присваивается сегменту во время трансляции. Эти номера выделяются транслятором последовательно, по мере трансляции.

В ходе трансляции создается словарь сегментов, который представляет собой массив, состоящий из описателей сегментов. Каждый описатель сегмента содержит, во-первых, адрес по файлу этого сегмента и, во-вторых, его размер в байтах. В словаре сегментов сведены вместе все описатели сегментов кода.

Кроме того, во время трансляции создаются:

- массивы констант программы;

- таблица массивов констант (ТМК) данной программы, которая содержит информацию о расположении в файле массивов констант;

- внешний контекст программы — таблица имен, описанных как внешние по отношению к данной программе. Обычно это независимо оттранслированные программы или стандартные функции, к которым происходит обращение из данной программы;

- некоторая дополнительная информация.

При первом обращении из задачи к некоторой независимо оттранслированной программе происходит «знакомство» задачи и программы, находящейся на внешнем устройстве (накопителе на магнитных дисках, барабанах). Возможны два случая: программа не выполняется в данный момент в системе; программа уже выполняется (в другой задаче). Если программа еще не выполняется в системе, происходит ее загрузка в оперативную память. При этом считывается в память словарь сегментов. Он служит представителем программы в системе.

В отличие от словаря сегментов, ТМК и сегментов кода внешний контекст программы является представителем программы в задачах пользователей и поэтому загружается в математическую память задачи и одновременно включается в список к паспорту задачи.

После «знакомства» со словарем сегментов формируется адресное окружение выполнения программы.

При первом обращении к программе в задаче метку входа в первую процедуру (внешний блок) программы формирует ОС. Во время исполнения программа сама формирует метки для вызова своих процедур.

Когда в задаче происходит обращение к программе, которая уже выполняется в другой задаче, «знакомство» сводится к загрузке в математическую память задачи представителя программы — внешнего контекста и к формированию метки входа в программу.

Одним из важнейших понятий программирования является понятие контекста выполнения задачи, процедуры. Каждая задача, каждая процедура программы выполняются в некотором программном и аппаратном окружении, которое создается ОС.

Контекст вычислений — это область доступных данных. Различают контекст внешних объектов (называемый также внешним контекстом и определенным для пользователей, программ, задач) и контекст оперативных объектов (оперативный контекст процедуры внутри программы).

Внешний контекст — это область доступных файлов и других внешних объектов. Он реализуется с помощью системы справочников и так называемого файла учета пользователей.

Оперативный контекст — область доступных данных в математической памяти задачи, в том числе оперативных объектов связи с внешними объектами, он реализуется аппаратно. Контекст оперативных объектов будем называть просто контекстом.

Стек является основой организации вычислительного процесса в МВК «Эльбрус». Каждому процессу в системе соответствует собственный стек, и, наоборот, каждый стек соответствует некоторому процессу в системе.

Стек — это область памяти, состоящая из управляющей части — «шапки» стека, необходимой ОС для управления процессом, и активной части, на которой ведутся вычисления. В языках с блочной структурой при входе в процедуру (блок) объявляются новые переменные, и они сохраняются до выхода из данной процедуры. Соответственно при входе в процедуру отводится память для локальных данных, которая при выходе освобождается. Стек служит той областью памяти, которая используется, во-первых, для вычисления выражений и, во-вторых, для отведения места под параметры и локальные объекты процедур. В любой момент времени выполнения программы стек содержит секции памяти для переменных всех процедур, которые уже начали выполняться, но еще не окончились. Эти секции памяти называются активациями. Активация процедуры содержит базированную область памяти (секцию контекста) и, возможно, пустую область для вычисления выражений.

Стек — это аппаратное отображение процесса в оперативной памяти МВК. Когда на стеке работает процессор (процесс активный), аппаратное отображение процесса распространяется и на регистры процессора. Процесс может находиться и в неактивном состоянии, ожидая какого-либо события (например, освобождения процессора), тогда он отображается только данными в оперативной памяти (стеком). В этом случае в «шапке» стека хранится состояние процесса (т. е. отображение регистров процессора), которое и выставляется на процессоре в момент активизации процесса.

В стеке формируются два списка — статическая цепочка, определяющая контекст выполнения процедуры, и динамическая цепочка, отображающая последовательность запуска (активации) процедур. Из соображений эффективности статическая цепочка, обращение к которой происходит при каждом использовании доступной переменной, дублируется базовыми регистрами центрального процессора. Секции контекста в статической цепочке могут находиться и вне стеков.

Стек представляет собой массив, загруженный в математическую память, т. е. занимает смежную область в математической памяти, но не обязательно смежный по физической памяти. Во время работы процесса объем выделенной физической памяти под стек увеличивается и уменьшается.

Голосовать за статью:

Комментарии

Аноним
2012-01-17 в 15:17
чіткого прикладу неає

Добавить комментарий

Заголовок:
Ваш ник:
Ваш e-mail:
Текст:
Введите текст на картинке

Похожие новости:

Если у Вас возникают какие-либо вопросы или проблемы, то Вы можете написать в комментариях или воспользоваться формой обратной связи.

При копировании материлов ссылка на источник обязательна!