Организация ЭВМ и систем

         

Типы адресов


Для идентификации переменных и команд используются символьш имена (метки), виртуальные адреса и физические адреса (рис. 4.9).

Символьные имена присваивает пользователь при написании программ на алгоритмическом языке или ассемблере.

Рис.4.9. Типы адресов

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

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

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

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

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

Все методы управления памятью могут быть разделены на два класса (рис. 4.10):

- методы распределения ОП без использования внешней памяти (дис­кового пространства);

- методы распределения памяти с использованием дискового простран­ства;

Рассмотрим вначале первую группу методов.



Рис.4.10. Методы распределения памяти


Содержание раздела