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