ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.12.2021

Просмотров: 5248

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

2 6 6

 Глава 5. Память

Рис. 5.32.

 Структура страничной таблицы и карты диска

рует сигнал страничного сбоя (page fault), и операционная система предпринима-
ет действия по загрузке страницы с диска в ОП, обращаясь для этого к карте
В карте указано, на какой дорожке и в каком секторе диска расположена каждая из
виртуальных страниц

1

. Загрузка страницы с диска в ОП сопровождается записью

в соответствующую строку страничной таблицы (указывается номер физической
страницы, куда была загружена виртуальная страница).

В принципе карта диска может быть совмещена со страничной таблицей путем

добавления к последней еще одного поля. Другим вариантом может быть увеличе-

ние разрядности поля номера физической страницы и хранение в нем номеров до-

рожек и секторов для виртуальных страниц, отсутствующих в основной памяти.

В этом случае вид хранимой информации будет определять признак V.

Признак использования страницы R

 устанавливается при обращении к данной

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

Поскольку в ОП находятся лишь копии страниц, а их оригиналы хранятся на

диске, необходимо обеспечить идентичность подлинников и копий. В ходе вычис-
лений содержимое отдельных страниц может изменяться, что фиксируется путем
установки в единицу

 признака модификации

 М. При удалении страницы из ОП

проверяется состояние признака М. Если М = 1, то перед удалением страницы из
основной памяти ее необходимо переписать на диск, а при М =О этого можно не

делать.

Признак прав доступа

 А служит целям защиты информации и определяет, ка-

кой вид доступа к странице разрешен: только для чтения, только для записи, для
чтения и для записи.

Когда программа загружается в ОП, она может быть направлена в любые сво-

бодные в данный момент страничные кадры, независимо от того, расположены ли
они подряд или нет. Страничная организация позволяет сократить объем пересы-

лок информации между внешней памятью и ОП, так как страницу не нужно загру-
жать до тех пор, пока она действительно не понадобится.

Способ реализации СТ жизненно важен для эффективности техники вирту-

альной адресации, поскольку каждое обращение к памяти предполагает обраще-

Множество страниц присутствующих в данный момент в основной памяти, является подмножеством

всех виртуальных страниц, хранящихся на магнитном диске.


background image

Понятие виртуальной памяти 267

ние к страничной таблице. Наиболее быстрый способ — хранение таблицы в спе-
циально выделенных для этого регистрах, но от него приходится отказываться при
большом объеме СТ. Остается практически один вариант — выделение странич-
ной таблице области основной памяти, несмотря на то что это приводит к двух-

кратному увеличению времени доступа к информации. Чтобы сократить это вре-
мя, в состав ВМ включают дополнительное ЗУ, называемое

 буфером быстрого

преобразования адреса

 (TLB — Translation Look-aside Buffer), или

 буфером ассо-

циативной трансляции,

 или

 буфером опережающей выборки

 и представляющее

собой кэш-память. При каждом преобразовании номера виртуальной страницы
в номер физической страницы результат заносится в TLB: номер физической стра-
ницы в память данных, а виртуальной — в память тегов. Таким образом, в TLB
попадают результаты нескольких последних операций трансляции адресов. При
каждом обращении к ОП преобразователь адресов сначала производит поиск в па-
мяти тегов TLB номера требуемой виртуальной страницы. При попадании адрес
соответствующей физической страницы берется из памяти данных TLB. Если
в TLB зафиксирован промах, то процедура преобразования адресов производится
с помощью страничной таблицы, после чего осуществляется запись новой пары
«номер виртуальной страницы — номер физический страницы» в TLB. Структура

TLB показана на рис. 5.33.

Рис. 5.33. Структура буфера быстрого преобразования адресов

Буфер преобразования адресов обычно реализуется в виде полностью ассоциа-

тивной или множественно-ассоциативной кэш-памяти с высокой степенью ассо-
циативности и временем доступа, сопоставимым с аналогичным показателем для
кэш-памяти первого уровня ( L1). Число входов у типовых TLB невелико (64-256).
Так, TLB микропроцессора Pentium III имеет 64 входа при размере страницы
4 Кбайт, что позволяет получить быстрый доступ к адресному пространству
в 256 Кбайт.

Серьезной проблемой в системе виртуальной памяти является большой объем

страничных таблиц, который пропорционален числу виртуальных страниц. Таб-
лица занимает значительную часть ОП, а на поиск уходит много времени, что край-
не нежелательно.

Один из способов сокращения длины таблиц основан на введении многоуровг

невой организации таблиц. В этом варианте информация оформляется в виде не-
скольких страничных таблиц сравнительно небольшого объема, которые образу-
ют второй уровень. Первый уровень представлен таблицей с каталогом, где указано
местоположение каждой из страничных таблиц (адрес начала таблицы в памяти)

второго уровня. Сначала в каталоге определяется расположение нужной странич-


background image

2 6 8 Глава 5. Память

ной таблицы и лишь затем производится обращение к нужной таблице. О достига-
емом эффекте можно судить из следующего примера. Пусть адресная шина ВМ
имеет ширину 32 бита, а размер страницы равен 4 Кбайт. Тогда количество вирту-

альных страниц, а следовательно, и число входов в единой страничной таблице
составит 2

20

. При двухуровневой организации можно обойтись одной страницей

первого уровня на 1024 (2

10

) входов и 1024 страничными таблицами на такое же

число входов.

Другой подход называют

 способом обращенных или инвертированных странич-

ных таблиц.

 Такую таблицу в каком-то смысле можно рассматривать как увели-

ченный эквивалент TLB, отличающийся тем, что она хранится в ОП и реализуется

не аппаратурой, а программными средствами. Число входов в таблицу определя-
ется емкостью ОП и равно -числу страниц, которое может быть размещено в основ-
ной памяти. Одновременно с этим имеется и традиционная СТ, но хранится она не
в ОП, а на диске. Для поиска нужной записи в инвертированной таблице исполь-

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

диске и после загрузки страницы в ОП корректируется и инвертированная таблица.

Сегментно-страничная организация памяти

При страничной организации предполагается, что виртуальная память — это не-
прерывный массив со сквозной нумерацией слов, что не всегда можно признать

оптимальным. Обычно программа состоит из нескольких частей — кодовой, ин-
формационной и стековой. Так как заранее неизвестны длины этих составляющих,
то удобно, чтобы при программировании каждая из них имела собственную нуме-
рацию слов, отсчитываемых с нуля. Для этого организуют систему

 сегментиро-

ванной памяти,

 выделяя в виртуальном пространстве независимые линейные

пространства переменной длины, называемые

 сегментами.

 Каждый сегмент пред-

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

деляется сегмент памяти. Виртуальный адрес определяется номером сегмента и ад-

ресом внутри сегмента. Для преобразования виртуального адреса в физический
используется специальная

 сегментная таблица.

Недостатком такого подхода является то, что неодинаковый размер сегментов

приводит к неэффективному использованию ОП. Так, если ОП заполнена, то при

замещении одного из сегментов требуется вытеснить такой, размер которого ра-

вен или больше размера нового. При многократном повторе подобных действий
в ОП остается множество свободных участков, недостаточных по размеру для за-
грузки полного сегмента. Решением проблемы служит

 сегментно-страничная орга-

низация памяти.

 В ней размер сегмента выбирается не произвольно, а задается

кратным размеру страницы. Сегмент может содержать то или иное, но обязатель-


background image

Понятие виртуальной памяти  2 6 9

но целое число страниц, даже если одна из страниц заполнена частично. Возника-
ет определенная иерархия в организации доступа к данным, состоящая из трех сту-
пеней: сегмент > страница > слово. Этой структуре соответствует иерархия таб-

лиц, служащих для перевода виртуальных адресов в физические. В сегментной
таблице программы перечисляются все сегменты данной программы с указанием
начальных адресов CT, относящихся к каждому сегменту. Количество странич-
ных таблиц равно числу сегментов и любая из них определяет расположение каж-

дой из страниц сегмента в памяти, которые могут располагаться не подряд — часть

страниц может находиться в ОП, остальные — во внешней памяти. Структуру вир-
туального адреса и процесс преобразования его в физический адрес иллюстрирует
рис. 5.34.

Рис. 5.34. Преобразование адреса при сегментно-страничной организации памяти

Для получения физического адреса необходим доступ к сегментной и од-

ной из страничных таблиц, поэтому преобразование адреса может занимать
много времени.

Организация защиты памяти

Современные вычислительные машины, как правило, работают в многопользова-

тельском и многозадачном режимах, когда в основной памяти одновременно нахо-
дятся программы, относящиеся как к разным пользователям, так и к различным
задачам одного пользователя. Если даже ВМ выполняет только одну программу,
в ОП, помимо этой программы и относящихся к ней данных, всегда присутствуют

фрагменты операционной системы. Каждой задаче в основной памяти выделяется

свое адресное пространство. Такие пространства, если только это специально не
предусмотрено, обычно независимы. В то же время в программах могут содержаться
ошибки, приводящие к вторжению в адресное пространство других задач. След-
ствием этих ошибок может стать искажение информации, принадлежащей другим
программам. Следовательно, в ВМ обязательно должны быть предусмотрены меры,


background image

2 7 0 Глава 5. Память

предотвращающие несанкционированное воздействие программ одного пользова-
теля на работу программ других пользователей и на операционную систему. Осо-
бенно опасны последствия таких ошибок при нарушении адресного пространства

операционной системы.

Чтобы воспрепятствовать разрушению одних программ другими, достаточно

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

Защита от вторжения программ в чужие адресные пространства реализуется

различными средствами и способами, но в любом варианте к системе защиты
предъявляются два требования: ее реализация не должна заметно снижать произ-
водительность ВМ и требовать слишком больших аппаратных затрат.

Задача обычно решается за счет сочетания программных и аппаратных средств,

хотя ответственность за охрану адресных пространств от несанкционированного

доступа обычно возлагается на операционную систему. В учебнике рассматрива-

ются, главным образом, аппаратные аспекты проблемы защиты памяти.

Защита отдельных ячеек памяти

Этим видом защиты обычно пользуются при отладке новых программ параллель-
но с функционированием других программ. Реализовать подобный режим можно

за счет выделения в каждой ячейке памяти специального «разряда защиты» и свя-
зывания его со схемой управления записью в память/Установка этого разряда в 1
блокирует запись в данную ячейку. Подобный режим использовался в вычисли-
тельных машинах предыдущих поколений (ДЛЯ современных ВМ он не типичен).

Кольца защиты

Защиту адресного пространства операционной системы от несанкционированно-

го вторжения со стороны пользовательских программ обычно организуют за счет
аппаратно реализованного разделения системного и пользовательского уровней
привилегий. Предусматриваются как минимум два режима работы процессора:

системный (режим супервизора — «надзирателя») и пользовательский. Такую
структуру принято называть

 кольцами защиты

 и изображать в виде концентри-

ческих окружностей, где пользовательский режим представлен внешним кольцом,
а системный — внутренней окружностью. В системном режиме программе доступ-
ны все ресурсы ВМ, а возможности пользовательского режима существенно огра-
ничены. Переключение из пользовательского режима в системный осуществляется
специальной командой. В большинстве современных ВМ число уровней привиле-
гий (колец защиты) увеличено. Так, в микропроцессорах класса Pentium пре-

дусмотрено четыре уровня привилегий.

Метод граничных регистров

Данный вид защиты наиболее распространен. Метод предполагает наличие в про-
цессоре двух

 граничных регистров,

 содержимое которых определяет нижнюю и верх-

нюю границы области памяти, куда программа имеет право доступа. Заполнение


Смотрите также файлы