ROS Kernel Roadmap Vgal

Материал из Русский WINE
Перейти к: навигация, поиск
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

https://jira.reactos.org/browse/CORE-16841

Roadmap ядра by Vgal

Сокращения:

  • MM - менеджер памяти
  • CC - менеджер системного кэша
  • PNP - менеджер plug and play
  • PO - менеджер электропитания
  • HAL - Hardware Abstraction Layer
  • ACPI — Advanced Configuration and Power Interface
  • PIC — Programmable Interrupt Controller
  • APIC — Advanced Programmable Interrupt Controller
  • UP — Uniprocessor
  • MP — Multiprocessor

Порядок разработки:

Почему такой порядок? Кажется логичнее было бы начать с HALAACPI. Для полноценной разработки драйвера NTFS (основной файловой системы для NT-совместимых систем) необходим функционал CC, который в свою очередь исользует функционал разделов памяти MM. Таким образом это будет "зелёным светом светофора" для разработки NTFS.

1 - MM и СС менеджеры:

Целесообразна совместная разработка, так как CC сильно зависит от MM. Btw: https://reactos.org/blogs/memory-manager-development/ так как необходимо вносить существенные изменения, и структуры секций несовместимы, то разработку вести в параллельных директориях "ntoskrnl\mm_new\" и "ntoskrnl\cache_new\" (дополнительный ключ для Cmake - "MM_CC_NEW"). Это не сломает текущёё ядро и будет более безопасно.

1.1.1 - основная задача на этом этапе - это избавление от _MEMORY_AREA, использование структур _SECTION и _SEGMENT вместо PROS_SECTION_OBJECT и _MM_SECTION_SEGMENT. Соответственно код для поддержки работы секций необходимо будет изменить и добавить отсутствующую функциональность.

1.1.2 - добавление инициализации системного кэша и недостающих функций для него.

1.1.3 - коррекция MmAccessFault() и всех связанных функций

1.1.4 - тестирование, отладка, форматирование кода

1.2.1 - СС менеджер, по-всей видимости, должен быть фактически обновлён, так использует другие структуры (оба - "cc" и "cache"). Пока у меня нет окончательного решения на этот момент. Анализ этой части пока не закончен.

1.2.2 - тестирование, отладка, форматирование кода

1.3.1 - на этом этапе должна быть реализована подкачка страниц. Этот этап может быть реализован позже.

1.3.2 - тестирование, отладка, форматирование кода

2 - HAL

Разработку вести в отдельных директориях "hal\halxxx\". Это позволит сконцентрировать усилия только на функционале и не отвлекаться на совмещении раличных версий (ускорение разработки). Также это более безопасно и не сломает другие HALs. RU http://vgal.ru.com/pic-ili-apic/

2.1.1 - ACPI APIC UP HAL (halaacpi.dll) изменить и добавить недостающий функционал для процессора и APIC контроллера.

2.1.2 - тестирование, отладка, форматирование кода

2.1.3 - после завершения разработки перевести "LiveCD" на halaacpi;

это можно разрабатывать после беты (или?):

2.3.1 - ACPI APIC MP HAL (halmacpi.dll) (нужна поддержка MP)

2.2.1 - ACPI PIC HAL (halacpi.dll)

2.4.1 - Non-ACPI PIC HAL (hal.dll)

2.5.1 - Non-ACPI APIC UP HAL (halapic.dll)

2.6.1 - Non-ACPI APIC MP HAL (halmps.dll)

2.7 - после окончания разработки объединить все HALs в один (если это будет необходимо).

3 - PNP менеджер

Так как необходимо вносить существенные изменения, то разработку вести в параллельной директории "ntoskrnl\pnp_new\" (дополнительный ключ для Cmake - "PNP_NEW"). Это не сломает текущее ядро и будет более безопасно.

3.1 — добавить библиотеку arbiter;

3.2 — скорректировать и дополнить библиотеку RTL "rangelist.c" (отсутствует поддержка пересекающихся диапазонов);

3.3 - добавить\заменить Windows-совместимые Device Node Status Flags https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/device-node-status-flags

3.4 - переделать подсистему инициализации

3.5 - переделать подсистему нумерации устройств

3.6 - переделать подсистему удаления устройств

3.7 - переделать подсистему работы с аппаратными ресурсами

3.8 - проанализировать и возможно изменить подсистему интерфейса с User-mode PnP подсистемой

3.9 - тестирование, отладка, форматирование кода

4 - PO менеджер;

Это можно назвать или белым листом или чёрной дырой :)

Текущий функционал предельно минимален, так как для виртуальных машин он не обязателен, UNIMPLEMENTEDs гораздо больше чем IMPLEMENTED... Нужен анализ и добавление необходимого функционала, а также корректировка процедуры завершения работы ОС.

5 - Драйверы;

С драйверами также имеются проблемы:

Также есть проблемы с драйверами:

Проверка совместимости драйверов между ОС:

Спасибо Андрею Шаталову за таблицу и всем, кто ее заполнил (столбец «Проверено»)

5.1 - для драйвера pcix требуется arbiter-библиотека, этот драйвер должен стать основным вместо текущего pci

5.2 - для драйвера «acpi» необходимо добиться совместимости с NT, в частности, из DriverEntry () сделать вызов HalInitPowerManagement () для создания интерфейса с HAL.

Как работают базовые диски и тома - https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc739412(v=ws.10)

5.3 - добавить "drivers\storage\ftdisk.sys"

5.4 - добавить "drivers\storage\partmgr.sys"

5.5 - добавить недостающий функционал в NTFS, а также возможность загрузки ОС с разделов NTFS.

Все это сделано для одной цели: сделать ReactOS не только «ОС для Virtual Box».

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