Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_лекции.doc
Скачиваний:
2
Добавлен:
15.04.2019
Размер:
370.69 Кб
Скачать

Привилегии и защита памяти защищенного режима

В защищенном режиме м/п может работать на одном из 4х уровней привилегий: 0й – наиболее привилегированный, 3й – менее привилегированный. Пользовательские программы работают как правило на 3м уровне, а ОС на 0м.. Различия этих уровней состоят в следующем:

1) на 3м уровне запрещено выполнять команды ввода-вывода (работа с портами In, Out), команды установки и очистки флагов прерываний Sti,Sli, программы команды прерываний (Int), кроме того жизненно важных для м/п команд, таких как остановка, команды работы с управляющими регистрми – можно выполнить только на 0м уровне привилегий, все команды MOV, в которых приемником является какой-либо управляющий регистр, также могут бытть выполнены только на 0м уровне.

2) привилегии используются для доступа к сегментам памяти. Для этого м/п оперирует следующими величинами:

- DPL – приоритет сегмента задан в его дескрипторе

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

- RPL – уровень приоритета адреса в селекторе

- EPL=max{CPL,RPL} (Effective Priority Level)

В зависимости от того, к какому типу сегмента осуществляется обращение, эти величины используются по-разному:

1) сегмент данных: при доступе к сегменту данных м/п выполняется следующая процедура EPL<=DPL

2) сегмент стека: для каждого уровня привилегий в системе существует свой стек, поэтому каждая процедура может обращаться только к стеку своего уровня CPL=DPL

3) сегмент кода: самые сложные проверки осуществляются к доступу сегмента кода, при это учитывается является ли код сегмента подчиненным или нет. Если код сегмента является подчиненным, то выполняется проверка: C=0:CPL=DPL, т е процедура может вызвать другую процедуру из другого сегмента, только если их уровни привилегий равны; C=1: CPL>=DPL, но вызываемая процедура будет выполнена на уровне CPL.

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

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

Сегменты имеют произвольную длину (до 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р адрес