- •Адресация памяти в защищенном режиме.
- •Привилегии и защита памяти защищенного режима
- •Сегментно-страничная адресация памяти
- •Вызов процедур и задач
- •Прямой вызов подпроцедур
- •Вызов задач (многозадачность)
- •Обработка прерываний в защищенном режиме
- •Кэширование в м/п Intel
- •История ос
- •Функции ос
- •Классификация ос
- •Мультипрограммирование и мультипроцессирование
- •Структуры ос
- •Средство межпроцессорных взаимодействий ipc
- •Очередь
- •Средства синхронизации
- •Планирование и диспетчеризация потоков(процессов)
- •Алгоритмы планирования для систем разделения:
- •Приоритетное планирование:
- •3. Системы реального времени.
- •Алгоритмы замещения страниц
- •Учет свободного и занятого пространства памяти.
- •Системы управления ввода-вывода.
- •Отказоустойчивые системы хранения
Особенности архитектуры современных компьютеров, используемых в современных ОС.
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)
Используется для организации защиты памяти. Описывает тип сегмента, который описывает данный дескриптор. Сегменты могут быть следующих типов:
системные – используются ОС и недоступны пользователю (рис)
кодовые – содержат коды выполняемых программ (рис)
С – подчиненный или неподчиненный кодовый сегмент
R – доступен ли подчиненный сегмент для чтения
А – используется ОС для оценки частоты использования данного сегмента. При загрузке сегмента в память бит А обнуляется, а при каждом обращении к сегменту в этот бит записывается 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 в защищенном режиме используются специальные средства памяти.