Современные операционные системы

Современные операционные системы
Управление памятью  Виртуальная память

Виртуальная память

В то время как для создания абстракции адресного пространства могут быть использованы базовые и ограничительные регистры, нужно решить еще одну проблему: управление ресурсоемким программным обеспечением. Несмотря на быстрый рост объемов памяти, объемы, требующиеся программному обеспечению, растут намного быстрее. В 80-е годы многие университеты работали на машинах VAX, имеющих память объемом 4 Мбайт, под управлением систем с разделением времени, которые одновременно обслуживали с десяток (более или менее удовлетворенных) пользователей. Теперь корпорация Microsoft рекомендует использовать как минимум 512 Мбайт памяти для однопользовательской системы Vista, чтобы запускать простые приложения, и 1 Гбайт памяти, если вы собираетесь делать что-либо более существенное.

Виртуальная память читать полное описание.


Управление памятью  Страничная организация памяти

Страничная организация памяти

Большинство систем виртуальной памяти использует технологию под названием страничная организация памяти (paging), к описанию которой мы сейчас и приступим. На любом компьютере программы ссылаются на набор адресов памяти. Когда программа выполняет следующую команду

MOV REG.1000

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

Такие сгенерированные программным способом адреса называются виртуальными адресами, именно они и формируют виртуальное адресное пространство.

Страничная организация памяти читать полное описание.


Управление памятью  Внутреннее устройство диспетчера памяти

Внутреннее устройство диспетчера памяти

Теперь рассмотрим внутреннее устройство диспетчера памяти, чтобы понять, как он работает и почему мы выбрали размер страницы, кратный степени числа 2. На рис. 3.10 показан пример виртуального адреса 8196 (0010000000000100 в двоичной записи), отображенного с использованием карты диспетчера памяти с рис. 3.9. Входящий 16-разрядный виртуальный адрес делится на 4-битный номер страницы и 12-битное смещение. Выделяя 4 бита под номер страницы, мы можем иметь 16 страниц, а с 12 битами под смещение мы можем адресовать все 4096 байт внутри страницы.

Внутреннее устройство диспетчера памяти читать полное описание.


Управление памятью  Таблицы страниц

Таблицы страниц

При простой реализации отображение виртуальных адресов на физические может быть сведено к следующему: виртуальный адрес делится на номер виртуальной страницы (старшие биты) и смещение (младшие биты). К примеру, при 16-разрядной адресации и размере страниц в 4 Кбайт старшие 4 бита могут определять одну из 16 виртуальных страниц, а младшие 12 бит могут определять смещение в байтах (от 0 до 4095) внутри выбранной страницы. Но для страницы также можно выделить 3 или 5 или какое-нибудь другое количество битов. Различные варианты выделения подразумевают различные размеры страниц.

Таблицы страниц читать полное описание.


Управление памятью  Структура записи в таблице страниц

Структура записи в таблице страниц

Давайте перейдем от общего рассмотрения структуры таблицы страниц к подробностям отдельной записи в этой таблице. Точный формат записи сильно зависит от конструкции машины, но вид присутствующей в ней информации примерно одинаков для всех машин. На рис. 3.11 показан пример записи в таблице страниц. Размер варьируется от компьютера к компьютеру, но обычно он составляет 32 бита. Наиболее важным является поле номера страничного блока (Page frame number). В конечном счете цель страничного отображения и состоит в выдаче этого значения. Следующим по значимости является бит присутствия-отсутствия.

Структура записи в таблице страниц читать полное описание.