Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС шпоры (незаконченые).docx
Скачиваний:
11
Добавлен:
24.09.2019
Размер:
104.5 Кб
Скачать

19. Понятие физического и виртуального адреса.

Понятие «адрес памяти» может рассматриваться с двух точек зрения. С одной стороны, при написании любой программы ее автор либо явно указывает, по каким адресам должны размещаться переменные и команды (так бывает при программировании на языке ассемблера), либо присвоение конкретных адресов доверяется системе программирования. Те адреса памяти, которые записаны в программе, принято называть виртуальными адресами.

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

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

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

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

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

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

Логическое адресное пространство процесса – виртуальное пространство, принадлежащее только данному процессу со своим набором адресов (адресацией).

Связывание или трансляция адреса – преобразование логического или виртуального адреса процесса в адрес физической ячейки.

Связывание может производится:

1) на этапе компиляции: при этом способе связывания в двоичном коде жестко указаны физические адреса, поэтому программа может загружаться только в конкретное место памяти. Недостаток: несколько программ могут затребовать загрузку в одно и то же место, а значит работать не будут.

2) на этапе загрузки: компилятор оставляет относительные ссылки, которые при загрузке программы в память преобразовываются в абсолютные физические. Достоинства: программа может быть загружена в любое место. Недостатки: впоследствии она не может быть перемещена, при свопинге(свопинг – выгрузка целиком из памяти и последующая загрузка обратно целиком) программа может быть возвращена только в тоже самое место.

3) на этапе выполнения: при каждом обращении к памяти относительные ссылки преобразовываются в абсолютные программно-аппаратным способом с использованием MMU (устройство управления памятью). Достоинства: перемещаемый код.

20. Назначение и функции подсистемы управления памятью.

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

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

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

Функции подсистемы управления памятью:

1) учет свободной и занятой памяти;

2) принятие решения о распределении памяти;

3) выделение памяти процессу и учет информации о ее использовании;

4) освобождение памяти и корректировка ее состояния.

При распределении ОЗУ возможны 2 метода 1) статистический (память назначается до выполнения программы) 2)динамический (во время выполнения программы)

Классификация методов организации памяти: