- •Режимы ядра и пользователя Windows
- •Процесс, контекст процесса и потоки
- •Архитектура Windows nt
- •Уровень аппаратных абстракций
- •Диспетчер объектов
- •2. Монитор ссылок безопасности
- •3. Диспетчер процессов
- •4. Подсистема Plug and Play
- •5. Диспетчер энергопитания
- •6. Диспетчер виртуальной памяти
- •7. Диспетчер кэша
- •1. Программный интерфейс приложений ввода-вывода (I/o api)
- •2. Диспетчер ввода-вывода (I/o Manager)
- •3. Драйверы файловых систем
- •Графическая подсистема
- •Пользовательский режим
Режимы ядра и пользователя Windows
Система Windows NT проектировалась, как переносимая операционная система, в которой весь код, зависимый от процессора и аппаратного обеспечения, изолирован в модуле, называемом уровнем аnnаратных абстракций (llard\vare abstraction layer - HAL).
Windows NT раньше поддерживала несколько архитектур центральных процессоров, включая PowerPC и Alpha, современные версии Windows NT поддерживают только процессоры компании Intel и совместимые с ними модели (например, компании AMD).
Всей памятью можно управлять (выделять, считывать и записывать) посредством логических единиц, которые называются страницами
Каждая страница памяти имеет связанный с ней тег, который определяет возможность чтения или записи этой страницы, а также уровень привилегий, необходимых для чтения и записи. Эта возможность предназначена для защиты пользовательских процессов друг от друга и ДЛя защиты системных кода и данных от пользовательских процессов. Обратите внимание, что системный код, выполняемый в режиме ядра, незащищен от другого кода, который выполняется в режиме ядра.
Страницы памяти, которые содержат код (в отличие от данных), могут быть отмечены как предназначенные только для чтения пользовательскими процессами и кодом на уровне ядра
Приложения, которые выполняются в пользовательском режиме, получают доступ к службам ядра Windows NT, вызывая специальные инструкции, допускающие управляемый переход в режим ядра и обратно в пользовательский режим, как только запрос в режиме ядра будет выполнен.
Процесс, контекст процесса и потоки
Процесс - это образ выполняемой программы в памяти. Процессу назначается область памяти до окончания его работы. Процесс может совместно использовать код (динамически подключаемые библиотеки) или данные(области совместно используемой памяти) с другим процессом. Процесс описывается объектом процесса, который поддерживается диспетчером объектов. В объекте процесса содержится информация о виртуальном адресном пространстве процесса, приоритете процесса, а также дескрипторы файлови информация о выделении памяти. В объекте процесса хранятся и другие параметры.
В Windows NT несколько процессов могут существовать одновременно; но только один процесс выполняется центральным процессором в определенный момент времени. Обратите внимание: драйверы вообще и драйверы систем хранения данных в частности не создают собственных процессов.
Операционная система создает несколько процессов для своих нужд, а также определенные процессы в ответ на пользовательские команды, например когда пользователь запускает приложение, такое, как Мiсrоsоft Word или Мiсrоsоft Excel. Если драйвер вызывается во время работы процесса, считается, что он работает в контексте вызывающего процесса.
Контекст nроцесса можно обозначить как всю служебную информацию, необходимую для отслеживания работы процесса. К этой информации относятся виртуальная память процесса, значения регистров центрального процессора, различные дескрипторы файлов и объектов, а также различные маркеры безопасности, связанные с процессом. Контекст процесса исключительно важен, так как множество структур данных и ресурсов, таких, как дескрипторы файлов и указатели памяти, действительны только для данноголроцесса. Например, дескриптор файла, созданный в одном процессе, недействителен в другом процессе.
Поток - это структурная единица процесса; процесс может содержать один или несколько потоков. Поток совместно использует глобальные структуры данных и адресное пространство процесса, но при этом имеет собственные данные. Переключение между процессами - задача весьма трудоемкая, которая включает в себя сохранение состояния процессора в специальной структуре данных, зависящей от процесса, и изменение регистров управления памятью и процессором. Переключение между потоками осуществляется намного быстрее, поскольку требует сохранения гораздо меньшего объема данных.