В. Столлингс - Операционные системы (1114679), страница 74
Текст из файла (страница 74)
В.1. Использование страниц паняти типичныя процессом Таким образом, наличие принципа локализации позволяет надеяться на з,рфективность работы виртуальной памяти. Для этого требуется, чтобы, вопсрвых, имелась аппаратная поддержка страничной организации и/или сегментации, а во-вторых, операционная система должна включать программное обеспечение для управления перемещением страниц и/или сегментов между вторичной и основной памятью. В этом разделе мы рассмотрим аппаратный аспект проблемы и познакомимся с необходимыми управляющими структурами, создаваемыми и поддерживаемыми операционной системой, но используемыми аппаратным обеспечением; вопросы же работы операционной системы будут рассмотрены в следующем разделе. Термин виртуальная память обычно ассоциируется с системами, использующими страничную организацию, хотя используется и виртуальная память на основе сегментации (которую мы рассмотрим чуть позже).
Впервые сообщение о виртуальной памяти на основе страничной организации появилось и работе ~КП.В62), и вскоре после этого виртуальная память стала широко использоваться в коммерческих системах. Прн рассмотрении простой страничной организации мы указывали, что каждый процесс имеет свою собственную таблицу страниц, которая создается при загрузке всех страниц процесса в основную память.
Каждая запись в таблице страниц содержит номер кадра соответствующей страницы в памяти. Такая же таблица страниц, связанная с каждым из процессов, требуется и при организации виртуальной памяти на базе страничной организации — однако в этом случае структура записей таблицы становится несколько более сложной ~рис. 8.2„а).
Поскольку в основной памяти могут находиться только некоторые из страниц процесса, в каждой записи таблицы должен иметься бпт Р, указывающий на присутствие соответствующей страницы в основной памяти. Если данная страница располагается в основной памяти„то в записи таблицы содержится номер ее кадра.
Другим управляющим битом в записи таблицы страниц является бит моди+идификации — М, который указывает, было ли изменено содержимое данной ст траницы со времени последней загрузки в основную память. Если изменений не не было, то когда наступит время замены страницы в занимаемом ею в данный -ный момент кадре, записывать эту страницу на диск не следует, так как диске уже имеется ее точная копия. В записи таблицы страниц могут быть и другие управляющие биты, например, служащие для целей защиты или совм овместного использования памяти на уровне страниц.
Виртуальный адрес ,и Номер страницы Смещение Запись таблицы страниц Номер кадра валяю не биты а) Страничная ор анизация Виртуальный адрес Номер сегмента Запись таблицы сегментов б) Сегментация Виртуальный адрес Номер страницы Смещение Запись таблицы сегментов Запись таблицы страниц Р— бит присутствия,,':,~~ М вЂ” бит модификациФет, в) Комбинированиестраничной организации и сегментации Основная память ,. лана 8. Виртуальная память зь 'Часть 3.' Другие управляющие биты Длина Начальный адрес сегмента управляющие биты Длина Начальный адрес сегмента Рис.
8.2. Типичные сборматьт систем управления памятью Структура таблицы страниц Базовый механизм чтения слова из памяти включает в себя траи туального, или логического, адреса, состоящего из номера страницЫ зб1 тия, в физический адрес, который представляет собой номер кадра и , с использованием таблицы страниц. Поскольку таблица страниц енную длину, зависящую от размера процесса, разместить ее в реги дставляется возможным, и таблица страниц должна располагаться в : памяти.
На рис. 3.3 показана аппаратная реализация этого механизмтвтз юлнении некоторого процесса стартовый адрес его таблицы страниц хра „ егистре, а номер страницы из виртуального адреса используется в , ч ,екса элемента, в котором ищется соответствующий номер кадра- ЗатеЖ'". 1ер объединяется со смещением из виртуального адреса для получения ',, о физического адреса интересующей нас ячейки памяти. ,' 'е Б большинстве систем для каждого процесса имеется одна таблица 1ако каждый процесс может использовать большой объем виртуальной Зт , например, в архитектуре тгАХ каждый процесс может иметь до 2 виртуальной памяти.
При использовании страниц размером 2' = 512 байт оказывает„, что нам требуется до 2 ' записей в таблице страниц для каждого процесса. Понятно, что количество памяти, отводимое таблицам страниц, не может быть так велико. Для преодоления этой проблемы болыпинство схем виртуальной памяти храцят таблицы страниц не в реальной, а в виртуальной памяти.
Это означает, что сами ,аблттЦЫ СтраНиц СтаНовятсЯ объектами страничной организации„как и любые другтте страницы. При. работе процесса как минимум часть его таблицы страниц должна асполагаться в основной памяти, в том числе запись о странице, выполняющейся в „астоящий момент.
Некоторые процессоры используют двухуровневую схему для больших таблиц страниц. При такой схеме имеется каталог таблиц странтщ„в котором каждая зались указывает на таблицу страниц. Таким образом, если размер каталога — Х, а максимальный размер таблицы страниц — У, то процесс может состоять максимум из Х х У страниц.
Обычно максимальный размер таблицы страниц определяется условием ее размещения в одной сгранице (такой подход используется, например, в процессоре Реп$1ттпт). в а Механизм страниц в рис.,8.З. Трансляция адреса в системе со страничной организациеи рис.
3.4 приведен пример двухуровневой схемы, типичной для 32- битовой ой адресации. Принимая условие адресации байтов и 4-Кбайтовые (2 ) 12 раницы, мы получим 4-Гбайтовое (2'") виртуальное адресное пространство, составленн енное из 2 страниц. Если каждая из этих страниц отображается посредстВоьт о но* дной 4-байтовой записи в таблице страниц, то мы можем создать пользователь, зо куто таблицу страниц, состоящую из 2 записей, общим объемом 4 Мбайт 10 аит). Такая огромная таблица может быть размещена в 2 страницах виртуал ьн 2'о ной памяти, которые отображаются корневой таблицей страниц, состоящей записей, которые занимают 4 Кбайт (2'з байт) основной памяти.
На ьзонательсюя ница страниц (байт) Инаар™роааннаатабпица страниц ъзоеатапьсгоа всноа страниц()024 записи 1 Программа ° Рис. 8,5. Трансляция Часть 3.".. :; лава 8. Виртуальная память с, 8.5 показаны действиЯ, выполнвемые пРи тРанслЯции аДРеса в ДвУх з системе. Корневая страница всегда остается в основной памяти. Пер г виртуального адреса используются для индексации в корневой табл иска записи о странице пользовательской таблицы. Если нужная страна)ф~-': гствует в основной памяти, генерируется ошибка доступа к странице. збходимая страница находится в основной памяти, то следующие 10 б ,льного адреса используются как индекс для поиска записи о странице, а~" оцю ссылается исходный виртуальный адрес.
Ф наеап таблица ' иц(4 Кбайт) странстао(8 Гбайт) Рис, 8.4. Двухуровневая иерархическая таблица страниц (7АСО88а~ (!024записи) е ''(Ф механизм страниц е Осноенае пам!пъ~' е адреса в системе с двухуровневой страничной органиэ, „ Рус. 8.6. Структура инвертированной таблицат страниц Еще одним подходом к использованию одно- или двухуровневых таблиц страниц является применение инвертированной таблицы страниц (тп~егФет) раде 1аЫе), представленной на рис. 8.6. Зтот подход применяется на машинах Роччег РС и 1ВМ АБ/400. Зтот же подход использован и в операционной системе Мас)т на ВТ-РС.
Нртч таком подходе часть виртуального адреса, представлятощая собой номер страницы, отображается в хеш-таблицу с использованием простой функции хеширования.' Хеш-таблица содержит указатель на инвертированную таблицу страниц. Каждой странице реальной памяти при этом соответствует одна зались в хештаблице и инвертированной таблице страниц, Таким образом, для хранения таблиц требуется фиксированная часть основной памяти, независимо от размера и количества процессов и поддерживаемых виртуальных страниц. Поскольку на одну и ту же запттсь хеш-таблицы могут отображаться несколько виртуальных адресов, для обратив переполнения используется технология цепочек (которые на практике обычно достаточно коротки — как правило, от одной до двух записей). Буфер поиска трансляции В принципе каждый виртуальный адрес вызывает обращение к двум физиче к, -ким адресам: одно для выборки соответствующей записи из таблицы страниц и ще одно — для обращения к адресуемым данным. Следовательно, простая схем ма виртуальной памяти, по сути, удваивает время обращения к памяти.
Для "рео Реодоления этой проблемы большинство реально использующихся схем виртуально ной памяти использует специальный высокоскоростной кэш для записей таб- 1 Вопросы хетиирования будут затронутат в приложении к данной главе. виртуальный ад>ес Номер страницы Смещение 5 502 альнын адрес р цы Смещение Номер Записи аницы таблицы аниц Номер Реальный ' еальный адрес Реальный айрес а) Прямое отображение б) Ассоциатианое отображение аа. йзир у ь Часть 3.: а наряду с полной инФормацией из записи таблицы страниц включать: страницы.
Процессор аппаратно способен одновременно опрашивать рядт ,В для определения того, какая из них соответствует заданному номеру, Такая методика известна как ассоциативное отображение ( ит), в отличие от прямого отображения, или индексирования, приме иска в таблтще страниц, как показано на рис. 8.9. Конструкция ТЬВ предусматривать способ организации записей в кэше и принятия акая из старых записей должна быть удалена при внесении в кэш новой': ' рочем, этим вопросам следует уделять внимание при разработке любо о кэша. Однако они не входят в круг вопросов„рассматриваемых в' заинтересованному читателю можно порекомендовать обратиться к с нной литературе на эту тему (например, (ВТАЬОО1). "ег 9.