ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.12.2021
Просмотров: 5248
Скачиваний: 8
2 6 6
Глава 5. Память
Рис. 5.32.
Структура страничной таблицы и карты диска
рует сигнал страничного сбоя (page fault), и операционная система предпринима-
ет действия по загрузке страницы с диска в ОП, обращаясь для этого к карте
В карте указано, на какой дорожке и в каком секторе диска расположена каждая из
виртуальных страниц
1
. Загрузка страницы с диска в ОП сопровождается записью
в соответствующую строку страничной таблицы (указывается номер физической
страницы, куда была загружена виртуальная страница).
В принципе карта диска может быть совмещена со страничной таблицей путем
добавления к последней еще одного поля. Другим вариантом может быть увеличе-
ние разрядности поля номера физической страницы и хранение в нем номеров до-
рожек и секторов для виртуальных страниц, отсутствующих в основной памяти.
В этом случае вид хранимой информации будет определять признак V.
Признак использования страницы R
устанавливается при обращении к данной
станице. Эта информация используется в алгоритме замещения страниц для вы-
бора той из них, которую можно наиболее безболезненно удалить из ОП, чтобы
освободить место для новой. Проблемы замещения информации в ОП решаются
так же, как и для кэш-памяти.
Поскольку в ОП находятся лишь копии страниц, а их оригиналы хранятся на
диске, необходимо обеспечить идентичность подлинников и копий. В ходе вычис-
лений содержимое отдельных страниц может изменяться, что фиксируется путем
установки в единицу
признака модификации
М. При удалении страницы из ОП
проверяется состояние признака М. Если М = 1, то перед удалением страницы из
основной памяти ее необходимо переписать на диск, а при М =О этого можно не
делать.
Признак прав доступа
А служит целям защиты информации и определяет, ка-
кой вид доступа к странице разрешен: только для чтения, только для записи, для
чтения и для записи.
Когда программа загружается в ОП, она может быть направлена в любые сво-
бодные в данный момент страничные кадры, независимо от того, расположены ли
они подряд или нет. Страничная организация позволяет сократить объем пересы-
лок информации между внешней памятью и ОП, так как страницу не нужно загру-
жать до тех пор, пока она действительно не понадобится.
Способ реализации СТ жизненно важен для эффективности техники вирту-
альной адресации, поскольку каждое обращение к памяти предполагает обраще-
Множество страниц присутствующих в данный момент в основной памяти, является подмножеством
всех виртуальных страниц, хранящихся на магнитном диске.
Понятие виртуальной памяти 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 Кбайт.
Серьезной проблемой в системе виртуальной памяти является большой объем
страничных таблиц, который пропорционален числу виртуальных страниц. Таб-
лица занимает значительную часть ОП, а на поиск уходит много времени, что край-
не нежелательно.
Один из способов сокращения длины таблиц основан на введении многоуровг
невой организации таблиц. В этом варианте информация оформляется в виде не-
скольких страничных таблиц сравнительно небольшого объема, которые образу-
ют второй уровень. Первый уровень представлен таблицей с каталогом, где указано
местоположение каждой из страничных таблиц (адрес начала таблицы в памяти)
второго уровня. Сначала в каталоге определяется расположение нужной странич-
2 6 8 Глава 5. Память
ной таблицы и лишь затем производится обращение к нужной таблице. О достига-
емом эффекте можно судить из следующего примера. Пусть адресная шина ВМ
имеет ширину 32 бита, а размер страницы равен 4 Кбайт. Тогда количество вирту-
альных страниц, а следовательно, и число входов в единой страничной таблице
составит 2
20
. При двухуровневой организации можно обойтись одной страницей
первого уровня на 1024 (2
10
) входов и 1024 страничными таблицами на такое же
число входов.
Другой подход называют
способом обращенных или инвертированных странич-
ных таблиц.
Такую таблицу в каком-то смысле можно рассматривать как увели-
ченный эквивалент TLB, отличающийся тем, что она хранится в ОП и реализуется
не аппаратурой, а программными средствами. Число входов в таблицу определя-
ется емкостью ОП и равно -числу страниц, которое может быть размещено в основ-
ной памяти. Одновременно с этим имеется и традиционная СТ, но хранится она не
в ОП, а на диске. Для поиска нужной записи в инвертированной таблице исполь-
зуется хэширование, когда номер записи в таблице вычисляется в соответствии
с некой хэш-функцией. Аргументом этой функции служит номер искомой вирту-
альной страницы. Хэширование позволяет ускорить операцию поиска. Если нуж-
ная страница в ОП отсутствует, производится обращение к основной таблице на
диске и после загрузки страницы в ОП корректируется и инвертированная таблица.
Сегментно-страничная организация памяти
При страничной организации предполагается, что виртуальная память — это не-
прерывный массив со сквозной нумерацией слов, что не всегда можно признать
оптимальным. Обычно программа состоит из нескольких частей — кодовой, ин-
формационной и стековой. Так как заранее неизвестны длины этих составляющих,
то удобно, чтобы при программировании каждая из них имела собственную нуме-
рацию слов, отсчитываемых с нуля. Для этого организуют систему
сегментиро-
ванной памяти,
выделяя в виртуальном пространстве независимые линейные
пространства переменной длины, называемые
сегментами.
Каждый сегмент пред-
ставляет собой отдельную логическую единицу информации, содержащую сово-
купность данных или программный код и расположенную в адресном простран-
стве пользователя. В каждом сегменте устанавливается своя собственная нумерация
слов, начиная с нуля. Виртуальная память также разбивается на сегменты, с неза-
висимой адресацией слов внутри сегмента. Каждой составляющей программы вы-
деляется сегмент памяти. Виртуальный адрес определяется номером сегмента и ад-
ресом внутри сегмента. Для преобразования виртуального адреса в физический
используется специальная
сегментная таблица.
Недостатком такого подхода является то, что неодинаковый размер сегментов
приводит к неэффективному использованию ОП. Так, если ОП заполнена, то при
замещении одного из сегментов требуется вытеснить такой, размер которого ра-
вен или больше размера нового. При многократном повторе подобных действий
в ОП остается множество свободных участков, недостаточных по размеру для за-
грузки полного сегмента. Решением проблемы служит
сегментно-страничная орга-
низация памяти.
В ней размер сегмента выбирается не произвольно, а задается
кратным размеру страницы. Сегмент может содержать то или иное, но обязатель-
Понятие виртуальной памяти 2 6 9
но целое число страниц, даже если одна из страниц заполнена частично. Возника-
ет определенная иерархия в организации доступа к данным, состоящая из трех сту-
пеней: сегмент > страница > слово. Этой структуре соответствует иерархия таб-
лиц, служащих для перевода виртуальных адресов в физические. В сегментной
таблице программы перечисляются все сегменты данной программы с указанием
начальных адресов CT, относящихся к каждому сегменту. Количество странич-
ных таблиц равно числу сегментов и любая из них определяет расположение каж-
дой из страниц сегмента в памяти, которые могут располагаться не подряд — часть
страниц может находиться в ОП, остальные — во внешней памяти. Структуру вир-
туального адреса и процесс преобразования его в физический адрес иллюстрирует
рис. 5.34.
Рис. 5.34. Преобразование адреса при сегментно-страничной организации памяти
Для получения физического адреса необходим доступ к сегментной и од-
ной из страничных таблиц, поэтому преобразование адреса может занимать
много времени.
Организация защиты памяти
Современные вычислительные машины, как правило, работают в многопользова-
тельском и многозадачном режимах, когда в основной памяти одновременно нахо-
дятся программы, относящиеся как к разным пользователям, так и к различным
задачам одного пользователя. Если даже ВМ выполняет только одну программу,
в ОП, помимо этой программы и относящихся к ней данных, всегда присутствуют
фрагменты операционной системы. Каждой задаче в основной памяти выделяется
свое адресное пространство. Такие пространства, если только это специально не
предусмотрено, обычно независимы. В то же время в программах могут содержаться
ошибки, приводящие к вторжению в адресное пространство других задач. След-
ствием этих ошибок может стать искажение информации, принадлежащей другим
программам. Следовательно, в ВМ обязательно должны быть предусмотрены меры,
2 7 0 Глава 5. Память
предотвращающие несанкционированное воздействие программ одного пользова-
теля на работу программ других пользователей и на операционную систему. Осо-
бенно опасны последствия таких ошибок при нарушении адресного пространства
операционной системы.
Чтобы воспрепятствовать разрушению одних программ другими, достаточно
защитить область памяти данной программы от попыток записи в него со стороны
других программ (защита от записи). В ряде случаев необходимо иметь возмож-
ность защиты и от чтения со стороны других программ, например при ограничени-
ях на доступ к системной информации.
Защита от вторжения программ в чужие адресные пространства реализуется
различными средствами и способами, но в любом варианте к системе защиты
предъявляются два требования: ее реализация не должна заметно снижать произ-
водительность ВМ и требовать слишком больших аппаратных затрат.
Задача обычно решается за счет сочетания программных и аппаратных средств,
хотя ответственность за охрану адресных пространств от несанкционированного
доступа обычно возлагается на операционную систему. В учебнике рассматрива-
ются, главным образом, аппаратные аспекты проблемы защиты памяти.
Защита отдельных ячеек памяти
Этим видом защиты обычно пользуются при отладке новых программ параллель-
но с функционированием других программ. Реализовать подобный режим можно
за счет выделения в каждой ячейке памяти специального «разряда защиты» и свя-
зывания его со схемой управления записью в память/Установка этого разряда в 1
блокирует запись в данную ячейку. Подобный режим использовался в вычисли-
тельных машинах предыдущих поколений (ДЛЯ современных ВМ он не типичен).
Кольца защиты
Защиту адресного пространства операционной системы от несанкционированно-
го вторжения со стороны пользовательских программ обычно организуют за счет
аппаратно реализованного разделения системного и пользовательского уровней
привилегий. Предусматриваются как минимум два режима работы процессора:
системный (режим супервизора — «надзирателя») и пользовательский. Такую
структуру принято называть
кольцами защиты
и изображать в виде концентри-
ческих окружностей, где пользовательский режим представлен внешним кольцом,
а системный — внутренней окружностью. В системном режиме программе доступ-
ны все ресурсы ВМ, а возможности пользовательского режима существенно огра-
ничены. Переключение из пользовательского режима в системный осуществляется
специальной командой. В большинстве современных ВМ число уровней привиле-
гий (колец защиты) увеличено. Так, в микропроцессорах класса Pentium пре-
дусмотрено четыре уровня привилегий.
Метод граничных регистров
Данный вид защиты наиболее распространен. Метод предполагает наличие в про-
цессоре двух
граничных регистров,
содержимое которых определяет нижнюю и верх-
нюю границы области памяти, куда программа имеет право доступа. Заполнение