Исследовательское ядро Windows
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].
Как видно из рисунка, исходные коды практически всех компонентов исполнительной системы (кроме диспетчера 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) с указанием префиксов входящих в их состав функций.
Компонент 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 документацией, WRK содержит 4167 функций и 1957 типов данных.
Резюме
В данной лекции представлен обзор исследовательского ядра Windows (Windows Research Kernel, WRK). Перечислены компоненты WRK. Предложено использование HTML документации по WRK.
В следующей лекции будут рассмотрены основные объекты, отвечающие за работу приложений – процессы и потоки.
Контрольные вопросы
- Расскажите о составе академической программы Microsoft.
- Что такое Windows Research Kernel?
- Какие компоненты ядра присутствуют в Windows Research Kernel?
- Перечислите основные компоненты Windows Research Kernel.
- Какие префиксы используются в названиях функций WRK?
- Какая информация имеется в HTML документации по WRK?