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