Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОС рулез.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
630.27 Кб
Скачать

Раздел 4. В него загружаются ядро Windows nt и драйверы устройств. Этот раздел полностью защищен и по чтению, и по записи. Регионы в адресном пространстве.

4 Гб адресное пространство выделяется процессу в момент создания и является практически свободным, незарезервированным. Для того, чтобы воспользоваться адресным пространством нужно выделить регион, обратившись к функции VirtualAlloc(...). Эта функция выделяет регион в адресном пространстве. Надо указать начальный адрес выделяемого региона и его размер. Для чего нужны регионы в адресном пространстве?

- чтобы разместить программный код

- чтобы разместить различные системные структуры

- чтобы разместить структуры данных загружаемого процесса и так далее.

При выделении регионов в ОС учитываются гранулярность выделения ресурсов, другими словами, начало региона должно быть выделено по определенной границе (64 Кб). При выделении региона размер региона всегда кратен размеру страницы. Например, мы запросили 10 Кб, но реально будет 12 Кб. Когда зарезервированный регион становится не нужем, его следует вернуть в общие ресурсы системы с помощью VirtualFree(...). Иногда ОС сама резервирует некоторые регионы адресного пространства в интересах конкретного процесса. Например, для хранения блока окружения процесса.

Лекция № 4

Блоки окружения присутствуют в DOS и Windows.

переменная1 = значение1 \0

.

.

.

переменнаяN = значениеN \0

\0 1\0\ полное имя файла.

PATH=C:\

FILES=

COMSPEC=C:\command.com

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

PSP

Программа

Каждый блок занимает два блока памяти.

Блок окружения

Кроме того для каждого потока создается блок окружения процесса и потока.

Передача физической памяти региону.

Чтобы получить возможность практического использования зарезервированного региона адресного пространства, необходимо выделить физическую область, а затем увязать ее с регионом. Физическая память всегда выделяется в страничном файле, а не в оперативной памяти, то есть загрузка страниц в ОЗУ - это функции ОС.

VirtualAlloc(..., Mem_Commit) - для выделения региона - это ключ. При передаче физической памяти региону, не обязательно отводить её целому региону. Например, регион 64 Кб можно зарезервировать, а память передать только 2 и 4 странице. Например:

128

200

250

200250128=...

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

Механизм выделения страниц физической памяти.

Генерируется нарушение доступа

Данные загружаются из СФ в ОЗУ

Поиск выгружаемой страницы

Запись страницы в СФ

нет

да

нет

да

нет

да

нет

да

СФ – страничный файл.

Если данные в страничном файле есть. LIFO.

LRU - менеджер виртуальной памяти отмечает и выгружается та страница, к которой наиболее длительное время не было обращения. В основном используется именно этот алгоритм. Каждый процесс может заблокировать страницу в оперативной памяти. Для блокирования страниц используется функция VirtualLock(...). Причем, для того, чтобы какой-либо процесс не приобрел приоритет количество страниц ограничивается тридцати двумя. Блокировка действует только на время работы данного процесса.