Основы современных операционных систем

Практическое изучение Windows Research Kernel

Показывать лекцию целиком

Аппаратура и программные инструменты, необходимые для лабораторной работы

Настольный или портативный компьютер с одной из версий операционной системы Microsoft Windows

Продолжительность лабораторной работы

2 академических часа

Обзор Windows Research Kernel

Пакет WRK включает исходный код ядраWindows XP x64 и Windows Server 2003 SP1 с окружением для сборки и тестирования экспериментальных версий ядра Windows для использования в целях изучения и преподавания.

WRK включает исходные коды для следующих компонент:

  • Processes – Процессы
  • Threads -Потоки
  • LPC – Локальные вызовы процедур
  • Virtual memoryВиртуальная память
  • Scheduler - Планировщик
  • Object manager – Менеждер объектов
  • I/O manager – Менеджер ввода-выводв
  • Synchronization - Синхронизация
  • Worker threads – Рабочие потоки
  • Kernel heap manager – Менеджер кучи ядра
  • Прочая функциональность ядра (NTOS)
  • Пакет WRK полезен при разработке проектов, позволяющих студентам исследовать принципы операционной системы с использованием исходных кодов ядра. Он поддерживает построение экспериментов и проектов на основе модификации ядра Windows , обеспечивая высокоуровневые методы обучения и исследования и лучшее понимание архитектуры и реализации Windows.

    WRK - Детали

    Пакет Windows Research Kernel содержит исходные коды ядра Windows (NTOS).

    NTOS реализует основные функции ОС для:

  • Управления процессами
  • Управления потоками
  • Управления виртуальной памятью и кэш-памятью
  • Управления вводом-выводом
  • Управления реестром
  • Функцй исполнительной подсистемы ядра (executive), таких, как куча ядра и синхронизация
  • Менеджера объектов
  • Механизма локального вызова процедур
  • Монитора безопасности
  • Низкоуровневого управления процессором (планирование потоков, асинхронные и отложенные вызовы процедур, обработка прерываний, обработка исключений)
  • Компонента Hardware Abstraction Layer, файловые системы, сетевые стеки и драйверы устройств реализованы отдельно от NTOS и загружаются в режиме ядра как динамически линкуемые библиотеки. Исходные коды для этих динамических компонент не включены в WRK. Однако некоторые из них доступны в различных инструментальных наборах, опубликованных фирмой Microsoft, таких, как Installable File System Kit и Windows Driver Development Kit.

    Пакет WRK включает значительную часть исходных кодов ядра NTOS из самых ноых версий Windowsподдерживающих архитектуру x64. Исходные коды ядра, не включенные в WRK, относятся, главным образом, к компонентам Plug and Play (динамическому подключению устройств), управлению электропитанием, верификатору устройств, интерфейсу отладки ядра и виртуальной машине DOS (выполняющей DOS-приложения).

    Пакет WRK предназначается для преподавателей, работающих в области операционных систем, разрабатывающих курсы и учебники и желающих включить в них информацию о ядре Windows, базирующуюся на реальных исходных кодах.

    Пакет WRK включает окружение для сборки и тестирования и бинарные коды для отсутствующих компонент, которые могут быть использованы для сборки полнофункционального ядра NTOS, инсталлируемого в системах Windows Server 2003 для x86/x64 и Windows XP x64.

    Скачивание и установка WRK

    Скачайте по ссылке [2] пакет Windows Research Kernel и распакуйте полученный архив.

    Структура директорий WRK

    Войдите в базовую директорию WindowsResearchKernel-WRK.

    Вы увидите в Windows Explorer структуру директорий пакета WRK ( рис 39.1):

    (рис 39.1) Структура директорий пакета WRK

    Файл README содержит краткое описание структуры пакета.

    Файл LICENSE содержит подробное описание лицензии, на основе которой доступен WRK.

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

    Откройте файлы README и LICENSE и ознакомьтесь с их содержимым.

    Весь материал для изучения в пакете WRK представлен на английском языке.

    Ознакомьтесь с содержимым базовых директорий пакета WRK:

  • Директория NTDesignWorkbook содержит уникальный материал – фактически это подробные спецификации архитектуры всех компонент ядра Windows. Это – "святая святых" фирмы Microsoft, как и сами исходные коды ядра Windows. Приведение в доступный для изучения вид этих спецификаций для академического сообщества программистов потребовало, по признанию специалистов Microsoft, нескольких лет работы.
  • Директория VirtualPC2004S1 содержит дистрибутив инструмента Microsoft под названием Microsoft Virtual PC. Данный инструмент позволяет организовать на Вашем компьютере виртуальную машину, в которую Вы можете инсталлировать любую операционную систему, в том числе – экспериментальную ОС, являющуюся результатом Ваших экспериментов в WRK. В качестве отдельного практического занятия, можете инсталлировать Microsoft Virtual PC и в полученную виртуальную машину инсталлируйте другую операционную систему, например, другую версию Windows или какую-либо версию Linux.
  • Директория WRK-v1.2 содержит собственно исходные коды ядра Windows. Их струкуру подробнее рассмотрим немного позже.
  • Ознакомление со структурой исходных кодов ядра Windows

    Войдите в директорию WRK-v1.2.

    Изучите структуру директорий ядра, изображенную на рис 39.2 , краткое описание которой приведем ниже.

    (рис 39.2) Структура директорий исходного кода исследовательского ядра Windows

    Директория public\ содержит include (заголовочные, .h) – файлы, используемые во всем исходном коде системы.

    Например, заголовочный файл public\ddk\inc\mountdev.h содержит описание интерфейсов между точкой монтирования (mount point) и монтируемыми устройствами. Ознкомьтесь с содержимым файла. Вы убедитесь, что он (как и другие коды WRK) хорошо самодокументирован, однако для более глубокого понимания требуется подробное изучение на основе книги .

    Директория tools содержит инструменты для сборки из исходных кодов, например, утилиту nmake. Ознакомьтесь с содержимым данной директории.

    Ознакомление с базовой структурой исходных кодов ядра

    Директория base\ntos\ содержит исходные коды ядра NTOS.

    Структура этой директории изображена на рис 39.3 .

    (рис 39.3) Структура директории NTOS – базовой директории с исходными кодами ядра Windows

    Первичные компоненты исходных кодов NTOS, включенные в пакет WRK, организованы следующим образом:

  • cache\ - менеджер управления кэш-памятью
  • config\ - реализация рестра
  • dbgk\ - поддержка отладки в пользолвательском режиме
  • ex\ - функции executive (куча ядра, синхронизация, установка времени)
  • fsrtl\ - поддержка времени выполнения для файловой системы
  • io\ - планировщик, управление центральным процессором, низкоуровневая синхронизация
  • , )
  • mm\ - менеджер виртуальной памяти
  • ob\ - менеджер объектов ядра
  • ps\ - поддержка процессов и потоков
  • se\ - функции безопасности
  • wmi\ - инструментирование для управления Windows
  • inc\ - заголовочные файлы, используемые в NTOS
  • rtl\ - поддержка ядра времени выполнения
  • init\ - инициализация ядра
  • Например, файл ob\obinit.c содержит исходный код инициализации компоненты OB (управление внутренними объектами) ядра Windows.

    Ознакомьтесь с его содержимым.

    Мы закончили краткое ознакомление со структурой WRK.

    Задание повышенной сложности: Экспериментальная сборка Windows из исходных кодов

    Для тех, кто уже имеет опыт сборки больших проектов и использования утилиты make, а также хорошо владеет техническим английским языком, предлагаем более сложное задание – сборку ядра Windows из исходных кодов.

    Подробная инструкция по сборке дана в файле README базовой директории.

    Приводим ее ниже:

    Инструкция по сборке Windows

    Building/deploying a WRK kernel for x86 [or amd64]
         
        0. Copy the WRK into a directory, say %wrk%.  
        1. set arch=x86 [or amd64]
        2. path %wrk%\tools\%arch%;%path%
        3. cd %wrk%\base\ntos
        4. nmake -nologo %arch%=
            will produce kernel files in BUILD\EXE\%arch%
            [wrkx86.* or wrkx64.*]
        5. copy the kernel to %SystemRoot%\system32\
        6. if x86, find the Multi-processor version of hal.dll [see below]
        7. add a line to C:\boot.ini of the target system
            to boot this kernel and the MP hal [see below]
        8. reboot and select the boot option for the new kernel
        9. you will boot up on a kernel you built/linked yourself!
            [always keep the original boot.ini line and kernel/hal available so you
             can still boot your system if something fails with your WRK kernel modifications]
        10. set up a debugger [see below]
         
    Multi-processor hal (x86 only, amd64 hals are all MP)
        All hals are renamed hal.dll, so you have to use the link command to
        see what type of hal hal.dll really is:
            link -dump -all hal.dll | findstr pdb
        The MP hals have an 'm' in the native name of the hal, e.g. halmacpi.dll
        You may already have an MP hal installed on UP systems, due to hyperthreading.
        If the hal isn't MP, you need to find the MP hal that corresponds to the current hal
        the target system does have, i.e. 
            halacpi.dll  -> halacpim.dll    ; ACPI PIC-based PC  [used by VirtualPC]
            halaacpi.dll -> halmacpi.dll    ; ACPI APIC-based PC
            halapic.dll  -> halmps.dll      ; MPS
        Look in the WRK WS03SP1HALS\x86 directory for the MP hal you need.
         
    Boot.ini
        Edit boot.ini (you may have to use attrib -h -s -r first)
        Copy the line for the first operating system listed to the end of the file and edit it.
            [boot loader]
            timeout=30
            default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
            [operating systems]
            multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Standard"
            multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="test" /kernel=wrkx86.exe /hal=halmacpi.dll
        Note that the filenames must be short (8.3) names.
        You can add additional options for debugging (as specified in the WinDbg/KD help).
         
    Debugging WRK
        The WinDBG/KD debuggers will work with the WRK.  The documentation is pretty thorough, and
        includes information about how to debug across a serial port, locally (examining kernel 
        data from user-mode), and debugging kernels running on VirtualPC.
         
        Version 6.6.3.5 of the WinDBG/KD debuggers is available with the Curriculum Resource Kit
        Tools ("CurriculumResourceKit-CRK\CRKTools\Debugging Tools" directory on the CD).  
        The latest version of the Windows Debugging Tools can be downloaded from
        http://www.microsoft.com/whdc/devtools/debugging.

    Пояснения к инструкции по сборке Windows

    HAL (Hardware Abstraction Layer) – компонента ядра Windows, реализующая уровень абстрагирования от аппаратуры. Использование подобной компоненты – многолетняя традиция Microsoft. Данный метод применен также в Microsoft Office и в академической версии .NET (Rotor).

    Curriculum Resource Kit (CRK) – еще одна обучающая компонента для изучения ядра Windows, также предоставляемая фирмой Microsoft свободно для целей изучения и исследований. Ее структура и ссылка на ее дистрибутив описаны в . CRK содержит набор утилит, позволяющих иследовать различные особенности работы ОС. Необходимые пояснения даны также в книге .

    CD (компакт-диск), упоминаемый в инструкции, распространялся в 2006 – 2007 гг. фирмой Microsoft среди преподавателей университетов.

    В частности, такой диск имеется и у автора курса.

    Структура академического диска приведена на рис 39.4 .

    (рис 39.4) Структура академического диска Microsoft с материалами для изучения Windows

    Желаем успеха в изучении архитектуры Windows на основе пакетов WRK и CRK!

    Предупреждаем, что это очень интересно, но очень непросто, требует значительного времени, специальных знаний и некоторого опыта в разработке и сопровождении больших программных проектов. Однако трудные задачи решать интереснее, чем легкие – на этом пути Вас ждет успех!

    Дальнейшая информация – в источниках , .

    Вернуться к учебному плану