Страничный механизм
При реализации виртуальной памяти, основанной только на сегментации весь сегмент целиком может либо присутствовать в оперативной памяти либо отсутствовать (точнее, находиться во вторичной памяти или в испол няемом файле процесса). Поскольку размер сегмента может быть доста точно велик, одновременное выполнение нескольких больших процесса вызовет серьезную конкуренцию за ресурсы памяти, что в свою очередь приведет к интенсивному обмену данными между оперативной и вторич ной памятью. К тому же обмен областями переменного размера, каковым являются сегменты, достаточно сложен и, хотя фрагментация памяти пpи этом будет невелика, приведет к низкой эффективности ее использования оставляя большое количество неиспользуемого пространства.
Страничный механизм обеспечивает гораздо большую гибкость.
В этом случае все виртуальное адресное пространство (4 Гбайт для процессоров Intel) разделено на блоки одинакового размера, называемые страницами.
Большинство процессоров Intel работает со страницами размером 4 Кбайт.
страница может либо присутствовать в ОП, либо находиться в области свопинга или исполняемом файле процесса.
Основное преимущество такой схемы заключается в том что система управления памятью оперирует областями достаточно малого размера для обеспечения эффективного распределения ресурсов памяти между процессами.
Страничный механизм допускает, чтобы часть сегмента находилась в оперативной памяти, а часть отсутствовала. Это дает ядру возможность разместить в памяти только те страницы, которые в данное время используются процессом, тем самым значительно освобождая оперативную память.
Еще одним преимуществом является то, что страницы сегмента могут располагаться в физической памяти в произвольном месте и порядке что позволяет эффективно использовать свободное пространство.
При использовании страничного механизма линейный адрес, полученный в результате сложения базового адреса сегмента и смещения также является логическим адресом, который дополнительно обрабатывается блоком страничной трансляции процессора.
В этом случае линейный адрес рассматривается процессором как состоящий из трех частей, показанных на рис. 3.7.
Первое поле адреса, с 22 по 31 бит (10бит), указывает на элемент каталога таблиц страниц (Page Directory Entry, PDE). Каталог таблиц страниц имеет длину, равную одной странице, и содержит до 1024 указателей на таблицы страниц (page table). Таким образом, первое поле адресует определенную таблицу страниц. Второе поле, занимающее с 12 по 21 бит, указывает на элемент таблицы страниц (Page Table Entry, РТЕ).
Таблицы страниц также имеют длину 4 Кбайт, а элементы таблицы адресуют в совокупности 1024 страниц.
Другими словами, второе поле адресует определенную страницу.
Смещение на странице определяется третьим полем, занимающим младшие 12 бит линейного адреса. Таким образом, с помощью одного каталога таблиц процесс может адресовать 1024x1024x4096 = 4 Гбайт Физической памяти.
На рис. 3.7 показано, как блок страничной адресации процессора транслирует линейный адрес в физический.
Процессор использует поле PDE адреса (старшие 10 бит) в качестве индекса в каталоге таблиц. Найденный элемент содержит адрес таблицы страниц. Второе поле линейного адреса, РТЕ, позволяет процессору выбрать нужный элемент таблицы, адресующий физическую страницу. Складывая адрес начала страницы со смещением, хранящимся в третьем поле, процессор получает 32-битный физиче ский адрес3.
Каждый элемент таблицы страниц содержит несколько полей (табл. 3.2 описывающих различные характеристики страницы.
-
Таблица 3.2. Поля РТЕ
Р
Признак присутствия в оперативной памяти. Доступ к странице, отсутст вующей в памяти (Р=0) вызывает страничную ошибку, особую ситуацию о чем процессор информирует ядро, которое обрабатывает ее соответст вующим образом.
R/W
Права только на чтение страницы (R/W=0) или на чтение и запись (R/W=1).
U/S
Привилегии доступа. Если U/S = 0, только привилегированные задачи (ядро) имеют доступ к адресам страницы. В противном случае, доступ к странице имеют все задачи.
Адрес
Физический адрес начала страницы (адрес базы).