Управление памятью в операционных системах
В настоящее время программист обращается к памяти с помощью некоторого набора логических имен, для которых отсутствует отношение порядка (в общем случае множество переменных неупорядочено). Имена переменных и входных точек программных модулей составляют пространство имен. С другой стороны, существует понятие физической памяти, с которой работает процессор, извлекая из нее команды и помещая в нее результаты вычислений. Физическая память – это упорядоченное множество пронумерованных ячеек. К каждой из них можно обратиться, указав ее номер (адрес). Количество ячеек физической памяти ограниченно и фиксировано.
Системное программное обеспечение должно связать каждое указанное пользователем имя с физической ячейкой памяти, т.е. осуществить отображение пространства имен на физическую память компьютера.
Рис. 1. Память и отображение
В общем случае это делается в два этапа (см. рис.1): сначала системой программирования, а затем операционной системой. Между этими этапами обращения к памяти имеют форму виртуального или логического адреса. Множество всех допустимых значений виртуального адреса для некоторой программы определяет ее виртуальное адресное пространство или виртуальную память.
|
|
Система программирования осуществляет трансляцию и компоновку программы и производит привязку основной части виртуальных адресов программы к физическим ячейкам (первое отображение), а окончательная привязка делается операционной системой на этапе загрузки программы в память для ее исполнения (второе отображение).
Возможны частные случаи отображения пространства имен на физическую память:
a) тождественность виртуального адресного пространства физической памяти. Здесь нет необходимости осуществлять второе отображение. Система программирования генерирует абсолютно двоичную программу (адреса физические);
b) тождественность виртуального адресного пространства исходному пространству имен. Здесь отображение осуществляется самой операционной системой, путем использования таблицы символьных имен.
В настоящее время даже на ПК объем виртуальной памяти больше объема физической памяти. Имеется несколько методов распределения памяти для этой ситуации.