
- •Раздел 2. Механизмы последовательного выполнения программ
- •2.1. Классификация методов замены контекста
- •2.2. Процедуры как синхронные методы замены контекста
- •2.3. Сопрограммы
- •2.4. Примеры реализации сопрограмм в Си, в защищенном режиме процессора и в Win32
- •2.4.1. Пример реализации сопрограмм в Си
- •2.4.2. Пример реализации сопрограмм в защищенном режиме
- •2.4.3. Пример реализации сопрограмм в Win32
- •2.5. Процедуры ос
- •2.6. Прерывания как асинхронный метод замены контекста
- •2.7. Исключения
- •2.7.1. Самая общая характеристика исключений
- •2.7.2 Исключения на низком уровне
- •2.7.3. Исключения в программных средах
- •2.7.4. Обработка исключений в Delphi
- •2.7.4.1. Защита ресурсов
- •2.7.4.2. Обработка исключений
2.5. Процедуры ос
Процедуры ОС - это средство синхронной передачи управления, которое приводит к перестановке контекста процессора. По своему внешнему виду вызов процедуры ОС очень похож на вызов обычной процедуры в программе.
Отличие процедуры ОС от обычной процедуры состоит в более глубокой модификации контекста.
Процедуры операционной системы – это процедуры с более высоким приоритетом, чем пользовательские.
Ранее рассматривали примитивы - базовые операции некоторого логического уровня среды, предоставляемые вышележащему уровню. Вызов такого примитива с этого вышележащего уровня и есть вызов процедуры ОС.
Пример. Вызов write(a) внешне очень похож на вызов обычной процедуры. Однако, это не обычный вызов, т. к. в нем идет обращение к функциям ОС.
Пример 2 обращения к процедуре ОС - вызов функции int 21h в ДОС.
Как и в обычных процедурах создается некоторый протокол передачи параметров в процедуры ОС, например, в рабочих регистрах передается номер запрашиваемых действий.
Процедуры ОС обычно предоставляются пользователю как уже готовые в форме API - интерфейса прикладного программирования.
Вопрос (
Отличия процедур ОС от обычных процедур состоят в следующем:
на входе в такую процедуру осуществляется проверка прав пользователя на ее вызов;
контекст переносится в область памяти, недоступную пользователю;
после выполнения процедуры возврат не всегда осуществляется в точку вызова.
)Вопрос
Вызовы процедур ОС в форме API можно трактовать как расширения языка программирования, но только более аппаратно-зависимые.
Как осуществлять с низкоприоритетного уровня вызов процедуры более высокого уровня приоритета? Для этого архитектура защищенного режима опять предоставляет специальное средство, называемое коммутатор или шлюз. Вспомним, что обращение к памяти в защищенном режиме осуществляется через дескрипторы, находящиеся в специальной таблице. Вместо адреса памяти в инструкцию помещается селектор – адрес дескриптора.
Вопрос (
Селектор содержит поле RPL - запрашиваемый уровень привилегий.
Смещение в таблице дескрипторов |
RPL |
)Вопрос
Дескриптор содержит поле DPL - уровень привилегий дескриптора. Если при запросе RPL = DPL, то запрос будет обслужен. Дескрипторы задач ОС - это дескрипторы с большим уровнем привилегий DPL, чем уровень RPL запросов пользователя.
Поэтому для согласования уровней существует специальное средство - шлюз.
Шлюз - это специальный дескриптор с уровнем привилегий DPL, низким, равным пользовательскому уровню, но содержащий в поле адреса новый селектор с уровнем RPL, более высоким, чем уровень пользователя. А этот новый селектор содержит RPL, соответствующий уровню привилегий дескриптора, указывающего на процедуру ОС.
Вопрос (
RPL - запрашиваемый уровень привилегий
DPL - уровень привилегий дескриптора
)Вопрос
Вопрос (
Селектор пользователя
с уровнем привилегий 2 обращается к
шлюзу, имеющему уровень привилегий 2,
но содержащему селектор с уровнем
привилегий 1
)Вопрос