Исполнительная подсистема (executive) ОС Windows
Рассмотрим более подробно исполнительную подсистему (executive) Windows .
Менеджер объектов.Как уже было сказано, Windows использует объекты для управления всеми своими службами и для представления сущностей. Менеджер объектовисполнительной подсистемы управляет использованием всех объектов. Основные функции менеджера объектов:
· Генерация object handle- ссылки на объект ядра Windows ;
· Выполнение проверок безопасности при работе с объектом;
· Слежение за использованием каждого объекта процессами.
Объекты управляются стандартным набором методов: create, open, close, delete, query name, parse, security.
Модуль executive поддерживает именование объектов. Имя может быть постоянным или временным. Имена объектов структурируются как имена путей доступа к файлам в MS-DOS или UNIX.
Реализованы объекты-символические ссылки, которые подобны символическим ссылкам в UNIX и дают возможность иметь несколько синонимов для одного файла.
Процесс получает ссылку на объект при его создании, при открытии уже существующего объекта, при получении скопированной ссылки от другого процесса, либо путем наследования ссылки от процесса-родителя.
Каждый объект защищен списком управления доступом.
Менеджер виртуальной памяти в executive.При проектировании менеджера виртуальной памяти предполагалось, что процессор поддерживает для отображения виртуальных адресов в физические механизм страничной организации, прозрачный кэш для многопроцессорных систем, а также алиасы для виртуальных адресов.
Менеджер виртуальной памяти в Windows использует страничную организацию с размером страницы 4 килобайта.
Используется двухуровневая схема выделения памяти:
1. На первом шаге резервируется часть адресного пространства процесса.
2. На втором шаге данное выделение поддерживается выделением пространства в файле откачки (paging file).
Схема распределения виртуальной памяти в Windows приведена на рис.2.
Рис.2.Схема распределения виртуальной памяти в Windows .
Как видно из схемы, используются иерархические двухуровневые таблицы страниц.
Трансляция виртуальных адресов в Windows использует несколько структур данных.
Каждый процесс имеет справочник страниц (page directory),содержащий 1024 элемента справочника страницразмером по 4 байта.
Каждый элемент справочника страниц ссылается на таблицу страниц, которая содержит 1024 элемента таблицы страниц(page table entries - PTEs) размером по 4 байта.
Каждый PTE ссылается на фрейм страницы (4 KB) в физической памяти.
Ссылка на элемент всегда занимает 10 битов (0..1023). Это свойство используется при трансляции виртуальных адресов в физические.
Страница может находиться в следующих состояниях: valid (корректна), zeroed (обнулена), free standby (свободна), modified (модифицирована), bad (некорректна).
На рис.3 изображена структура виртуального адреса в Windows .
Рис. 3.Структура виртуального адреса в Windows .
В виртуальном адресе 10 битов для page directory entry, 10 битов для page table entry, 12 битов для смещения в байтах на странице.
На рис.4 изображена структура элемента таблицы страниц.
Рис. 4.Структура элемента таблицы страниц в Windows .
В элементе 5 битов отведено для защиты страницы, 20 битов - для адреса фрейма страницы, 4 бита - для выбора файла откачки, 3 бита для описания состояния страницы. Бит V равен 0.
Менеджер процессов executive. Обеспечивает сервисы для создания, удаления и использования потоков и процессов. Связи родительских процессов с дочерними и иерархии процессов обрабатываются конкретной подсистемой окружения, которая владеет данным процессом.
Важный элемент менеджера процессов – механизм локального вызова процедуры (LPC).LPC передает запросы и результаты между клиентским и серверным процессами на локальной машине. В частности, он используется для запросов к сервисам различных подсистем ОС.
При создании канала для LPC должно быть указано сообщение одного из трех типов.
· Первый тип – маленькие сообщения, до 256 байтов; в качестве промежуточной памяти используется очередь сообщений порта, и сообщения копируются от одного процесса к другому.
· Второй тип – во избежание копирования больших сообщений, передаются ссылки на разделяемые объекты, содержащие сообщения.
· Третий тип - быстрый LPC – используется графическими подсистемами Win32.
Рассмотрим структуру сообщения LPC, описанную на языке Си:
typedef struct _LPC_MESSAGE_HEADER {
// длина тела сообщения
USHORT DataLength;
// длина сообщения с заголовком
USHORT TotalLength; /
/ тип сообщения
USHORT MessageType;
USHORT DataInfoOffset;
// уникальный идентификатор процесса, пославшего сообщение
ULONG ProcessId;
уникальный идентификатор потока, пославшего сообщение
ULONG ThreadId;
// идентификатор сообщения
ULONG MessageId;
ULONG CallbackId;
} LPC_MESSAGE_HEADER, *PLPC_MESSAGE_HEADER;
Менеджер ввода-вывода в executive. Менеджер ввода-вывода отвечает за следующие компоненты и действия ОС:
· Файловые системы
· Управление кэш-памятью
· Драйверы устройств
· Сетевые драйверы.
Менеджер ввода-вывода следит за тем, какие файловые системы загружены, и управляет буферами для запросов на ввод-вывод.
Он также взаимодействует с менеджером виртуальной памяти для обеспечения ввода-вывода в файлы, отображаемые в память.
Менеджер ввода-вывода управляет кэш-менеджером, который обеспечивает кэширование для всей системы ввода-вывода.
Менеджер ввода-вывода поддерживает как синхронные, так и асинхронные операции, обеспечивает тайм-ауты для драйверов, поддерживает механизмы для вызова одного драйвера другим.
Схема файлового ввода-вывода в Windows изображена на рис. 5.
Рис. 5.Файловый ввод-вывод в Windows .
Монитор безопасности в executive. Объектно-ориентированная архитектура Windows обеспечивает использование единого механизма для контроля доступа во время выполнения и аудита всех объектов системы.
Каждый раз, когда процесс получает ссылку на объект, монитор безопасности проверяет маркер безопасности процесса и список управления доступом к объекту для проверки, имеет ли процесс необходимые права.
Менеджер Plug-and-Play. Менеджер Plug-and-Play (PnP)используется для распознавания изменений в конфигурации оборудования и адаптации к ним (установки соответствующих драйверов).
Когда добавляются новые устройства (например, PCI или USB), менеджер PnP загружает соответствующий драйвер.
Менеджер PnP также следит за ресурсами, используемыми каждым устройством.