Учебное пособие: Адресное пространство. Подсистемы ввода-вывода
Все логическое адресное пространство делится на страницы фиксированного размера. Все физическое адресное пространство делится на страницы того же размера.
УПА = Устройство Преобразования Адреса. УПА может добавлять к смещению произвольный базовый адрес страницы.
Таблицу страниц можно (и нужно) вынести за пределы ЦП.
В таком случае получаем диспетчер памяти (ДП) вместо УПА.
Сегментная организация памяти
Нужно частично размещать программу в памяти (?) – существуют два метода: страничный и сегментный метод организации памяти.
Вся память делится на сегменты произвольной длины. Каждый сегмент характеризуется базовым адресом и смещением.
Надо выделять физическую память сегменту (половинке – нельзя (?)).
УПА преобразует логический адрес в физический:
В Intel-процессорах имеется набор базовых регистров – CS, DS, SS, ES, GS, FS.
Для идентификации сегментов используются не их логические адреса, а их логические номера.
Дескрипторная таблица (ДТ)
Дескриптор: адресная часть (содержит базовый адрес сегмента в физической памяти) и дескрипторная часть (?) (содержит сведения о защите + длину + бит присутствия).
ДТ находится в оперативной памяти.
При обращении к байту каждый раз производится преобразование адреса + контроль выхода за границу сегмента + права доступа. Т.е., чтобы прочитать байт, нужно два обращения к памяти – так нельзя, нужно кэшировать дескрипторы!
Дескриптор загружается в скрытую часть сегментного регистра каждый раз, когда в сегментный регистр загружается нами номер сегмента. Далее - проверка выхода и прав доступа. В разных режимах работы ЦП используется один режим адресации. Скрытые части базовых сегментных регистров фактически выполняют функцию кэшей!
Недостатком данного метода является переменная длина сегментов, трудно организовать загрузку/выгрузку сегментов. Возникает фрагментация памяти.
Страничная организация памяти
Если все блоки (которые меняются) имеют один и тот же размер, исчезает фрагментация 1-го уровня. (Однако есть фрагментация 2-го уровня – блоки одного сегмента «разбегаются» по памяти).
Это и есть механизм страничной организации памяти.
ЛАП и ФАП делится на страницы фиксированного размера.
ТСП (таблица страничного преобразования) – это вектор, содержащий дескрипторы для страниц. Тут должны быть описаны все страницы ЛАП-ва. В дескрипторе страниц есть бит присутствия (есть ли страница в памяти или она на диске).
Если происходит обращение к странице, отсутствующей в памяти происходит страничное прерывание.
Существует два типа исключений: прерывание и ловушка.