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

Особенности архитектуры современных компьютеров, используемых в современных ОС.

Intel 80386 – 1й 32разрядный процессор.

Сегмент обязательно должен был располагаться в памяти с адреса, кратного 16 (выравнивает на границу параграф). Каждый адрес внутри программы представлялся в виде 2х компонент: адреса начала сегмента и смещения относительно начала сегмента. Адрес начала сегмента хранился в регистре сегмента, при этом он хранился без их младших (4х нулей). Смещение могло хранится в регистре (внутри сегмента). Смещение относительного адреса байта внутри сегмента 220=1М.

386 м/п имел в своем составе и 32разрядные РОНы, которые назывались EAX, EBX, ECX, EDX; 6 16 разрядных регистров сегментов CS, DS, SS, ES, GS, FS; расширенный регистр флагов EFLAGS; 32разрядный счетчик команд EFP; управляющие регистры CR3, CCR2, CR1, CR0. (рис)

MSW определяет флаги, управляющие работой м/п. Младший разряд (Е) CR0 определяет в каком режиме работает процессор: если Е=0, то м/п работает в реальном режиме. В этом режиме он полностью идентичен м/п 8086 и 8088 – не поддерживает виртуальную память, не обеспечивает защиту памяти и не поддерживает многозадачность. Единственное, чем отличается – поддерживает возможность использования 32разрядных регистров.

Если Е=1, то м/п работает в защищенном режиме – 252=4Гб памяти, поддерживает виртуальную память и аппаратные средства, многозадачен.

Старший бит Р определяет какой режим адресации используется в защищенном режиме: Р=0 – сегментная адресация, Р=1 – сегментно-страничная адресация. Регистры CR2 и CR3 используются при сегментно-страничной организации памяти.

Адресация памяти в защищенном режиме.

При сегментной адресации памяти в защищенном режиме память также разбивается на сегменты, однако сегменты могут иметь произвольную длину. Кроме того, с каждым сегментом связываются параметры защиты памяти. Виртуальный адрес в защищенном режиме так же состоит из пары: регистра сегмента 16р и смещения 32р. Однако регистр сегмента уже не содержит адрес начала сегмента в памяти, а ссылается на специальную структуру данных, описанную сегментом - дескриптор сегмента. Он занимает 8 байт и имеет следующую структуру: (рис)

G=0 – байты, =1 – в страницах по 4Кб каждая

БА – задает физический адрес сегмента. БА и размер разбиты. Сделано для совместимости с предыдущей версией м/п. В дескрипторе сегмента старшие 2 байта не использовались.

Бит Р – бит присутствия. Он определяет находится ли в данный момент сегмент в памяти или он выгружен на диск. Р=1 – сегмент находится в памяти, можно работать, Р=0 – сегмента в памяти нет, процессор вырабатывает прерывание по отсутствию сегмента в памяти.

Descriptor Priority Level(DPL)

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

  1. системные – используются ОС и недоступны пользователю (рис)

  2. кодовые – содержат коды выполняемых программ (рис)

С – подчиненный или неподчиненный кодовый сегмент

R – доступен ли подчиненный сегмент для чтения

А – используется ОС для оценки частоты использования данного сегмента. При загрузке сегмента в память бит А обнуляется, а при каждом обращении к сегменту в этот бит записывается 1.

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

  1. сегменты данных – используются под стек (рис)

W определяет возможность записи данных в сегмент. Если =0, то сегмент можно только читать.

К – то же значение, что и А

Все дескрипторы сегментов объединены в таблицу дескрипторов сегментов. Существует 2 тип таблиц дескрипторов сегментов: GDT – глобальная таблица дескрипторов – содержит дескрипторы сегментов ОС и сегментов, общих для всех выполняемых процессов; LDT – локальная таблица дескрипторов - каждый выполняемый процесс имеет свою таблицу дескрипторов. В такой системе может присутствовать 1 GDT и несколько LDT. И GDT, и LDT занимают по 64 Кб и могут содержать до 8192 дескрипторов сегментов.

В системе существуют специальные регистры для ссылок на эти таблицы: GDTR (рис). Кроме этого существует регистр LDTR, который содержит ссылку на дескриптор, описывающий сегмент под текущий LDT – таблицу локальных дескрипторов, выполняемого в данный момент процесса. Т о в каждый конкретныйелано для совместимости с предыдущей версией (рис)

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

LDT создается ОС в момент запускания процесса. (рис)

В защищенном режиме регистр сегментов, содержащих специальную структуру данных – селектор. (рис)

RPL используется для защиты памяти

Бит Т определяет какую таблицу нужно использовать для адресации сегментов.

Индекс определяет номер дескриптора в этой таблице.

Т о разрешение адреса при сегментной организации памяти в защищенном режиме осуществляется следующим образом:

1) из регистра сегментов извлекается селектор и по биту Т селектора определяется какую таблицу необходимо использовать

2) из регистра GDTR извлекается адрес начала таблицы GDT и к нему добавляется индекс селектора * 8

3)по вычисленному адресу извлекается дескриптор. Над ним выполняется ряд проверок:

а) проверяется бит Т: если Т=0, то сегмента в памяти нети вырабатывается прерывание по отсутствию сегмента памяти

б) анализируется приоритет сегмента и определяется можно ли к сегменту разрешить доступ. Если нет – вырабатывается прерывание по защите памяти

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

г) из дескриптора считывается размер сегмента и сравнивается со смещением виртуального адреса. Если смещение > размера сегмента, вырабатывается прерывание по защите памяти, в противном случае доступ к сегментам разрешен.

д) из дескриптора извлекается базовый адрес начала сегмента и к нему прибавляется в смещение виртуальный адрес. В результате получается 32разрядный физический адрес ??? байта. Из регистра GDT будет извлекаться адрес GDT и к нему будет добавляться индекс из регистра GDTR. В результате получим адрес-начало. По полученному адресу извлекается дескриптор, базовый адрес которого задает адрес начала GDT ???. К базовому адресу GDT добавляется индекс из селекторного регистра сегментов +8. В результате получаем адрес дескриптора GDT и извлекаем его.

ВА(селектор, смещение)->РА(32р адрес)

Поскольку каждый выполняющийся в системе процесс имеет свою собственную таблицу LDT и не имеет доступа к LDT других процессов, т о процессы защищены друг от друга, т е не могут осуществлять доступ в чужую память. В то же время таблица GDT в системе только 1 и к ней имеют доступ все процессы. Для того, чтобы обычные пользовательские процессы не могли получить доступ к сегментам ОС в м/п Intel в защищенном режиме используются специальные средства памяти.