Алексей Брагин

Avatar1

Алексей Брагин родился в Москве в 1983 году, выпускник МГТУ им. Н.Э.Баумана. Начал заниматься операционными системами с 2002 года внеся значительный вклад в развитие проекта ReactOS, где занимался непосредственно разработкой ядра и остальных частей ОС, а затем был избран координатором проекта, а также президентом фонда «Реактос». Представлял проект на многочисленных международных выставках и конференциях. Алексей ведёт учебную и научную работу, напрямую связанную с операционными системами – разработан и читается собственный курс лекций и лабораторных работ в МГТУ им.Н.Э.Баумана, проводится ряд научно-исследовательских проектов, в том числе в сотрудничестве с университетами Бельгии и Франции.


Операционная система ReactOS

Введение. Операционная система ReactOS (далее – ОС ReactOS) – это современная операционная система с открытым исходным кодом, предназначенная для работы  с процессорами  семейства x86 и  программным обеспечением, оборудованием и драйверами, созданными для семейства операционных систем Windows NT 5.0. ОС ReactOS создаётся  с 1998 года слабо-организованной командой разработчиков по всему миру тем методом, который в настоящее время называется crowdsourcing [1] и используется множеством других проектов с открытым исходным кодом. С 2004 разработка проходит под руководством некоммерческих организаций Фонд «Реактос» (Российская Федерация) и ReactOS e.V. (Германия). Отличительной особенностью ОС ReactOS является совместимость с программным обеспечением, использующем интерфейс WinAPI, а также с драйверами устройств, разработанными для семейства операционных систем Microsoft Windows NT. Это достигается путём использования архитектуры ядра ОС ReactOS, подобной архитектуре ядра Windows, а также изучения недокументированных и не стандартизованных программных интерфейсов. Для разработки ОС ReactOS применяются различные методы, подходы и модели. Исторически одними из основных стали  методы «чистой» обратной разработки и «экстремального программирования», совмещенные с использованием итерационного подхода.

Состав ОС. ОС ReactOS содержит в себе всё то, что минимально необходимо для работы системы, а также для её разработки. В отличие от других операционных систем с открытым исходным кодом, например, Linux, нет необходимости в создании т.н. «дистрибутивов», т.к. ОС ReactOS – это не только ядро, но и комплект минимально-необходимого программного обеспечения и драйверов. Жёсткие правила, регламентирующие включение какого-либо программного модуля в состав ОС ReactOS отсутствуют, однако большинство разработчиков ориентируется в принятии решения о включении на следующие пункты:

  1. Если модуль с подобной функциональностью не является частью базовой поставки ОС Microsoft Windows 2003, то он не должен включаться в состав ОС ReactOS.;
  2. Если модуль не является необходимым для установки системы или для её разработки, и может быть самостоятельно установлен пользователем в дальнейшем, то он не должен включаться в состав ОС ReactOS.

Таким образом, становится возможным ограничить то программное обеспечение, которое включается в состав ОС ReactOS, сделав систему удобной для использования в различных целях, и в будущем избежать проблем, связанных с «навязыванием» пользователю определённого программного обеспечения (как, например, включение одного вида интернет-браузера в случае с ОС Microsoft Windows, и прочее).

Архитектура ядра. Ядро ОС ReactOS максимально возможно приближено по своей архитектуре к ядру ОС Microsoft Windows 2003 SP1. Ядро этой операционной системы достаточно хорошо описано в [2,3,4], а также в [2] на стр. 47 приводится общая структура ядра ОС Windows и его взаимодействия с системными процессами, службами, приложениями и подсистемами окружения. Основная ветка разработки ОС ReactOS под названием trunk реализует именно такую архитектуру. Однако, в процессе реализации разработчики далеко не всегда «копируют» те алгоритмы и особенности, присутствующие в ОС Windows 2003 SP1. В последнее время наоборот наблюдается тенденция по возможности делать внутреннюю реализацию алгоритмов максимально отличающейся от таковой в ОС Windows 2003 SP1. Это не только позволяет обезопасить проект от возможных юридических проблем в будущем, но и упрощает дальнейшую разработку и поддержку. Например, было документированы случаи, когда в ядре определённых версий Windows существовали (и, вероятно, существуют до сих пор) ветки кода, предназначенные для некорректно написанных драйверов устройств из 1990-ых годов, либо для какого-либо программного обеспечения, работоспособность которого для компании Microsoft была очень важна. ОС ReactOS не ставит для себя задачи и не имеет коммерческих интересов в поддержке какого-либо производителя программного или аппаратного обеспечения, поэтому все подобные участки кода по возможности исследуются, но их реализация включается в ОС ReactOS только в исключительных случаях.

Исследование программных интерфейсов. Для обеспечения совместимости с программным обеспечением и драйверами, разработанными для ОС семейства Microsoft Windows NT, ОС ReactOS должна предоставлять такие же программные интерфейсы (Application Program Interface, далее - API), с помощью которых это программное обеспечение и драйвера взаимодействуют с другими частями операционной системы. В основном, для целей обеспечения совместимости в ОС ReactOS важными являются два программных интерфейса – WinAPI (для прикладного ПО) и Native API (в основном, для драйверов). WinAPI достаточно хорошо описан в [5], частично стандартизован (ECMA-245, а также инициативой Public Windows Interface компании Sun Microsystems). Недокументированные особенности этого интерфейса тоже описаны в литературе. Тем не менее, даже официальная документация MSDN содержит достаточно много ошибок, которые не позволяют в полной мере реализовать совместимую функциональность, либо документация умалчивает о некоторых дополнительных параметрах функций, поведении функции при недокументированном сочетании входных параметров и прочем. Для решения этой проблемы совместно с проектом Wine был разработан обширный набор тестов, который исследует интерфейс WinAPI методом «чёрного ящика» и автоматически проверяет каждую ревизию ОС ReactOS. Аналогичная ситуация с интерфейсом Native API, но покрытие тестами гораздо меньше, чем в случае покрытия интерфейса WinAPI.

С результатами работы автоматизированной системы тестирования можно ознакомиться по адресу https://reactos.org/ru/testman

Возможные юридические проблемы. Как уже говорилось выше, основной целью ОС ReactOS является обеспечение совместимости с существующим программным и аппаратным обеспечением, разработанным под другие виды операционных систем. Это существенно повышает риски возможных юридических проблем со стороны компаний-производителей операционных систем и программных продуктов. Рассмотрение этих проблем выходит за рамки данного доклада, однако, эти вопросы уже неоднократно рассматривались различными международными организациями. В России на данный момент наиболее полно правовые аспекты разработки и использования ОС ReactOS изложены в [6].

Организаторы

При поддержке