В 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 Academic Program, кроме WRK и материалов для преподавателей (Instructor Supplement), доступны любому желающему. WRK и Instructor Supplement можно получить, подтвердив свой статус преподавателя или по подписке Microsoft Developer Network Academic Alliance (MSDN AA).
Microsoft, предоставляя академическому сообществу исходные коды ядра Windows, преследовало следующие цели [11]:
Исследовательское ядро Windows включает более 800 000 строк исходного кода, в основном на языке программирования C, но есть файлы и на ассемблере. В процессе подготовки к опубликованию исходный код в некоторых местах был упрощен, а комментарии улучшены [11].
На рис.5.1 представлена схема, отражающая покрытие исходным кодом WRK компонентов ядра [13].
(рис 5.1) Покрытие исходным кодом WRK компонентов ядра (выделено серым цветом)
Как видно из рисунка, исходные коды практически всех компонентов исполнительной системы (кроме диспетчера Plug-and-Play и диспетчера электропитания) и ядра представлены в WRK.
В состав 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:
В таблице 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 | функции для |
| rtl | Rtl | Run-Time Library | библиотека функций времени выполнения |
| se | Se | Security manager | диспетчер безопасности |
| wmi | Wmi | Windows Management Instrumentation | поддержка WMI – инструментальные средства управления Windows |
Кроме перечисленных в таблице, в WRK есть ещё два важных компонента:
Приведем ещё один префикс часто встречающихся в WRK функций – Nt. Функции ядра с этим префиксом входят в Native API, они экспортируются Ntdll.dll, их можно вызывать из пользовательского режима. Часто функции с префиксом Nt соответствует WinAPI функция, и, например, при вызове WinAPI функции CreateProcess происходит вызов функции NtCreateProcess.
В Институте программной инженерии Хассо Платтнера Университета г. Потсдама (Hasso-Plattner-Institute for Software Engineering at University Potsdam) Александром Шмидтом (Alexander Schmidt) и Михаэлем Шёбелем (Michael Schobel) была создана HTML документация по WRK с использованием генератора документации Phoenix Cross Reference
http://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8668
HTML документация по WRK включает 4 раздела: функции (functions), типы данных (types), синонимы (typedefs) и макросы (macros) (рис.5.2).
(рис 5.2) HTML документация по Windows Research Kernel
По информации, предоставляемой HTML документацией, WRK содержит 4167 функций и 1957 типов данных.
В данной лекции представлен обзор исследовательского ядра Windows (Windows Research Kernel, WRK). Перечислены компоненты WRK. Предложено использование HTML документации по WRK.
В следующей лекции будут рассмотрены основные объекты, отвечающие за работу приложений – процессы и потоки.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.