|
Сегментно-страничная организация памяти
Чтобы уменьшить фрагментацию, устранить необходимость в уплотнении памяти, можно реализовать сегментацию с использованием страничной организации. Этот способ обладает достоинствами как страничной организации, так и сегментации, но за счет лишнего обращения к памяти. Сегменты при этом будут содержать целое число страниц, причем смежные страницы виртуальной памяти не обязательно должны оказываться смежными в реальной памяти. Смещение d в сегменте рассматривается как пара (p, d) - страница и смещение в странице, т.е. адрес виртуальной памяти определяется как упорядоченная тройка v=(s,p,d), где s - номер сегмента, p - номер страницы, а d - смещение в рамках страницы, по которому находится нужный элемент (рис.3.15).
Рис. 3.15. Формат виртуального адреса в системе
с сегментно-страничной организацией памяти
Сегментно-страничная организация памяти предполагает, что для каждого процесса существует таблица сегментов, аналогичная той, которая используется при сегментации памяти. Ее отличие состоит в том, что второе поле каждого элемента таблицы определяет длину сегмента в страницах. При размещении каждого сегмента в оперативной памяти создается таблица отображения страниц этого сегмента.
Рассмотрим теперь динамическое преобразование виртуальных адресов в реальные в сегментно-страничной системе с применением прямого отображения, как показано на рис. 3.16.
Выполняющийся процесс делает ссылку по виртуальному адресу v=(s,p,d). Номер сегмента s прибавляется к базовому адресу b, находящемуся
Рис. 3.16. Преобразование виртуального адреса
в сегментно-страничной системе
в регистре начального адреса таблицы сегментов, образуя реальный адрес b + s элемента таблицы сегментов для сегмента s , к которому идет обращение. Если первое поле этого элемента таблицы сегментов указывает на то, что данный сегмент находится в оперативной памяти, то третье поле содержит базовый адрес s’ таблицы отображения страниц для сегмента s . Номер страницы p прибавляется к s’, так что образуется адрес p + s’ строки (элемента) в таблице отображения страниц для страницы p сегмента s . Если первое поле элемента указывает, что эта страница находится в оперативной памяти, то второе поле содержит номер страничного кадра f , в который загружена виртуальная страница p.
Этот номер страничного кадра соединяется путем конкатенации со смещение d, так чтоформируется реальный адрес r , соответствующий виртуальному адресу v = (s, p, d ).
Указанная процедура преобразования адресов описана в предположении, что каждый необходимый элемент информации находится именно там, где ему положено быть. Однако в процессе преобразования адресов существует много моментов, когда обстоятельства могут складываться не столь благоприятно.
Просмотр таблицы сегментов может показать, что сегмента s в первичной памяти нет. При этом возникает прерывание по отсутствию сегмента, операционная система найдет нужный сегмент во внешней памяти, сформирует для него таблицу страниц и загрузит соответствующую страницу в оперативную память, быть может, вместо некоторой существующей страницы этого или
какого-либо другого процесса. Когда сегмент находится в оперативной памяти, обращение к таблице отображения страниц может показать, что нужной страницы в первичной памяти все же нет. При этом произойдет прерывание по отсутствию страницы, операционная система возьмет управление на себя, найдет данную страницу во внешней памяти и загрузит ее в оперативную память (быть может, опять-таки с замещением другой страницы). Как и при чисто сегментной системе, адрес виртуальной памяти может выйти за рамки сегмента, и произойдет прерывание по выходу за пределы сегмента.
При использовании сегментно-страничной организации памяти для нахождения требуемой ячейки реальной памяти необходимо три обращения к памяти: первое - к таблице сегментов, второе - к таблице отображения страниц, и наконец, к страничному кадру. Очевидно, что без аппаратной поддержки время доступа к памяти будет недопустимо большим. Для большинства обращений просмотры этих двух таблиц в памяти можно заменить одним просмотром, реализованном на так называемой ассоциативной памяти, т.е. на памяти, адресуемой по значению.
В случае использования такой памяти по заданному значению данных выбирается номер каждой ячейки памяти, содержащей эти данные (если такие ячейки есть). Обычно ассоциативная память реализуется аппаратно следующим образом. Каждая ячейка указанной памяти содержит в качестве аргумента пару (s, p ) страницы, находящейся в оперативной памяти, а в качестве функции - начало этой страницы. Ассоциативной памяти подается ключевое значение, в качестве которого используется пара (s, p ) нужной страницы. Она параллельно просматривает все ячейки, сравнивая значения ключа и аргумента. Для каждого аргумента, совпадающего с ключом, выдается соответствующее значение функции. Используя ассоциативную память, можно свести к 10 % снижение скорости, возникающее из-за сегментно-страничного доступа.
Сегментно-страничная организация памяти объединяет достоинства сегментной и страничной организации. В этом случае решаются все проблемы распределения памяти, за исключением незаполненности страниц.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|