Здавалка
Главная | Обратная связь

Режим ядра и пользовательский режим



Для предотвращения доступа приложений к критически важным данным операционной системы и устранения риска их модификации Windows использует два режима доступа к процессору [4]: пользовательский (user mode) и ядра (kernel mode). Код приложений работает в пользовательском режиме, тогда как код операционной системы (например, системные сервисы и драйверы устройств) – в режиме ядра. В режиме ядра предоставляется доступ ко всей системной памяти и разрешается выполнять любые машинные команды процессора. Предоставляя операционной системе более высокий уровень привилегий, чем прикладным программам, процессор позволяет разработчикам операционных систем реализовать такие архитектуры, которые не дают возможности сбойным приложениям нарушать стабильность работы всей системы.

Прикладные программы могут переключаться из пользовательского режима в режим ядра, обращаясь к системному сервису. Например, WinAPI-функции ReadFile в процессе своего выполнения приходится вызывать внутреннюю подпрограмму – она-то и считывает данные из файла. Так как эта подпрограмма обращается к внутрисистемным структурам данных, она должна выполняться в режиме ядра, Переключение из пользовательского режима в режим ядра осуществляется специальной командой процессора. Операционная система перехватывает эту команду, обнаруживает запрос системного сервиса, проверяет аргументы, которые поток передал системной функции, и выполняет внутреннюю подпрограмму. Перед возвратом управления пользовательскому потоку процессор переключается обратно в пользовательский режим.

Так что ситуация, когда пользовательский поток часть своего времени работает в пользовательском режиме, а часть – в режиме ядра, совершенно нормальна. А поскольку подсистема, отвечающая за поддержку графики и окон, функционирует в режиме ядра, то приложения, интенсивно работающие с графикой, большую часть времени действуют в режиме ядра, а не в пользовательском режиме.


Глава 3. Объекты ядра

Общие сведения

Ранее уже говорилось о том, что операционная система Windows работает с различными объектами (п. 2.4). Эти объекты используются системой и приложениями для управления множеством самых разных ресурсов: процессами, потоками, файлами и т.д.

Система позволяет создавать и оперировать с несколькими типами таких объектов, в том числе, маркерами доступа (access token objects), файлами (file objects), проекциями файлов (file-mapping objects), портами завершения ввода-вывода (I/O completion port objects), заданиями (job objects), почтовыми ящиками (mailslot objects), мьютексами (mutex objects), каналами (pipe objects), процессами (process objects), семафорами (semaphore objects), потоками (thread objects) и ожидаемыми таймерами (waitable timer objects).

Создание объектов ядра и работа с ними осуществляется через Windows-функции. Например, CreateProcess позволяет создать объект-процесс.

Все вышеперечисленные объекты обладают рядом общих свойств (дескриптор защиты, счетчик числа пользователей и т.д.), но большая часть свойств специфична для объектов конкретного типа. Например, у объекта «процесс» есть идентификатор, базовый приоритет и код завершения, а у объекта «файл» – смещение в байтах, режим разделения и режим открытия. Можно предположить, что все объекты ядра являются наследниками некоторого базового класса (рис. 8).

Рисунок 8 – Объекты ядра обладают рядом общих свойств







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.