Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС (ШПОРЫ).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
267.26 Кб
Скачать

22. Управление памятью в операционных системах.

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

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

23. Память и отображение; виртуальное адресное пространство. Механизмы отображения пространства имен на физическую память компьютера.

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

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

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

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

  1. Объем виртуального адресного пространства Vv меньше объема физической памяти Vp (Vv<Vp);

Практически не встречается, но реально. Характерно для 16-разрядных мини-ЭВМ.

  1. Vv = Vp;

Часто встречается. Характерно для недорогих вычислительных комплексов.

  1. Vv > Vp.

Самая обычная ситуация. В настоящее время характерна даже для ПК, т.е. самых распространенных и недорогих машин.

Для ситуаций 2 и 3 имеется достаточно много эффективных методов распределения памяти.