Successfully reported this slideshow.
Your SlideShare is downloading. ×

ReactOS Tech Talk (ВМК МГУ, ИСП РАН)

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 45 Ad

ReactOS Tech Talk (ВМК МГУ, ИСП РАН)

Download to read offline

Заседание научно-практического семинара, организованного ВМК МГУ и ИСП РАН 18 декабря 2014 года. Темой семинара стала операционная система ReactOS.

Видео этой презентации: http://www.youtube.com/watch?v=o68BZ2GT-FM

Веб-сайт ОС ReactOS: http://www.reactos.org
Группа ВК: https://vk.com/reactos_ru

Заседание научно-практического семинара, организованного ВМК МГУ и ИСП РАН 18 декабря 2014 года. Темой семинара стала операционная система ReactOS.

Видео этой презентации: http://www.youtube.com/watch?v=o68BZ2GT-FM

Веб-сайт ОС ReactOS: http://www.reactos.org
Группа ВК: https://vk.com/reactos_ru

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Similar to ReactOS Tech Talk (ВМК МГУ, ИСП РАН) (20)

Advertisement

Recently uploaded (20)

ReactOS Tech Talk (ВМК МГУ, ИСП РАН)

  1. 1. Операционная система ReactOS ВНУТРЕННЕЕ УСТРОЙСТВО WINDOWS И ПОЧЕМУ ЖЕ ПРОСТО НЕ ИСПОЛЬЗОВАТЬ ЯДРО LINUX?!
  2. 2. ReactOS – это (не) Windows 22 января 1996 – первый коммит ReactOS - это Windows ◦ Выполняет Windows-приложения ◦ Поддерживает Windows-драйвера ◦ Выглядит как Windows ReactOS – это не Windows ◦ ReactOS – Свободное ПО ◦ ReactOS использует другие СПО проекты ◦ Можно сделать “свой собственный Windows”
  3. 3. Об авторе Алексей Брагин – Москва, Россия ◦ Разработчик ReactOS с 2003 года ◦ Президент Фонда ReactOS и Координатор проекта ◦ Степень магистра, МГТУ им. Н.Э.Баумана ◦ Преподаватель, кафедра ИУ9, МГТУ им. Н.Э.Баумана ◦ Электронная почта: ALEKSEY@REACTOS.ORG
  4. 4. Об авторе ◦ Первый патч в ReactOS: 24 марта 2003 ◦ Первый коммит: 9 апреля 2003 ◦ Всего около 4803 коммитов в ReactOS
  5. 5. Архитектура Windows ЧТО ЗНАЧИТ WINDOWS
  6. 6. ReactOS это Windows Для максимальной совместимости ReactOS реализует архитектуру, идентичную Windows ◦ Windows-драйверам нужно ядро Windows ◦ Многие программы (firewalls, antivirus, media players, PDA sync software, etc.) поставляются со специальными драйверами Архитектура Windows существенно отличается от Linux и не так хорошо известна Начнём с основ…
  7. 7. Архитектура ОС Абстракция ЦП - времени и контектса (processes, threads, signals, etc.) Абстракция памяти (virtual memory, paging, stacks, heaps, etc.) Разделение между системой и приложениями используя встроенные в ЦП механизмы защиты памяти (user mode vs kernel mode) Разделение между «железом» и приложениями используя встроенные в ЦП механизмы привилегий ввода/вывода Механизмы обхода защит ОС управляемым, безопасным образом (system calls, security subsystem, etc.)
  8. 8. Архитектура ОС Ядро Приложения Virtual Physical User mode Kernel mode User Железо
  9. 9. Архитектура Linux Монолитное ядро. У ядра нет ABI Модель управления процессами и модель безопасности UNIX Встроенная поддержка сети ◦ Sockets, pipes ◦ select, poll, etc. Абстракции файловой системы (VFS) UNIX API (libc) поверх небольшого количества UNIX-подобных системных вызовов и сигналов Остальные APIs (audio, application setup, desktop environment integration, cryptography, etc.) - de facto стандарты от сторонних разработчиков ◦ Графическая подсистема (X server) – вещь в себе. В ядре есть специальные “backdoors” для прямого взаимодействия X сервера с аппаратуров, чтобы вынести сложность видео-драйверов из окружения ядра
  10. 10. Архитектура Linux Интерфейс системных вызовов VFS PM MM Arch Драйвера устройств Сетевой стэк ЦП MMUДиск Устройства libc Библиотеки приложений Приложения X сервер Видеокарта Ядро Системные вызовы Сигналы Прямой I/O User mode Kernel mode Virtual Physical
  11. 11. Архитектура Windows (NT) Монолитное ядро (гибридное). У ядра относительно стабильный ABI Архитектура ядра почти идентична дизайну DEC RSX-11 и VMS, с влиянием DOS, OS/2 и Windows 95 ◦ RSX-11, VMS и Windows NT были спроектированы одним и тем же инженером (Dave Cutler) ◦ Первоначально Windows NT разрабатывалась как новое ядро для OS/2 В ядре нет абстракции устройств. Абстракция предоставляется стандартными системными драйверами (class или port драйвера) В самом ядре нет поддержки сети. select/poll – не системные вызовы, а ioctl запрос к “файловой системе сокетов” ◦ Сокеты и пайпы предоставляются специальными файловыми системами ◦ Над этим ещё один уровень абстракции в режиме пользователя: Winsock когда-то был сторонним компонентом (напр. Trumpet Winsock) Графическая и оконная подсистемы в составе ОС (работающие в режиме ядра) со стандартным API Богатое высокоуровневое API всех сортов (криптография, desktop environment, etc.)
  12. 12. Особые черты архитектуры Windows Устройства чипсета (таймер, контроллер прерываний, управление питанием, шины, firmware, и т.п.) абстрагируются с помощью компонента ядра под названием Hardware Abstraction Layer (HAL) ◦ ACPI и не-ACPI – просто разные HAL ◦ Порт ReactOS на приставку XBox - обычный x86 ReactOS со специальным XBox-специфичным HAL Сигналы отсутствуют; вместо них standard exception model (“SEH”, которая была на VMS, OS/2 и Tru64) Обратные системные вызовы (callbacks): оконная и графическая подсистемы могут делать обратные вызовы в режим пользователя ◦ В оригинальной реализации (Windows 95) user-mode и kernel-mode части подсистемы работали в разделяемой памяти ◦ Это слишком небезопасно для Windows NT; безопасная но совместимая разделяемая память эмулируется с помощью некоторых «ухищрений» (типа callbacks)
  13. 13. Архитектура Windows Kernel Executive HAL ntdll kernel32 gdi32user32 Системные библиотеки Службы DirectX Драйвера устройств win32k Приложения, библиотеки приложений Чипсет ЦП, MMU Устройства
  14. 14. Wine и ReactOS REACTOS ЭТО (НЕ) WINE
  15. 15. ReactOS это (не) Wine “Раз ReactOS – это только ядро для Wine… ◦ … зачем оно нужно?” ◦ … и почему до сих пор не доделано?” Как всегда, всё немного сложнее, чем кажется на первый взгляд…
  16. 16. Wine и ReactOS У ReactOS много общего с Wine, в том числе и исходного кода… ◦ Достаточно общих целей: ◦ Установка Windows приложений ◦ Выполнение Windows приложений … но… ◦ Слишком много разных целей: ◦ Работа на Linux / работа на «железе» ◦ Поддержка Windows драйверов
  17. 17. Wine на Linux Windows приложения загружаются только утилитой Wine (Wine loader) Windows приложения и DLL динамически линкуются с системными Windows DLL, реализованными Wine ◦ Большинство Wine DLL – обычные Windows DLL скомпилированные под Linux ◦ Некоторые – внутренние библиотеки Linux, зависящие от других библиотек Linux. Библиотеки Linux прозрачны для Windows приложений – во всех отношениях работают как системные вызовы Служебный процесс (Wine Server) заменяет ядро Windows для управления общими ресурсами
  18. 18. Wine на Linux Ядро Linux GNU libc Библиотеки Wine User mode Kernel mode Библиотеки Linux Загрузчик Wine X сервер Wine сервер Windows приложения Wine services
  19. 19. Wine в ReactOS Windows приложения загружаются непосредственно ядром ReactOS Windows приложения и DLL динамически связываются с Wine и ReactOS реализаций системных библиотек Windows ◦ Могут быть использованы только те Wine DLL, которые не зависят от библиотек Linux ◦ user32 & gdi32 – особый случай, в ReactOS - «native» реализация, не использующая Wine DLL. ReactOS реализует настоящее ядро Windows ◦ Может поддерживать приложения и драйвера
  20. 20. User mode Kernel mode Wine в ReactOS Kernel Executive HAL ntdll kernel32 gdi32user32 System libraries Службы DirectX Windows драйвера win32k Windows приложения
  21. 21. Wine на ReactOS: Arwinss Если реализация оконной подсистемы не такая хорошая, почему бы не использовать Wine? Идея привела к эксперименту, результатом которого стала альтернативная Win32 подсистема в ReactOS, которая ◦ Использует почти неизменённые исходные коды модулей USER32 и GDI32 из Wine вместе с некоторыми компонентами Wine сервера ◦ Рабочий прототип был создан одним человеком в течение месяца (существующая «native» реализация подсистемы в ReactOS находится в состоянии разработки многие годы, и всё ещё полна проблем)
  22. 22. Архитектура Arwinss
  23. 23. Arwinss: плюсы и минусы Недостатки такого подхода ◦ Внутреннее устройство далеко от Windows ◦ Многие части работают в режиме пользователя (вообще-то это преимущество!) ◦ Чуть медленнее (решаемо) ◦ Зависимость от Wine Преимущества ◦ Простая синхронизация кода с Wine ◦ Использование кода Wine, который уже проверен в работе ◦ Более-менее определенная архитектура ◦ Fun!
  24. 24. Wine и ReactOS: итог Wine предназначен для выполнения Windows-приложений под Linux. Специфичные для Linux зависимости: ◦ … невидимы для приложений ◦ … являются интегральной частью реализации Wine ReactOS предназначен для того, чтобы быть Windows: ◦ Всё, что возможно заимствуется из Wine ◦ То, что нельзя – переделывается правильным образом ◦ Реализация не может быть просто “функционально эквивалентной”: должна быть “бинарно-совместима”, т.к. в Windows всё является API ◦ Не очень много кода других СПО проектов можно использовать ReactOS сложен и незаменим
  25. 25. Архитектура ReactOS REACTOS - ЭТО (НЕ) WINDOWS
  26. 26. Команда ReactOS Поистине “международный” проект ◦ Основан Jason Filby из Южной Африки ◦ Разработчики из разных стран мира – Евросоюза, России, США, и т.д. ◦ Сейчас, фонд в Российской Федерации, координатор проекта из России, финансовый фонд в Германии, сообщество по всему миру Нет формального обучения ◦ Почти все разработчики изучили внутреннее устройство Windows во время работы над ReactOS ◦ К сожалению для проекта (и к счастью для них), лучших разработчиков забирают на работу в Microsoft и другие крупные компании Очень мало информации доступно ◦ “Inside Microsoft Windows” – справочник по внутреннему устройству ◦ … но этого недостаточно для разработки ReactOS
  27. 27. Ядро ReactOS Многие разработчики работают над ядром ReactOS и подсистемами, с переменным успехом Хорошее состояние: ◦ Планировщик, HAL, менеджер процессов и потоков (спасибо Alex Ionescu!) Удовлетворительное состояние: ◦ Подсистема ввода/вывода, менеджер конфигураций (реестр), менеджер безопасности, менеджер памяти Плохое состояние: ◦ Кэш-менеджер, поддержка файловых систем Отсутствует: ◦ Управление питанием Тем не менее, ядро ReactOS…
  28. 28. The ReactOS kernel … достаточно совместимо!
  29. 29. Оконная подсистема (USER) Проблемы в этой области известны долгое время Много разработчиков пробовали исправить ситуацию и не смогли ◦ Попытки переписать. Одна совершенно другая - Arwinss. Оригинальная реализация в Windows - очень хороший hack… ◦ Оконная подсистема берёт свои истоки в Windows 1.0 ◦ Порт на Windows NT привнёс защиту памяти, но API подразумевает общую память ◦ Несколько ухищрений специально для безопасного симулирования общей памяти – user32.dll не просто библиотека, а часть оконной подсистемы, работающая в режиме пользователя … и очень плохой дизайн ◦ Невозможно дать хорошее, высокоуровневое описание архитектуры ◦ Никто не документирует всю подсистему – официально или неофициально
  30. 30. Графическая подсистема (GDI) Тесно связана с оконной подсистемой Намного более простой, лучший дизайн ◦ gdi32.dll частично реализация подсистемы в режиме пользователя, для запуска дисплей-драйверов режима пользователя (напр. драйвера принтеров) ◦ Алгоритмы рисования хорошо изолированы, имеют простой API ◦ Весь код рисования шрифтов в ReactOS заимствован из FreeType (сторонний СПО проект) Усилия концентрируются на более сложной (и видимой) оконной подсистеме. Однако, DirectX графика – это ещё одна совершенно другая область…
  31. 31. Сеть Сетевой стэк в Windows располагается вне ядра … но стэк разделён на независимые слои, с документированными API между ними: ◦ Winsock ◦ TDI ◦ NDIS Каждая часть должна быть реализована Windows-совместимым образом … но можно использовать сторонние СПО проекты с помощью специальной Windows-совместимой «обёртки» ◦ Например, мы используем библиотеку lwIP для реализации стэка TCP/IP
  32. 32. ReactOS настояищее и будущее НАД ЧЕМ РАБОТАЕМ СЕЙЧАС, А НАД ЧЕМ СОБИРАЕМСЯ
  33. 33. Поддержка драйверов Сторонние драйвера работают неплохо ◦ Видео драйвера, в частности Сложные слои абстракции нуждаются в работе ◦ USB ◦ Аудио ◦ Сетевые карточки Драйвера файловых систем (включая сетевые ФС) требуют много работы в ядре над “большой тройкой” (кэш менеджер, менеджер памяти, поддержка файловых систем)
  34. 34. USB Реализованы основы USB-стэка Windows ◦ Дизайн совместим с Windows 2003 SP1 ◦ USB-клавиатуры, мышки - работают ◦ Некоторые «флэшки» - работают ◦ Список поддерживаемых устройств доступен на сайте: https://www.reactos.org/wiki/Supported_USB_Devices
  35. 35. Аудио подсистема Она работает! И достаточно совместима Сложно найти людей с опытом и знаниями звуковой подсистемы Windows
  36. 36. Подсистемы ядра Кэш менеджер – идёт работа Порт на ARM принёс много позитивных результатов для общей части менеджера памяти Работа над улучшением качества в общем
  37. 37. Средства разработки Основной компилятор - gcc ◦ Мы внесли значительный вклад в портирование gcc на Windows (MinGW), т.к. мы самый крупный пользователь этого порта (и находим там очень много ошибок!) ◦ Никто не предполагал, что MinGW будет компилировать ядро! ◦ MSVC поддерживается и активно развивается ◦ В перспективе – LLVM, работа уже идёт • ReactOS использует среду CMake – Удобнее, чем обычный make – Лучше интеграция со средствами разработки под Windows – Кросс-платформеннная – Не зависит от компилятора
  38. 38. В заключение ЧТО МЫ СЕГОДНЯ УЗНАЛИ?
  39. 39. Студенты и ReactOS ReactOS – наиболее продвинутая открытая реализация Windows- совместимой ОС Лучше, чем WRK для обучения основам ОС ◦ Нет доступа к исходным кодам Microsoft® ◦ Использование СПО для сборки и тестирования ◦ Большое сообщество Студенческие проекты полезны для ◦ Поиска ошибок в коде ◦ Реализации отсутствующих или неправильно сделанных частей
  40. 40. итог Вообще, Windows – достаточно неплохая операционная система! ReactOS… ◦ … это (не) Windows: а 100% реализация Windows с открытым исходных кодом ◦ … это не Linux: поддерживает Windows-драйвера ◦ … это не Wine: использует Wine, но Wine – только часть ReactOS ReactOS сложен и уникален ReactOS – это очень много работы
  41. 41. Есть вопросы? Brought to you by
  42. 42. Screenshots. Firefox 3.5
  43. 43. Screenshots. Notepad
  44. 44. Screenshots. Desktop
  45. 45. Screenshots. Arwinss in Windows 2003 using X Windows driver and ReactOS Winlogon

×