81
Рисунок 2.10 - Адресация программы с помощью страниц
Основная проблема адресации с помощью страниц - большой размер таблиц адресации, которые должны храниться в ОЗУ.
Чтобы частично устранить эту проблему, стали использовать двухуровневую схему страничной адресации, ставшую основой адресации 32-битных ЭВМ:
•в ОЗУ постоянно находится только корневая таблица страниц, содержащая не более 1024 записи;
•когда программа загружается на выполнение, в корневую таблицу страниц заностися запись о местоположении и числе требуемых ей страниц;
•внутри самой программы, создается своя собственная таблица, которая
заполняется во время загрузки программы и удаляется после ее завершения. Общая схема такого взаимодействия показана на рисунке 2.11.
Другая проблема, с которой сталкиется страничный способ адресации — значительные затраты времени, связанные с поиском информации о странице в больших таблицах страниц.
Чтобы разрешить эту проблему, стали использовать таблицу быстрой транс-ляции адресов или — буфер TLB.
TLB — Translation Lookaside Buffer - ассоциативная кэш-память, в которую записывается реально используемая страница, перед тем как команды и данные будет использовать сам процессор.
82
Рисунок 2.11 - Двухуровневая схема страничной адресации Алгоритм использования TLB — прост:
•когда процессор обращается к странице и ее она присутствует в TLB, то используется команды и данные, считанные из нее;
•когда процессор обращается к странице и она отсутствует в TLB, возникает прерывание к соответствующей программе ядра ОС;
•обработка прерываний осуществляется «Подсистемой управления памятью ОС», которая производит поиск нужной страницы в ОЗУ или на внешнем носителе, решает вопрос об удалении ненужной страницы и записи нужной, перезапускает команду процессора, вызвавшую прерывание по отсутствию страницы в TLB.
На рисунке 2.12 показана схема адресации страниц с использованием TLB.
Замечание
К сожалению, проблема управления страницами не решается так просто, например, для 64-разрядных ЭВМ создание таблицы страниц становится не реализуемым.
Чтобы теоретически закрыть изучаемую тему, рассмотрим комбинированный способ адресации.
83
Рисунок 2.12 — Схема адресации страниц с использованием TLB
Преимущества адресации имеются у каждого способа:
•сегментная адресация памяти — требует относительно малое число записей в таблице сегментов.
•страничная адресация памяти — устраняет проблемы фрагментации, пос-
кольку ОЗУ адресуется с помощью произвольного доступа, следовательно, свободную страницу ОЗУ можно найти в любом месте памяти.
Отсюда возникает идея смешанной (комбинированной) адресации, которая состоит в том, что:
•отдельная программа (процесс) отображается в виде нескольких записей в общей таблице сегментов;
•кажный сегмент, выделенный программе, отображается внутри нее в виде одной или нескольких таблиц страниц.
Общая схема такой адресации приведена на рисунке 2.13.
Таким образом, сегментно-страничная адресация памяти похожа на подобную двухуровневую страничную адресацию.
84
Рисунок 2.13 — Схема сегментно-страничной адресации памяти
При этом:
•существенно уменьшается размер корневой таблицы, постоянно хранящейся в ОЗУ и как следствие ускоряется поиск в ней нужной страницы;
•трехкомпонентная адресация (номер сегмента, номер страницы, смещение) требует аппаратной поддержки виртуализации памяти с помощью MMU, без которой она становится не эффективной;
•появляется возможность оптимизации схем адресации на базе учета разных свойств разных сегментов программы; например, сегменты кода предназначены только для чтения.
Вобщем случае, применяемая схема адресации ОЗУ зависит не только от конструктивных возможностей физической памяти или аппаратной поддержки вируализации памяти с помощью устройств MMU, но и от конструктивных особенностей самого процессора.
На рисунке 2.14 показан пример такой зависимости, который стал поддерживаться процессорами компании Intel, начиная с архитектуры i386.
Здесь выделяются:
•глобальная таблица дескрипторов (GDT), на которую должен указывать специальный регистр процессора — GDTR;
•локальные таблицы дескрипторов (LDT), на которые должен указывать специальный регистр процессора — LDTR.
85
Рисунок 2.14 - Адресация памяти MS Windows на архитектуре i386
Глобальная дескрипторная таблица является единственной и контролизуется ядром ОС, адресуя сегменты процесса и значения регистра LDTR.
Локальные дескрипторные таблицы связаны с конкретными испольняемыми процессами и формируются при их запуске.
Указанная схема адресации, широко используется в ОС MS Windows, по крайней мере, начиная с Windows 2000, выполненной по технологии NT.
Замечание
В качестве указателей на GDT и LDT, используются 16-разрядные слова, в которых младшие три бита имеют специальное значение:
•0-й и 1-й биты — уровень защиты (уровень привилегий) работающей задачи;
•2-й бит используется для различения GDT и LDT.
Подводя итог изложенному в данном разделе учебному материалу, следует понимать, что ОС «скрывает» от процессов детали способов адресации памяти, возлагая реализацию ее распределения на «Подсистему управления памятью».