Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У. Столлингс ГЛАВА 8 Виртуальная память.doc
Скачиваний:
40
Добавлен:
11.05.2015
Размер:
811.52 Кб
Скачать

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

8.1. Аппаратное обеспечение и управляющие структуры

8.2. Программное обеспечение операционной системы

8.3. Управление памятью в UNIX и Solaris

8.4. Управление памятью в Linux

8.5. Управление памятью в Windows 2000

8.6. Резюме, ключевые термины и контрольные вопросы

8.7. Рекомендуемая литература

8.8. Задачи

Приложение. Хеш-таблицы

В главе 7, "Управление памятью", вы познакомились с концепциями странной организации памяти и сегментации и анализом их недостатков. Теперь мы перейдем к обсуждению виртуальной памяти. Трудность изучения этой темы заключается в том, что управление памятью представляет собой сложную связь между аппаратным обеспечением (процессором) и программным обеспечением операционной системы. Сперва мы остановимся на рассмотрении аппаратного аспекта виртуальной памяти, познакомимся с использованием страничной организации, сегментации и их комбинации, а затем обратимся к вопросам, возникающим при разработке средств виртуальной памяти в операционных системах.

8.1. Аппаратное обеспечение, управляющее структурой

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

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

2. Процесс может быть разбит на ряд частей (страниц или сегментов), которые не обязательно должны располагаться в основной памяти единым непре­рывным блоком. Это обеспечивается за счет динамической трансляции ад­ресов и использования таблицы страниц или сегментов.

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

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

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