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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Сегменты имеют произвольную длину (до 4Мб). Виртуальная память реализуется на уровне сегментов. Это приводит к 2м проблемам: большое время загрузки и выгрузки сегмента. Фрагментация памяти (рис)

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

Дескриптор страницы занимает 4Кб (рис)

20 бит – под адрес начала страницы, 12 бит – под атрибуты страницы.

Р определяет расположена страница в памяти или нет

А используется для оценки частоты обращаемых страниц

U/S определяет какая это страница (пользовательская или системная)

R/W определяет предназначена страница только для чтения

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

В Intel принята 2хуровневая структура таблиц страниц. Каждая таблица страниц занмает размер в 1 страницу, т е содержит 1024 дескриптора. И таких страниц 1000. (рис)

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

 

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

???

Трансляция линейного адреса физически осуществляется следующим образом: из управляющего регистра CR3 считывается адрес начала каталога, к этому адресу добавляется N элемента каталога из линейного адреса *4, в результате получается адрес дескриптора каталога, описывающего нужную таблицу страниц. Из этого дескриптора извлекается адрес начала страницы, содержащей таблицу страниц, и к этому адресу добавляется N элемента таблицы страниц*4, в результате получаем адрес дескриптора в таблице страниц, описывающего требуемую нам страницу. Из этого дескриптора извлекается адрес начала страницы (или байта???). При чтении дескриптора страницы проверяется находится ли страница в памяти. Т о при страничной организации памяти используется уже не 2, а 3 адресных пространства:

ВА: селектор смещения – линейный адрес пространства

LA: ВА + смещение – физический адрес пространства

FA: 32р адрес

 

Вызов процедур и задач

При вызове подпрограмм из сегментов адресного пространства процесса смена LDT не происходит, и такой вызов принято называть вызовом процедур. Если подпрограмма находится вне адресного пространства текущего процесса, для ее выполнения создается новый процесс со своим адресным пространством. Такой вызов называется вызовом задач. Этот вызов осуществляется со сменой LDT. И вызов процедур и вызов задач в свою очередь могут быть прямыми или косвенными.

 

Прямой вызов подпроцедур

Вызов процедур осуществляется с помощью оператора JMP(формат: кор??? Указатель) Call(селектор, смещение) (рис)

БА + смещение = физический адрес точки входа

Доступ разрешается: C=0, CPL=DPL; C=1, CPL>=DPL

Для вызова привилегированных процедур ОС из пользовательских задач используется косвенный вызов процедур. При косвенном вызове процедур также используются операторы JMP или Call, но селектор в том операторе ссылается уже не на дескриптор кодового сегмента, а на специальный дескриптор кодового сегмента – шлюз(вентиль). (рис)

Шлюз имеет следующий формат: (рис)

При косвенном вызове процедуры селектор JMP или Call ссылается на шлюз. Шлюз содержит селектор смещение (32 р), где находится процедура, от начала кодового сегмента до точки входа в вызываемую процедуру. Он содержит стандартный байт в процедуре??? и счетчик слов, который задает количество слов, которые нужно скопировать из стека пользователя в стек вызываемой процедуры. Косвенный вызов процедур используется для вызова процедур ОС, работающих на высоком уровне привилегий. При косвенном вызове процедур смещение будет???, оно берется из шлюза.

Выполняются следующие операции: CPL<=DPL

Доступ определяется DPL шлюза.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 141; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.235.210 (0.005 с.)