Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ZH ос 20 вопр 36 стр.doc
Скачиваний:
11
Добавлен:
20.09.2019
Размер:
435.71 Кб
Скачать
  1. Средства аппаратной поддержки управления памятью в микропроцессорах Intel.

Основная задача – преобразование логического (линейного) адреса в физический.

1. DOS. Логический адрес состоит из двух составляющих: из 16-разрядного сегмента и 16-разрядного смещения.

сегмент

смещение

:

В процессоре 8086 20-разрядный адрес. Получение физического адреса: сегментная составляющая сдвигается на 4 разряда влево (это равносильно умножению на 16). К смещению слева добавляется 0000 и затем числа складываются.

сегмент 0000

0000 Смещение

Таким образом, можно адресовать в DOS FFFF:FFFF или 1Мб + 64Кб – 16.

Только с появлением 80286 появилась возможность работы с верхней памятью (HMA). В DOS вся память делится на смежные блоки. Каждый блок начинается с 16-байтного заголовка. В заголовке указывается размер каждого блока в параграфах и имя программы, которая является владельцем этого блока. Если в качестве имени указана SC значит это системный код, если SD, то системные данные. Как правило SD является первым блоком в MCB. Первый байт каждого заголовка подблока начинается с символа, который определяет тип системных данных.

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

Работает в защищенном режиме процессора. Применяется, начиная с 80286. Процесс преобразования адреса состоит из двух этапов.

1) преобразование логического адреса в линейный

2) преобразование линейного адреса в физический

В некоторых случаях второй этап может отсутствовать. Также как и в режиме DOS логический адрес состоит из двух составляющих:

селектор

смещение

:

Размер селектора составляет 16 разрядов. В защищенном режиме все блоки памяти перечислены в таблице GDT (Global Description Table) /LDT (Local Description Table).

Дескрипторная таблица содержит адреса блоков памяти. С помощью селектора определяется тип таблицы и смещение в таблице. По смещению находится адрес начала блока памяти. Начальный адрес складывается со смещением и получается реальный адрес.

Достоинства сегментной организации очевидны – адресация пространства до 4 Гб.

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

Память процессора разбивается на страницы, размер которых зависит от типа процессора (обычно 4 - 8 Кб).

1) С помощью сегментной организации из логического адреса формируется линейный. Начиная с Windows 95 используется плоская модель памяти FLAT. Согласно этой модели содержимое селектора равно нулю.

селектор

смещение

:

16 разрядов 32 разряда

В Windows 3.x использовалась FLAT только для организации драйверов.

2) Преобразование линейного адреса в физический. Вся память разбита на страницы.

Каждый процесс имеет свой каталог страниц. Как только процесс (программа) загружается на выполнение в системный регистр CR3 записывается адрес каталога страниц. Индекс каталога страниц требуется для получения физического адреса таблицы страниц. Затем по индексу таблицы страниц определяется требуемая страница.

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

  1. Архитектура памяти в Win32. Виртуальное адресное пространство. Регионы в адресном пространстве. Передача физической памяти региону.

Виртуальная память – это совокупность программно-аппаратных средств, позволяющая пользователю составлять программы, размер которых превосходит имеющийся размер ОЗУ.

Задачи ВП:

  • Размещает данные в ЗУ разного типа(ОЗУ, НЖМД)

  • Перемещает данные между устройствами разного типа.

  • Преобразует виртуальный (линейный) адрес в физический.

Все эти действия используются без участия программиста.

Разделы 1 и 3 предназначены для выявления указателей с неправильным значением. При выявлении неправильного значения ОС генерирует нарушение доступа. Эти разделы "охраняют" разделы 2 и 4.

Раздел 2 - область размером 2 Гб-128 Кб. Это личное адресное пространство конкретного процесса, доступно только данному процессу. В этой же области находятся все системные библиотеки пользовательского режима kernel32.dll и user32.dll. Раздел 4. В него загружаются ядро Windows NT и драйверы устройств. Этот раздел полностью защищен и по чтению, и по записи.

Регионы в адресном пространстве.

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

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

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

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

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

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

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

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

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

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