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

При страничном подходе программа разбивается на одинаковые фрагменты за исключением, возможно, последнего. Для размещения фрагментов программы создаются одинаковые единицы памяти – страницы. Программа разбивается на виртуальные страницы, а память – на физические. Часть виртуальных страниц размещается в ОП, часть – во внешней памяти. Последние составляют страничный файл или файл подкачки. Размер страницы обычно кратен степени два (4К = 212). Полный адрес определяется суммой адреса страницы (P) и адреса ячейки(i).

Для отображения виртуального адреса на физическую память для каждой задачи нужно иметь таблицу страниц. Описание страниц производится созданием дескриптора страницы. Он отличается от дескриптора сегмента отсутствием поля «длина» (причина понятна, т.к. все страницы нормированы, имеют одинаковую длину). Идентификатором виртуальной страницы является её номер в таблице дескрипторов. Местонахождение страницы в физическом адресном пространстве, как и ранее, определяется «битом присутствия». Механизм трансляции виртуального адресного пространства на физическую память иллюстрируется рисунком 2.3.15.

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

Рисунок 2.3.15 – Механизм страничного распределения памяти

При различии фактического уровня доступа с разрешённым происходит прерывание программы по защите памяти. При обращении к странице, расположенной во внешней памяти, возникает прерывание, управление передаётся диспетчеру памяти, который производит поиск свободного физического пространства памяти. При его отсутствии, по одному из алгоритмов замещения (FIFO, LRU, LFU, Random) определяется освобождаемая страница, на место которой будет размещена вызываемая.

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

Наиболее эффективной дисциплиной замещения страниц считается LRU, т.е. удаление страницы, неиспользуемой дольше других по длительности (OS/2, Linux). В ОС Windows NT используется FIFO.

Основным достоинством страничного подхода распределения памяти является практическое отсутствие фрагментации: на каждую задачу может приходиться не больше одной незаполненной страницы (которая является последней): ~4К при объемах памяти в единицах Гигабайт.

Недостатками этого способа являются:l

− увеличение сложности алгоритмов и вычислительных ресурсов − таблицы страниц нужно также размещать в памяти и обрабатывать их;

− разбивка программы на страницы производится без учёта логической взаимосвязи элементов кода, и тогда межстраничные переходы могут возникать чаще, чем межсегментные.

Второй недостаток устраняется использованием сегментно-страничного способа размещения памяти (при увеличении требований к вычислительным ресурсам).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: