Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Напиши свою операционную систему!


Информационный Канал Subscribe.Ru


Здравствуйте!

Вот и вышел четвёртый выпуск нашей рассылки. В этот раз мы поговорим о
схеме защиты процессоров. Эта схема обеспечивает защиту операционной
системы и программ друг от друга. Давайте начнём.

Эта схема использует четырёхуровневую систему привелегий (от 0 до 3).
Наиболее привелигированным являетстя нулевой уровень. Обычно данным
уровнем привелегий обладает ядро операционной системы. Наименее
привелигированным является третий уровень. На этом уровне нахдятся
пользовательские программы.


Подобные уровни называются кольцами защиты и распределяются следующим
образом:

Кольцо 0 - ядро операционной системы, системные драйвера.
Кольцо 1 - программы обслуживания аппаратуры, драйверы,
программы для работы с портами ввода/вывода.
Кольцо 2 - СУБД (системы управления базами данных),
дополнительные модули ОС.
Кольцо 3 - Прикладное программное обеспечение.

Несложные системы могут использовать не все кольца, а лишь некоторые.

Простейшие системы можно полностью реализовать в одном кольце (нулевом).
Наша простейшая ОС будет реализована именно так.

Любой селектор (селектор - это индекс, с помощью которого процессор
извлекает из специальной таблицы 24-разрядный базовый адрес сегмента.)
имеет поле RPL (Requested Privilege Level). В регистре CS храниться
селектор выполняемого в данный момент сегмента кода. Этому селектору
соответствует дескриптор либо в таблице LDT (Local Descriptor Table)
либо в таблице GDT (Global Descriptor Table). В дескрипторе, в байте
доступа находиться поле DPL ( Descriptor Privilege Level ). Эти поля
участвуют в механизме защиты памяти.

При подготовке программы к запуску, операционная система формирует в
GDT или LDT дескриптор, который описывает сегмент кода программы. В
нём в поле DPL байта доступа указывается номер кольца, в котором
данная программа будет работать - уовень привилегий СPL (Current
Privilege Level). Это значит, что уровень привелегий программы определяется
содержимым поля DPL.

Текущий уровень привилегий копируется в поле RPL селектора сегмента кода,
загруженного в регистре CS. Программа всегда может проанализировать свой
текущий уровень привилегий исходя из значения поле RPL в регистре CS.
Однако она не может изменить свой уровень привилегий простой заменой
содержимого поля RPL в сегменте CS.

Итак, программа получает от операционной системы текущий уровень привилегий
CPL, который она может проанализировать на основании содержимого регистра CS.
Дескрипторы, описывающие сегменты данных, содержат поле уровня привилегий
дескриптора DPL (Descriptor Privilege Level). Поле DPL содержит минимальные
привилегии, которые нужны для доступа к сегменту данных.

Перед тем, как обратиться к сегменту данных, программа должна загрузить в
один из сегментных регистров селектор, соответствующий нужному сегменту данных.
В селекторе необходимо указать поле уровня запрашиваемых привилегий RPL
(Requested Privilege Level).

Программе будет предоставлен доступ к сегменту только в том случае, когда
уровень привилегий дескриптора запрашиваемого сегмента DPL больше или равен
значению max(CPL,RPL), т.е. наибольшему из значений текущего уровня привилегий
CPL и уровня запрашиваемых привилегий RPL:

DPL больше или равно max(CPL,RPL)


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

На этом я заканчиваю.

Контактная информация:
_____________________________________________________________________________
! E-mail: mailto:vich2k2@mail.ru                                            !
! Страница проекта 3os в сети: http:///www.3os.by.ru                        !
_____________________________________________________________________________

До следующего выпуска!
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
С уважением,
VICH

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное