ROS Kernel

Материал из Русский WINE
Перейти к: навигация, поиск

Ядро ReactOS

Ядро NT представляет из себя микроядро, поддерживает различные архитектуры (включая PPC, Alpha, X86-64, Itanium, MIPS) и используется в Windows NT, XP, 2003 и Longhorn. Его изначальными создателями являются Дэйв Катлер, Лу Пераццоли, Стив Вуд, Дэррил Хэвенс, Гэри Кимура, Том Миллер, Джим Келли и некоторые другие, в настоящий момент над ним работает намного большая команда. Если первую версию ядра можно было назвать настоящим микроядром, то в последующие версии было добавлено довольно много компонентов, предназначенных для поддержки подсистемы Win32 или выходящих за рамки микроядра; они включают в себя специфичные для win32k обратные вызовы, встроенные API для поддержки WMI, API для поддержки сети (в действительности в ядро встроены только подпрограммы для конвертирования IP->String), и т.д.

Архитектура ядра ReactOS основана на архитектуре ядра Microsoft Windows 2003 Server. В ней присутствуют асинхронные вызовы процедур (APC), отложенные вызовы процедур (DPC), процессы, потоки, мьютексы, семафоры, спин-блокировки, таймеры, и прочее.

Планировщик

Планировщик часто считается наиболее важной частью ядра. Планировщик ядра NT является планировщиком потоков, это означает, что он планирует именно потоки, а не процессы. Планировщик NT использует высокомасштабируемый дизайн упреждающей мультизадачности. Новый поток планируется при следующем системном прерывании, однако Отложенный Вызов Процедуры (DPC) всё равно будет выполнен. Время, в течении которого этот поток будет работать, называется "квант", и окончание кванта обычно означает, что будет запланирован новый поток. Потоки в NT имеют 3 основных состояния: Выполняется, Готов, Запланирован, и потоки всех трёх категорий могут быть опережены потоком с более высоким приоритетом, или прерваны DPC или APC в случае присутствия правильного окружения. По причине этой "нестабильности", разработчики ядра NT (а также пользовательского режима, хотя это менее заметно) не могут полагаться на то, что их поток будет контролировать CPU настолько долго, насколько это необходимо. Именно поэтому, в ОС имеются различные блокировки, синхронизации, уровни приоритета и средства маскирования прерываний. Эти средства легко позволяют производить блокировку ресурса, так что новый поток не сможет ему помешать, и обеспечивают невозможность прерывания нового потока при помощи APC, всё это не позволит потоку вытеснить (используя высший уровень приоритета), или даже полностью отключить любые системные прерывания и переключение задач поднятием уровня IRQL до максимума, тем самым маскируя все прерывания. Поток простоя (Idle Thread) - это поток по умолчанию, на который будет произведено переключение, если Планировщик не сможет обнаружить подходящий поток. Это также поток, который используется при первой фазе инициализации в то время, пока создаётся начальный системный поток.

Диспетчер

Диспетчером называется компонент ядра, который берёт на себя обработку объектов диспетчера, которые используются для синхронизации и оповещения. Диспетчер отвечает за оповещение этих объектов при их необходимости, поддержку ожидания этих объектов, управление ожидающими объектами и блокировкой их ожидания и выполняет само ожидание. Эти операции являются частью диспетчеризации. Их ни в коем случае не нужно путать с планированием.

  • Событие - Действие, начатое, как правило, вне рамок программы.
  • Семафор - Классический способ ограничения доступа к общим ресурсам.
  • Поток - Самая малая функциональная единица кода, выполняющегося на центральном процессоре.
  • Таймер - Счетчики, которые либо увеличиваются либо уменьшаются на определённой фиксированной частоте.
  • Мьютекс - Объект, позволяющий нескольким потокам получать синхронный доступ к ресурсам и избегать одновременного использования общих ресурсов.

Исполнительная подсистема

Исполнительная подсистема NT - это подсистема, обеспечивающая драйверам высокоуровневый доступ к объектам диспетчера ядра, а также поддержку высокоуровневой функциональности процессов и потоков, такой, как маркеры (управляемые подсистемой защиты), объекты, дескрипторы, квоты, WIN32K, задания, порты (управляемые подсистемой вызова локальных процедур (LPC)) и т.д. Она содержит в себе интерфейс-оболочку для всех объектов диспетчера ядра и предоставляет несколько своих, таких, как быстрый мьютекс (fast mutex), обратные вызовы (callbacks) и блокировки с заталкиванием указателя (pushlocks). Также, она предоставляет высокоуровневый доступ к некоторым структурам управления памятью и функциям, например, выделению пула.

См. также

ReactOS
Search.png
Доклады
О ReactOSARWINSSЧеЗа
Информация Новости Выпуски новостейПереводы блоговНовости проектаВидеоReactOS на ХабреUSB от Вадима Галянта
Разработка Руководство по программированиюОтсутствующая функциональностьВетви разработкиКомпоненты системыReactOS и WineПлан работRoadmap ядра by VgalРазработчикиСовместимость с dll WindowsНаиболее значимые изменения за годИспользуемые проектыGoogle Summer of CodeИзвестные проблемы
Порты AMD64ARMXboxPowerPC
Компоненты Файловые системыРежим совместимостиОтчеты об ошибкахПечатьUSBЯдро
Загрузчик Восстановление MBRЗагрузка из GRUBПараметры загрузки
Прочее ARWINSSПриложения в ReactOSОформление ReactOSКоординаторы"Пасхальные яйца"Монетизация
Другое Типы ядерFreeWin95
Помощь
RAM-диск ReactOS по PXEс жесткого диска
Разработка Стиль написания кодаСтандарты RC-файловРабота с документациейВенгерская нотацияGNU Indent • [ Subversion : ветвислияниеиспользование TortoiseSVN ] • Основы переводаОтправка патчей
Репорты Отладка в VirtualBoxОтладка на экранДобавление программы в менеджер приложенийОтправка отчетов
Отладка Com0comGDBKdbgRossym.gdbRoswin.gdbWinDBGРуководство по WinDBGВключение трассировки ядраКоды DPRINTУдалённый отладчик ReactOS
Сборка CMakeRBuildФайлы RBuildАвтоматическое копирование файловСборка MINGW-w64Сборка модулейСреда сборки
Тестирование VirtualBoxVMwareQEMUHyper-VНеобходимый объём дискаПеренос файлов на виртуальный дискУстановка ReactOSУстановка драйверов
Сеть Общие папкиSambaNFS
Игры Установка DirectPlay
Обновление ReactOSЗагрузочная флешкаЧем можно помочь проектуСоздание нового пользователяЗвук и сеть в VirtualBoxСъемка и публикация видеоIRC-каналСторонние компонентыFAQReactOS как рабочая станцияReactOS и UEFI
Обзоры ОболочкаNTVDMWOWCommunity EditionИстория сайтаReactOS ServerКриптографияПО времен XP