Операционные системы, среды и оболочки. Макаренко С.И. - 157 стр.

UptoLike

Составители: 

11.5 Основные механизмы в ОС Windows
Рассмотрим реализацию основных механизмов операционной системы
в ОС Windows. Следует отметить, что терминология корпорации Microsoft
несколько отличается от общепринятой. Например, системные вызовы
называются системными сервисами, а под программным прерыванием
понимается выполнение специфичных функций ядра, требующих прерывания
работы текущего процесса.
11.5.1 Ловушки
Общим для реализации рассматриваемых основных механизмов
является необходимость сохранения состояния текущего потока с его
последующим восстановлением. Для этого в ОС Windows используется
механизм ловушек (trap).
В случае возникновения требующего обработки события (прерывания,
исключения или вызова системного сервиса) процессор переходит в
привилегированный режим и передает управление обработчику ловушек,
входящему в состав ядра. Обработчик ловушек создает в стеке ядра
прерываемого потока фрейм ловушки, содержащий часть контекста
потока для последующего восстановления его состояния, и в свою очередь
передает управление определенной части ОС, отвечающей за первичную
обработку произошедшего события.
В типичном случае сохраняются и впоследствии восстанавливаются:
программный счетчик;
регистр состояния процессора;
содержимое остальных регистров процессора;
указатели на стек ядра и пользовательский стек;
указатели на адресное пространство, в котором выполняется поток
(каталог таблиц страниц процесса).
Адрес части ядра ОС, ответственной за обработку данного
конкретного события определяется из вектора прерываний, который
номеру события ставит в соответствие адрес процедуры его первичной
обработки. Это оказывается возможным, поскольку все события
типизированы и их число ограничено. Для асинхронных событий их номер
определяется контроллером прерываний, а для синхронных - ядром.
То же самое происходит в случае возникновения исключений и
прерываний. Простые исключения могут быть обработаны диспетчером
ловушек, а более сложные обрабатываются диспетчером исключений,
который может в случае возникновения исключения вернуть управление
вызвавшему это исключение приложению.
157
              11.5 Основные механизмы в ОС Windows

     Рассмотрим реализацию основных механизмов операционной системы
в ОС Windows. Следует отметить, что терминология корпорации Microsoft
несколько отличается от общепринятой. Например, системные вызовы
называются системными сервисами, а под программным прерыванием
понимается выполнение специфичных функций ядра, требующих прерывания
работы текущего процесса.

                            11.5.1 Ловушки

     Общим для реализации рассматриваемых основных механизмов
является необходимость сохранения состояния текущего потока с его
последующим восстановлением. Для этого в ОС Windows используется
механизм ловушек (trap).
     В случае возникновения требующего обработки события (прерывания,
исключения или вызова системного сервиса) процессор переходит в
привилегированный режим и передает управление обработчику ловушек,
входящему в состав ядра. Обработчик ловушек создает в стеке ядра
прерываемого потока фрейм ловушки, содержащий часть контекста
потока для последующего восстановления его состояния, и в свою очередь
передает управление определенной части ОС, отвечающей за первичную
обработку произошедшего события.
     В типичном случае сохраняются и впоследствии восстанавливаются:
     −   программный счетчик;
     −   регистр состояния процессора;
     −   содержимое остальных регистров процессора;
     −   указатели на стек ядра и пользовательский стек;
     −   указатели на адресное пространство, в котором выполняется поток
         (каталог таблиц страниц процесса).
     Адрес части ядра ОС, ответственной за обработку данного
конкретного события определяется из вектора прерываний, который
номеру события ставит в соответствие адрес процедуры его первичной
обработки. Это оказывается возможным, поскольку все события
типизированы и их число ограничено. Для асинхронных событий их номер
определяется контроллером прерываний, а для синхронных - ядром.
     То же самое происходит в случае возникновения исключений и
прерываний. Простые исключения могут быть обработаны диспетчером
ловушек, а более сложные обрабатываются диспетчером исключений,
который может в случае возникновения исключения вернуть управление
вызвавшему это исключение приложению.



                                   157