Опубликован: 27.05.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Вятский государственный гуманитарный университет
Лекция 5:

Исследовательское ядро Windows

Аннотация: Windows Academic Program. Структура Windows Research Kernel. HTML‑документация по WRK.

Windows Academic Program

В 2006 году корпорация Microsoft в рамках академической программы Windows (Windows Academic Program) сделала доступной для академических организаций исходный код исследовательского ядра Windows (Windows Research Kernel, WRK) [15]. WRK основано на коде операционных систем Windows Server 2003 SP1 и Windows XP x64 [13; 11].

Кроме WRK в академическую программу Microsoft входят следующие компоненты [15]:

  • учебные материалы по курсу операционных систем на основе Windows XP – Windows Internals Curriculum Resource Kit (CRK). Составлены в соответствии с рекомендациями ACM/IEEE по преподаванию курса "Операционные системы" (Operating systems, OS) [4]. Материалы включают презентации лекций, указания к лабораторным работам (в том числе лабораторные работы для Windows 7), задания, тесты, а также материалы для преподавателей (Instructor Supplement);
  • среда ProjectOZ для экспериментального исследования ядра Windows;
  • описание опыта университетов (Faculty Experiences) по преподаванию в рамках академической программы Microsoft.

Все компоненты Windows Academic Program, кроме WRK и материалов для преподавателей (Instructor Supplement), доступны любому желающему. WRK и Instructor Supplement можно получить, подтвердив свой статус преподавателя или по подписке Microsoft Developer Network Academic Alliance (MSDN AA).

Microsoft, предоставляя академическому сообществу исходные коды ядра Windows, преследовало следующие цели [11]:

  • облегчить студентам и преподавателям сравнение Windows с другими операционными системами;
  • предоставить студентам возможность для изучения исходных кодов ядра и создания собственных проектов на их основе;
  • поддержать исследования и публикации по внутреннему устройству Windows;
  • содействовать разработке учебников по операционным системам на основе ядра Windows;
  • упростить лицензирование.

Исследовательское ядро Windows включает более 800 000 строк исходного кода, в основном на языке программирования C, но есть файлы и на ассемблере. В процессе подготовки к опубликованию исходный код в некоторых местах был упрощен, а комментарии улучшены [11].

На рис.5.1 представлена схема, отражающая покрытие исходным кодом WRK компонентов ядра [13].

Покрытие исходным кодом WRK компонентов ядра (выделено серым цветом)

Рис. 5.1. Покрытие исходным кодом WRK компонентов ядра (выделено серым цветом)

Как видно из рисунка, исходные коды практически всех компонентов исполнительной системы (кроме диспетчера Plug-and-Play и диспетчера электропитания) и ядра представлены в WRK.

Структура Windows Research Kernel

В состав WRK, кроме собственно исходных кодов ядра Windows, входят руководство по ядру Windows NT (NT OS/2 Design Workbook) и решение (solution) Visual Studio 2008 (WRK.sln) (которое можно преобразовать для более новых версий Visual Studio).

Руководство по ядру Windows NT было составлено в конце 1980 х – начале 1990 х гг., когда в Microsoft велась разработка новой операционной системы Windows NT с рабочим названием "NT OS/2" сначала совместно с IBM, затем самостоятельно. Руководство содержит ценную информацию по структуре и функциям ядра Windows, а также раскрывает соображения, которые привели разработчиков к тем или иным архитектурным решениям.

Главные компоненты WRK находятся в папке WRK-v1.2\base\ntos и включают, в основном описания и определения функций и структур данных. В ядре Windows при именовании функций используются определенные соглашения [5; 2]. Название функции обычно строится по следующей схеме:

<Префикс><Операция><Объект>

где <Префикс> обозначает модуль, которому принадлежит функция, <Операция> – действие, совершаемое над <Объектом>.

Например, рассмотрим функцию KeStartThread:

  • Ke (префикс) – функция входит в состав ядра;
  • Start (операция) – функция начинает выполнение объекта;
  • Thread (объект) – объектом является поток.

В таблице 5.1 приведены основные компоненты WRK (см. соответствие с компонентами на рис.5.1) с указанием префиксов входящих в их состав функций.

Таблица 5.1. Компоненты WRK и префиксы функций
Компонент WRK Префикс функций Название компонента на англ. языке Название компонента на русском языке
cache Cc Cache manager диспетчер кэша
config Cm Configuration manager диспетчер конфигурации
dbgk Dbgk Debugging Framework подсистема отладки
ex Ex Executive support routines функции поддержки исполнительной системы – синхронизация, таймеры, структуры данных исполнительной системы, системная информация
fsrtl FsRtl File system driver run-time library библиотека функций поддержки файловой системы времени выполнения
io Io Input/Output manager диспетчер ввода-вывода
ke Ke Kernel ядро
lpc Lpc Local Procedure Call механизм вызова локальных процедур
mm Mm Memory manager диспетчер памяти
ob Ob Object manager диспетчер объектов
perf Perf Performance функции для сбора информации о производительности системы
ps Ps Process manager диспетчер процессов
raw Raw Raw File System функции для Raw File System1Raw File System ("сырая" файловая система) – если Windows не может распознать файловую систему диска, для него назначается Raw File System (драйвер которой реализован в ядре) и все запросы чтения/записи файлов к такому диску отклоняются.
rtl Rtl Run-Time Library библиотека функций времени выполнения
se Se Security manager диспетчер безопасности
wmi Wmi Windows Management Instrumentation поддержка WMI – инструментальные средства управления Windows

Кроме перечисленных в таблице, в WRK есть ещё два важных компонента:

  • inc – общедоступные заголовочные файлы;
  • init – функции инициализации системы.

Приведем ещё один префикс часто встречающихся в WRK функций – Nt. Функции ядра с этим префиксом входят в Native API, они экспортируются Ntdll.dll, их можно вызывать из пользовательского режима. Часто функции с префиксом Nt соответствует WinAPI функция, и, например, при вызове WinAPI функции CreateProcess происходит вызов функции NtCreateProcess.

HTML документация по WRK

В Институте программной инженерии Хассо Платтнера Университета г. Потсдама (Hasso-Plattner-Institute for Software Engineering at University Potsdam) Александром Шмидтом (Alexander Schmidt) и Михаэлем Шёбелем (Michael Schobel) была создана HTML документация по WRK с использованием генератора документации Phoenix Cross Reference (PXR)2http://www.dcl.hpi.uni-potsdam.de/research/WRK/2010/09/introducing-pxr-a-cross-referencing-documentation-compiler/index.html . Данная документация доступна для преподавателей по следующей ссылке:

http://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8668

HTML документация по WRK включает 4 раздела: функции (functions), типы данных (types), синонимы (typedefs) и макросы (macros) (рис.5.2).

HTML документация по Windows Research Kernel

Рис. 5.2. HTML документация по Windows Research Kernel

По информации, предоставляемой HTML документацией, WRK содержит 4167 функций и 1957 типов данных.

Резюме

В данной лекции представлен обзор исследовательского ядра Windows (Windows Research Kernel, WRK). Перечислены компоненты WRK. Предложено использование HTML документации по WRK.

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

Контрольные вопросы

  1. Расскажите о составе академической программы Microsoft.
  2. Что такое Windows Research Kernel?
  3. Какие компоненты ядра присутствуют в Windows Research Kernel?
  4. Перечислите основные компоненты Windows Research Kernel.
  5. Какие префиксы используются в названиях функций WRK?
  6. Какая информация имеется в HTML документации по WRK?
Фанис Гильманов
Фанис Гильманов
Россия, г. Нижнекамск
chunhu wu
chunhu wu
Аргентина, jhkh jk k