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


Типы адресов


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

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

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

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

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

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

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


- Начало -  - Назад -  - Вперед -