ВУЗ:
Составители:
кие как команды, связанные с защитой) и т.д. Каждый поток выполняется на одном из этих уровней привилегий. Кольцо 0 –
наиболее привилегированный уровень, с полным доступом ко всей памяти и ко всем командам процессора. Кольцо 3 –
наименее привилегированный уровень.
Пользовательские приложения
NTDLL.DLL
Win32 API
Функции среды
Диспетчер
сеансов
WinLogon –
процесс
р
егист
р
ации
Подсистема Win 32
Системные процессы
пользовательского
режима
Пользовательский режим
Режим ядра
Сервисы исполнительной системы
Системный процесс режима ядра Системные сервисы
Аппаратура
Диспетчер
ввода/вывода
Диспетчер
кэша
Диспетчер
файловой
системы
Драйверы
устройств
Win32K.SYS
Диспетчер
окон
Цифровой
графический
интерфейс
Драйверы
графических
устройств
Ядро
Функции библиотеки
времени выполнения
Диспетчер процессов
и потоков
Диспетчер объектов
Диспетчер
виртуальной памяти
Слой абстрагирования от
аппа
р
ат
ур
ы
(
HAL
)
Рис. 1. Архитектура Windows NT в упрощенном виде
Для обеспечения совместимости с системами на базе процессоров, отличных от тех, что выпускает компания Intel,
Windows поддерживает только два уровня привилегий – кольца 0 и 3. Если поток работает в кольце 0, говорят, что он вы-
полняется в режиме ядра (kernel mode). Если поток выполняется в кольце 3, говорят, что он работает в пользовательском
режиме (user mode). Низкоуровневый код операционной системы действует в режиме ядра, тогда как пользовательские при-
ложения выполняются, в основном, в пользовательском режиме.
Прикладной поток может переключаться из пользовательского режима в режим ядра при вызове некоторых API-
функций, которые требуют более высокого уровня привилегий, например, связанных с доступом к файлам или с выполнени-
ем функций, ориентированных на графические операции. В действительности некоторые пользовательские потоки могут
работать в режиме ядра даже больше времени, чем в пользовательском режиме.
Но как только завершается выполнение той части кода, которая относится к режиму ядра, пользовательский поток ав-
томатически переключается обратно в пользовательский режим. Такой подход лишает возможности писать код, предназна-
ченный для работы в режиме ядра, программист может только вызывать выполняющиеся в режиме ядра системные функции
(system functions). При работе с Windows NT можно определить, когда поток выполняется в пользовательском режиме, а ко-
гда – в режиме ядра. Для этого используется утилита Performance Monitor (Системный монитор) из пункта Administrative
Tools (Администрирование) меню Start (Пуск).
Драйверы устройств работают в режиме ядра. Это обстоятельство имеет два следствия. Во-первых, в отличие от неправиль-
но выполняющегося приложения неправильно работающий драйвер устройства может нарушить работу всей системы, так как он
имеет доступ и ко всему системному коду, и ко всей памяти. Во-вторых, прикладной программист может получить доступ к за-
щищенным ресурсам, написав драйвер псевдоустройства.
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »