Спонсор: Microsoft
Опубликован: 13.11.2010 | Уровень: для всех | Доступ: платный | ВУЗ: Санкт-Петербургский государственный университет
Лекция 27:

Обзор архитектуры и возможностей систем Windows 2000/XP/2003/Vista/2008/7

< Лекция 26 || Лекция 27: 123 || Лекция 28 >

Обработка прерываний в ядре

Ядро обеспечивает обработку прерываний, если исключения и прерывания генерируются аппаратурой и программным обеспечением. Таким образом, в Windows 2000 введены средства обработки исключений (exceptions) – более высокоуровневый механизм обработки ошибок, чем сигналы в UNIX.

Исключения, которые не могут быть обработаны программно, обрабатываются диспетчером исключений ядра ОС.

Диспетчер прерываний в ядре обрабатывает прерывание либо путем вызова подпрограммы, обслуживающей прерывание (например, драйвера устройства), либо путем вызова внутренней подпрограммы ядра.

Уровни запросов на прерывания в Windows 2000 приведены в таблица 1.

Таблица 1. Уровни запросов на прерывания в Windows 2000
уровни прерываний типы прерываний
31 аппаратный контроль или ошибка шины
30 отказ электропитания
29 межпроцессорная нотификация (запрос к активности другого процессора, например, для диспетчеризации или обновления TLB - кэша страниц)
28 часы (используется для отслеживания времени)
27 профиль
3-26 традиционные IRQ-прерывания
2 диспетчеризация или отложенный вызов процедуры (DPC) - ядро
1 асинхронный вызов процедуры (АРС)
0 пассивно

Ядро использует блокировщики (spin locks,буквально – вертящиеся замки),находящиеся в основной памяти, для взаимного исключения процессов.

Для иллюстрации приведем код на ассемблере x86 реализации spin lock:

mov eax, spinlock_address 
mov ebx, SPINLOCK_BUSY 
wait_cycle: lock xchg [eax], ebx 
cmp ebx, SPINLOCK_FREE 
jnz wait_cycle ;
<работа с разделяемым ресурсом – критическая секция> 
mov eax, spinlock_address 
mov ebx, SPINLOCK_FREE 
lock xchg [eax], ebx

Исполнительная подсистема (executive) ОС Windows 2000

Рассмотрим более подробно исполнительную подсистему (executive) Windows 2000.

Менеджер объектов.Как уже было сказано, Windows 2000 использует объекты для управления всеми своими службами и для представления сущностей. Менеджер объектов исполнительной подсистемы управляет использованием всех объектов. Основные функции менеджера объектов:

  • Генерация object handle - ссылки на объект ядра Windows 2000;
  • Выполнение проверок безопасности при работе с объектом;
  • Слежение за использованием каждого объекта процессами.

Объекты управляются стандартным набором методов: create, open, close, delete, query name, parse, security.

Модуль executive поддерживает именование объектов. Имя может быть постоянным или временным. Имена объектов структурируются как имена путей доступа к файлам в MS-DOS или UNIX.

Реализованы объекты-символические ссылки, которые подобны символическим ссылкам в UNIX и дают возможность иметь несколько синонимов для одного файла.

Процесс получает ссылку на объект при его создании, при открытии уже существующего объекта, при получении скопированной ссылки от другого процесса, либо путем наследования ссылки от процесса-родителя.

Каждый объект защищен списком управления доступом.

Менеджер виртуальной памяти в executive.При проектировании менеджера виртуальной памяти предполагалось, что процессор поддерживает для отображения виртуальных адресов в физические механизм страничной организации, прозрачный кэш для многопроцессорных систем, а также алиасы для виртуальных адресов.

Менеджер виртуальной памяти в Windows 2000 использует страничную организацию с размером страницы 4 килобайта.

Используется двухуровневая схема выделения памяти:

  1. На первом шаге резервируется часть адресного пространства процесса.
  2. На втором шаге данное выделение поддерживается выделением пространства в файле откачки (paging file).

Схема распределения виртуальной памяти в Windows 2000 приведена на рис. 27.2.

Схема распределения виртуальной памяти в Windows 2000.

увеличить изображение
Рис. 27.2. Схема распределения виртуальной памяти в Windows 2000.

Как видно из схемы, используются иерархические двухуровневые таблицы страниц.

Трансляция виртуальных адресов в Windows 2000 использует несколько структур данных.

Каждый процесс имеет справочник страниц (page directory),содержащий 1024 элемента справочника страниц размером по 4 байта.

Каждый элемент справочника страниц ссылается на таблицу страниц, которая содержит 1024 элемента таблицы страниц (page table entries - PTEs) размером по 4 байта.

Каждый PTE ссылается на фрейм страницы (4 KB) в физической памяти.

Ссылка на элемент всегда занимает 10 битов (0..1023). Это свойство используется при трансляции виртуальных адресов в физические.

Страница может находиться в следующих состояниях: valid (корректна), zeroed (обнулена), free standby (свободна), modified (модифицирована), bad (некорректна).

На рис. 27.3 изображена структура виртуального адреса в Windows 2000.

Структура виртуального адреса в Windows 2000.

Рис. 27.3. Структура виртуального адреса в Windows 2000.

В виртуальном адресе 10 битов для page directory entry, 10 битов для page table entry, 12 битов для смещения в байтах на странице.

На рис. 27.4 изображена структура элемента таблицы страниц.

Структура элемента таблицы страниц в Windows 2000.

Рис. 27.4. Структура элемента таблицы страниц в Windows 2000.

В элементе 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 2000 изображена на рис. 27.5.

Файловый ввод-вывод в Windows 2000.

увеличить изображение
Рис. 27.5. Файловый ввод-вывод в Windows 2000.

Монитор безопасности в executive.Объектно-ориентированная архитектура Windows 2000 обеспечивает использование единого механизма для контроля доступа во время выполнения и аудита всех объектов системы.

Каждый раз, когда процесс получает ссылку на объект, монитор безопасности проверяет маркер безопасности процесса и список управления доступом к объекту для проверки, имеет ли процесс необходимые права.

Менеджер Plug-and-Play.Менеджер Plug-and-Play (PnP) используется для распознавания изменений в конфигурации оборудования и адаптации к ним (установки соответствующих драйверов).

Когда добавляются новые устройства (например, PCI или USB), менеджер PnP загружает соответствующий драйвер.

Менеджер PnP также следит за ресурсами, используемыми каждым устройством.

< Лекция 26 || Лекция 27: 123 || Лекция 28 >
Гульжан Мурсакимова
Гульжан Мурсакимова
Василий Четвертаков
Василий Четвертаков
Константин Леденев
Константин Леденев
Россия
Олег Равков
Олег Равков
Россия