Комбинированная сегментно-страничная организация виртуальной памяти

И сегментная, и страничная организации имеют важные достоинства как способы построения виртуальной памяти. Для того чтобы воспользоваться преимуществами обеих систем организации виртуальной памяти, многие современные ОС используют комбинированную странично-сегментную организацию памяти. В таких системах сегменты обычно содержат целое число страниц, причем не обязательно, чтобы все страницы сегмента находились в первичной памяти одновременно, а смежные страницы виртуальной памяти не обязательно должны оказываться смежными в реальной памяти. В системе со странично-сегментной организацией применяется трехкомпонентная (трехмерная) адресация, т. е. адрес виртуальной памяти V определяется как упорядоченная тройка V=(s, p, d), где s - номер сегмента, р - номер страницы, ad- смещение в рамках страницы, по которому находится нужный элемент. Рассмотрим теперь динамическое преобразование виртуальных адресов в реальные в странично-сегментной системе с применением комбинированного ассоциативно-прямого отображения, как показано на рисунок9. Выполняющийся процесс делает ссылку по виртуальному адресу V=(s, p, d). Самые последние по времени обращения страницы имеют соответствующие строки в ассоциативной таблице. Система производит ассоциативный поиск, пытаясь найти строку с параметрами (s, p) в ассоциативной таблице. Если такая строка здесь обнаруживается, то адрес страничного кадра р', по которому эта страница размещается в первичной памяти, соединяется со смещением d, образуя реальный адрес R, соответствующий виртуальному адресу V, - и на этом преобразование адреса завершается.

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

Комбинированная сегментно-страничная организация виртуальной памяти - student2.ru Это делается следующим образом: базовый адрес а таблицы сегментов прибавляется к номеру сегмента s, так что образуется адрес a+s строки для сегмента s в таблице сегментов по первичной памяти. В этой строке указывается базовый адрес s' таблицы страниц для сегмента s. Номер страницы р прибавляется к s', так что образуется адрес p+s' строки в таблице страниц для страницы р сегмента s. Эта таблица позволяет установить, что виртуальной странице р соответствует номер кадра р'. Этот номер кадра соединяется со смещением d, так что образуется реальный адрес R, соответствующий виртуальному адресу V=(s, P, d).

Эта процедура преобразования адресов описана, конечно, в предположении, что каждый необходимый элемент информации находится именно там, где ему положено быть. Однако в процессе преобразования адресов существует много моментов, когда обстоятельства могут складываться не столь благоприятно. Просмотр таблицы сегментов может показать, что сегмента s в первичной памяти нет; при этом возникает прерывание по отсутствию сегмента, операционная система найдет нужный сегмент во внешней памяти, сформирует для него таблицу страниц и загрузит соответствующую страницу в первичную намять, быть может, вместо некоторой существующей страницы этого или какого-либо другого процесса. Когда сегмент находится в первичной Памяти, обращение к таблице страниц может показать, что нужной страницы в первичной памяти все же нет. При этом произойдет прерывание по отсутствию страницы, ОС возьмет управление на себя, найдет данную страницу во внешней памяти и загрузит ее в первичную память (быть может, снова с замещением другой страницы). Как и при чисто сегментной системе, адрес виртуальной памяти может выйти за рамки сегмента и произойдет прерывание по выходу за пределы сегмента. Или контроль по битам-признакам защиты может выявить, что операция, выполнение которой запрашивается по указанному виртуальному адресу, не разрешена, вследствие чего произойдет прерывание по защите сегмента. Операционная система должна предусматривать обработку всех этих ситуаций.

Ассоциативная память играет решающую роль в обеспечении эффективной работы механизма динамического преобразования адресов. При чисто прямом отображении типичное обращение к виртуальной памяти потребовало бы цикла памяти для доступа к таблице сегментов, второго цикла памяти для доступа к таблице страниц и третьего для доступа к нужному элементу в реальной памяти. Таким образом, реальное быстродействие вычислительной системы составило бы лишь приблизительно треть от номинального значения, а две трети затрачивалось бы на преобразование адресов! Интересно, что при всего лишь восьми или шестнадцати ассоциативных регистрах разработчики добиваются для многих систем показателей быстродействия, составляющих 90 и более процентов полных скоростных возможностей их процессоров.

Наши рекомендации