ARWINSScc2010
Содержание
Тезисы доклада
О ReactOS в общем (5 минут)
1.1. Реализация архитектуры NT с открытым кодом
1.2. Зачем клонировать NT?
- Прогрессивная архитектура — переход от модели «всё — файл» к модели «всё — объект» (кратко о том, что такое объект в NT)
- Архитектура подсистем, разные API в рамках одной ОС (кратко о POSIX и OS/2 в Win)
- Богатый парк драйверов
- Богатый парк прикладных приложений
1.3. Что уже есть?
- Текущее ядро сравнительно стабильно
- Свои драйверы VGA, PCI, SATA, PS/2 (мин. набор, уже есть и работает)
- Звуковая и сетевая подсистема
- Win32 позволяет запускать многие приложения
1.4. Что будет?
- Ядро: менеджер кэша: ускорение и в перспективе NTFS, ext2/3 и т.д.
- Развивается и улучшается PnP
- Активно пишется USB стек
- Портируем на x64 и ARM
- Улучшения Win32 (об этом отдельный рассказ)
ARWINSS – новая подсистема Win32 (12 минут)
2.1. Что такое подсистема? Подсистема Win32 и её реализации (Win32s, Win9x, WinCE, NT3, NT4(менеджер окон и GDI перенесли в ядро, sic), Wine).
2.2. Первоначальная попытка: как-в-XP. Проблемы:
- Реверс внутренних структур ядра: медленно, сложно, ненадежно.
- Очень сложное внутреннее устройство оригинала: наследие от Win16
- Сложность кооперации с Wine: принципиально разное внутреннее устройство
- Подробнее: в wine большая часть работы в usermode, в nt>4 – в ядре, перенос кода туда — сюда — проблема, не говоря уже о разных внутренних
интерфейсах
- Итог: многое работает, но за 10 лет разработки даже уровень совместимости Wine не был достигнут.
2.3. Новая попытка: Arwinss
- Задачи
- Сконцентрировать усилия на ядре
- Максимально возможная кооперация с Wine (в т.ч. не только брать, но и отдавать)
- Да, мы берем код из Wine, но регулярно шлем патчи обратно
- Wine неохотно принимает патчи, в которых не видит нужды, в свою очередь мы как раз исправляем то, что у них не сделано (shell32 и т.д.)
- Как можно быстрее получить максимальную совместимость
- Как решили сделать
- См. диаграмму из ARWINSS wiki
- Нам помогла архитектура Wine, которая изначально в какой-то степени платформонезависимая
- Платформонезависимость достигается благодаря специальной прослойке — winex11.drv – абстрагирующей wine от конкретной системы ввода-вывода платформы, на которой он живет
- То есть, вызовы win32 сначала идут в user32/gdi32 wine, оттуда — в winex11.drv, а уже оттуда — в X11.
- Так что мы написали свой драйвер, который вместо X11 использует (модифицированные) компоненты нашего ядра
- … и стало возможно использовать user32 и gdi32 из wine почти без изменений!
- Что получилось:
- За год разработки совместимость выше, чем у оригинальной попытки сделать Win32
- Работают FF4b, MS Office, Photoshop и т.д.
- В wine отправлены десятки патчей
- Можно использовать X11 в качестве вывода для win32 (соответственно, можно сделать сервер терминалов)
- Код на 95% общий с wine, соответственно, усилия разработчиков объединяются, а не распыляются
- Можем принимать патчи, от которых отказывается wine
- Ущерб для совместимости приложений пока не замечен (не считая системные утилиты, завязанные именно на внутреннюю архитектуру win32 – пока такая обнаружена только одна)
- Уже можно ограниченно применять в разных POS терминалах и прочем embedded, где есть готовый парк софта «под винду» и не нужна мощная графика.
- Преимущества для Wine
- Кросскомпиляция dll wine позволяет отлавливать баги, связанные с переносимостью кода
- Поиск багов в dll wine командой ROS, и написание патчей в апстрим (это уже делается!)
- Фактически, возможно полноценное использование Wine под windows! Для запуска старых/несовместимых программ, в частности. И такой опыт уже был поставлен!
Резюме (3 минуты)
3.1. Впервые ReactOS подошла вплотную к beta стадии
3.2. Локальные применения уже возможны
3.3. Устранены основные причины, препятствующие распространению ROS, а те, которые остались, сейчас в разработке (USB, FS drv, etc)
3.4. Особенно актуально сейчас, когда идет тотальный отказ от «пиратки»
3.5. Включаясь в разработку сейчас, вы участвуете в проекте, который будет весьма популярен в ближайшем будущем. Преимущества:
- Репутация
- Опыт командной разработки
- Можно использовать навыки разработки под Windows
- «Благодарная» работа: ARWINSS за год обогнал аналогичную подсистему, писавшуюся 10 лет. Все результаты работы сразу же будут заметны и очень
востребованы.
Демонстрация софта (15 минут)
4.1. AbiWord
4.2. FF4b
4.3. KDE-Win(?)
4.4. Пример исправленного бага + исходники решения
Вопросы (5 минут)
5.1. Когда будет работать?
- Уже работает. Смотря какое использование вы предполагаете. Для среднего домашнего пользователя — когда будут USB и DirectX. Их пишут. Остальное есть, баги сокращаются каждый день.
5.2. Какие есть проблемы?
- Кривая Win32, но это решает ARWINSS.
- Нет USB
- Не все «родные» драйвера дисплея работают.
- Нет DirectX
- FS – только FAT/CDFS
5.3. Почему такие проблемы?
- Потому что последние два года работали почти исключительно над ядром, чтобы добиться его стабильности. И добились.