ПОД (пособие) (1184372), страница 11
Текст из файла (страница 11)
Страницы переписываются из внешней памяти в первичнуюи размещаются в ней в блоках, называемых страничными кадрами и имеющих точно такойже размер, как поступающие страницы. Страничные кадры начинаются с адресовпервичной памяти, кратных фиксированному размеру страницы (рис. 8.9). Поступающаястраница может быть помещена в любой свободный страничный кадр.Динамическое преобразование адресов в системе со страничной организациейосуществляется следующим образом. Выполняющийся процесс обращается по адресувиртуальной памяти V=(p, d).
Механизм отображения страниц, показанный на рис. 8.10,ищет номер страницы p в таблице отображения страниц и определяет, что эта страницанаходится в страничном кадре p'. Адрес реальной памяти формируется затем путемконкатенации p' и d.Рассмотрим теперь этот процесс более подробно. В частности, поскольку обычно не всестраницы процесса находятся в первичной памяти одновременно, таблица отображениястраниц должна указывать, есть ли адресуемая страница в первичной памяти, и если есть, тогде именно, а если нет, то в каком месте внешней памяти ее можно найти. На рис. 8.11показана типичная строка таблицы отображения страниц. Бит-признак присутствиястраницы r устанавливается в 0, если данной страницы в первичной памяти нет, и в 1, еслиэта страница есть в первичной памяти.
Если страницы нет, to s — ее адрес во внешнейпамяти. Если страница есть в первичной памяти, то p' — номер ее страничного кадра.Отметим, что p' — это не действительный адрес первичной памяти. Адрес первичнойпамяти а, с которого начинается страничный кадр p' (если размер страницы равняется p),определяется произведениема=(p)(p') (если страничные кадры имеют номера 0, 1, 2 и т. д.).В целях экономии емкости первичной памяти в таблицу отображения страниц можно невключать адреса страниц во внешней памяти.В этом и нескольких следующих разделах мы рассмотрим несколько способовпреобразования адресов страниц. Рассмотрим вначале прямое отображение, котороеиллюстрирует рис. 8.12.Выполняющийся процесс делает ссылку по виртуальному адресу V=(p, d).
Прежде чемпроцесс начнет выполняться, операционная система загружает адрес первичной памяти длятаблицы отображения страниц в регистр начального адреса этой таблицы. Этот базовыйадрес b таблицы прибавляется к номеру страницы p, образуя адрес первичной памяти b+pдля строки страницы p в таблице. В этой строке указано, что виртуальной странице pсоответствует страничный кадр p'. Затем к значению p' приформировывается (путемконкатенации) смещение d, так что образуется реальный адрес r. Такой подход называетсяспособом прямого отображения потому, что таблица отображения страниц содержитотдельную строку для каждой страницы виртуальной памяти данного процесса.
Еслипроцесс имеет в виртуальной памяти n страниц, то таблица при прямом отображении дляэтого процесса содержит последовательные строки для страницы 0, страницы 1, страницы 2,..., страницы n—1.Как преобразуемый виртуальный адрес, так и базовый адрес таблицы отображения страницхранятся в высокоскоростных регистрах управляющего процессора, так что операции с ихучастием можно выполнять очень быстро внутри командного цикла. Однако таблицапрямого отображения страниц, которая может быть довольно большой, обычно находится впервичной памяти. Следовательно, для обращения к этой таблице требуется один полный34цикл выборки из первичной памяти. Поскольку время выборки из первичной памятисоставляет, как правило, наибольшую долю цикла выполнения команды и поскольку намтребуется еще один цикл обращения к первичной памяти для выборки соответствующейстроки таблицы, это означает, что использование метода прямого отображения дляпреобразования адресов страниц может вызвать снижение скорости вычислительноймашины при выполнении программ почти вдвое! Это, естественно, недопустимо.
Поэтомунеобходимы более высокоскоростные способы преобразования адресов. В то же время этоне означает, что способ прямого отображения совершенно неприемлем, напримернекоторые системы с успехом его реализуют, размещая целиком всю таблицу всверхвысокоскоростной кэш-памяти.8.7 Сегментная организацияВ главе, посвященной реальной памяти, мы говорили о том, что в системахмультипрограммирования с переменными разделами размещение программ в памяти чащевсего осуществляется в соответствии с выбором «первого подходящего», «наиболееподходящего» или «наименее подходящего» по размеру свободного участка памяти.Однако мы все же были ограничены необходимостью выполнять программы в одном блокесмежных ячеек реальной памяти.В системах с сегментной организацией (сегментацией) это ограничение снимается, ипрограмма (и ее данные) может занимать много отдельных блоков первичной памяти (рис.8.16).
Сами блоки не обязательно одинакового размера, все же должны состоять изсмежных ячеек, однако отдельные блоки могут размещаться и не рядом друг с другом.При таком подходе возникает несколько интересных проблем. Например, гораздо болеесложной теперь становится проблема защиты программы каждого пользователя отнесанкционированного доступа со стороны других пользователей. Парой граничныхрегистров здесь больше не обойтись.
Аналогично становится гораздо труднее ограничиватьдопустимую область доступа для любой конкретной программы. Один из способовреализации защиты памяти в системах с сегментной организацией — это использованиеключей защиты, как показано на рис. 8.17.Рис. 8.17 Защита памяти при помощи ключей в мультипрограммных системах сраспределением памяти несмежными блоками. Когда в ЦП для ключа защиты памятиустанавливается значение 2, соответствующее пользователю В, программа этогопользователя может обращаться только к тем блокам памяти, которые имеют именно этотключ защиты (2).
Управление ключами защиты осуществляет только операционнаясистема.Виртуальный адрес в сегментной системе — это упорядоченная пара V=(s, d), где s —номер сегмента виртуальной памяти, a d — смещение в рамках этого сегмента, гденаходится адресуемый элемент (рис. 8.18). Процесс может выполняться только в случае,если его текущий сегмент (как минимум) размещается в первичной памяти. Сегментыпередаются из внешней памяти в первичную целиком. Все ячейки, относящиеся к сегменту,занимают смежные адреса первичной памяти.
Поступающий из внешней памяти сегментможетНомер сегмента sСмещение dВиртуальный адрес V=(s,d)быть помещен в любой достаточно большой по размеру свободный блок смежных ячеекпервичной памяти. Стратегии размещения при сегментации идентичны стратегиям,35применяемым при мультипрограммировании с переменными разделами, причем наиболеечасто используются принципы «первый подходящий» и «наиболее подходящий».Динамическое преобразование адресов осуществляется следующим образом (рис. 8.19).Выполняющийся процесс выдает адрес виртуальной памяти V=(s, d).
Механизмотображения сегментов ищет сегмент s в таблице сегментов и определяет, что этот сегментнаходится в реальной памяти, начиная с ячейки s'. Адрес реальной памяти,соответствующий виртуальному адресу V=(s, d), формируется затем путем добавления s' кd. Более подробно эту процедуру мы рассмотрим в нескольких следующих разделах.8.7.1 Управление доступом в системах с сегментной организациейПредоставлять каждому процессу неограниченный доступ к любому сегменту в системенецелесообразно. В действительности одним из достоинств сегментных систем являетсяименно возможность четкого управления доступом. Для этого каждому процессупредоставляются определенные права доступа к каждому сегменту и фактически полностьюзапрещается доступ ко многим сегментам.8.8 Системы с комбинированной странично-сегментной организациейИ сегментная, и страничная организации имеют важные достоинства как способыпостроения виртуальной памяти.
Начиная с систем середины 60-х годов, в частности синформационно-вычислительной системы с разделением времени Multics и системыразделения времени TSS корпорации IBM, во многих вычислительных машинахприменяется комбинированная странично-сегментная организация памяти (Da68, De71,Do76). Эти системы обладают достоинствами обоих способов реализации виртуальнойпамяти. Сегменты обычно содержат целое число страниц, причем не обязательно, чтобы всестраницы сегмента находились в первичной памяти одновременно, а смежные страницывиртуальной памяти не обязательно должны оказываться смежными в реальной памяти.