Pull to refresh

Подробности ReactOS 0.3.12

Reading time4 min
Views1.2K
Original author: Aleksey Bragin
Команда ReactOS с гордостью представляет выпуск ReactOS версии 0.3.12.

Этот выпуск стоил команде многих усилий, не только потому, что в него вошло огромное количество изменений и улучшений, но и благодаря значительному прогрессу в архитектуре системы, стабильности и привнесении более современных черт ядра NT в ReactOS.

Прошёл почти год с даты последнего выпуска. И, хотя это, разумеется, значительный срок, потраченное время было необходимо для стабилизации ОС в связи с природой проделанной работы. Которая, вначале, была сосредоточена на одной единственной области — механизме обработчика ловушек — что в конечном итоге вылилось в его полное переписывание. Этот шаг сделал необходимыми еще большие изменения, развившиеся в переработку многих других областей, разработку новых технологий и реализацию их в ядре. Что в сумме позволило получить гораздо более современное ядро, содержащее значительно меньше кода, чем предыдущее. В свою очередь, это потребовало длительную фазу тестирования, чтобы достичь уровня стабильности и совместимости выше, чем в предыдущей реализации.

В процессе подготовки этого выпуска было исправлено 259 ошибок, включая 61 регрессию, некоторые из которых возникли ещё в ReactOS 0.3.7. Десять из исправленных ошибок были зарегистрированы более трех лет назад; самая старая из исправленных ошибок — №969, которая была обнаружена пять лет назад.

Список наиболее значимых изменений:

  • Диспетчер памяти — Над диспетчером памяти продолжает усердно трудиться команда ARM, заменившая каждый компонент, кирпичик за кирпичиком, сохраняя при этом функциональность старого диспетчера. И, хотя версия 0.3.12 не перешла на использование нового диспетчера полностью, является очевидным увеличение скорости, стабильности и совместимости новой модели.
  • Поддержка немаскируемых прерываний (NMI) — Теперь ReactOS способна обрабатывать немаскируемые прерывания и выводить Red Screen of Death, что крайне полезно для отслеживания аппаратных ошибок, обнаруживаемых процессором или чипсетом. Кроме того, была введена поддержка нестандартных вызовов немаскируемых прерываний, что актуально для некоторых серверных систем. И в довершение, частично добавлена поддержка создания аварийных дампов при возникновении немаскируемых прерываний: функция может быть полезна при зависании машины и использовании кнопки сброса аварийного дампа памяти.
  • Переписан обработчик ловушек — Почти весь код обработки ошибок процессора, ловушек, исключений и системных вызовов теперь написан на C, а не на ассемблере. Большинство устаревших и/или более не используемых блоков кода было деактивировано, а также код, используемый для отладки и значительно снижающий производительность системы, теперь отключен по умолчанию. Кроме того, порты системы для архитектуры x64 и ARM включают гораздо больше такого кода. И, наконец, сам код стал более читаем и лучше структурирован, что позволяет использовать оптимизацию в процессе компиляции для получения исполняемого кода, максимально оптимизированного под процессор, вместо использования вручную написанных ассемблерных блоков, специфичных для конкретных моделей центральных процессоров. В настоящий момент ведется работа по удалению последних оставшихся ассемблерных блоков.
  • EMS — Была частично реализована поддержка системы аварийного управления (Emergency Management System). Поддерживаются флаги загрузки, документированные Microsoft, отладочные данные отправляются в последовательный порт. Идёт работа по добавлению возможностей протоколирования EMS и замене имеющегося устаревшего отладчика KDBG на EMS. Также ведётся работа над драйвером SAC (специализированной консоли администрирования) для облегчения работы с EMS.
  • Совместимость с PnP — В код были внесены различные изменения, позволяющие улучшить работу с оборудованием и поддержку загрузки сторонних драйверов.
  • Улучшения в ACPI — Команда ARM разработала базовые драйвера, необходимые для поддержки батарей и драйверов UPS/батарей сторонних производителей, включая поддержку спецификации ACPI Composite Battery (композитные батареи). В данном релизе поддержка ACPI отключена, поскольку модуль ACPI всё ещё находится в разработке.
  • Новый драйвер PCI-X — Команда ARM неспешно работала над новым драйвером шины PCI. Ранее, ReactOS использовала очень простой, и, по большей части, усеянный «заглушками» драйвер шины PCI с отсутствующей поддержкой большинства функций реальных шин PCI, мостов PCI-to-PCI, и т.д. С новым драйвером должна значительно возрасти как совместимость с реальным оборудованием (а не только с виртуальными машинами), так и производительность системы.
  • Поддержка SxS — Был добавлен совместный (side-by-side) код, а также функции загрузки и поиска манифест-файлов. Это большой шаг вперёд для обеспечения совместимости с современными приложениями, использующими эту технологию.
  • Исправления повреждений пула — Пожалуй, наиболее серьёзная из таких предполагаемых утечек была исправлена благодаря совместным усилиям ключевых разработчиков ReactOS, применивших комплексный подход, включающий в себя использование модифицированной сборки виртуальной машины QEMU.
  • Таймер и поддержка обработки сообщений были переписаны. Неправильная обработка внеочередных системных сообщений приводила к зависаниям некоторых приложений, поэтому код обработки сообщений был переписан. Также, этот выпуск содержит переписанный код реализации таймера, решающий множество проблем, наиболее известная из которых — «необходимость перемещать мышь для загрузки страниц в FireFox».
  • Сборка для архитектуры x64 — Хотя порт для платформы x64 по-прежнему на ранней стадии из-за ограниченных возможностей ядра, большинство основных проблем со сборкой решены и весь необходимый функционал уже добавлен в ядро. Всё это, в свою очередь, добавлено в транк, и теперь его можно скомпилировать для целевой платформы x64. Благодаря автосборкам стало возможно быстрое обнаружение и исправление вероятных поломок кода. Правда, не ожидайте что система при загрузке доберётся до стадии запуска GUI!

Список изменений для версии 0.3.12 в корне отличается от списков изменений предыдущих выпусков тем, что основной акцент был сделан на понятное и сжатое изложение основных изменений в выпуске. Таким образом, вместо того, чтобы дублировать этот список здесь, мы приглашаем вас ознакомиться с ним и узнать о том, что было достигнуто.

Несмотря на то, что команда ReactOS посещала множество массовых мероприятий и конференций в самых разных уголках планеты, мы практически не публиковали новостей, что могло показаться периодом затишья, или даже застоя. Мы надеемся, что этот выпуск покажет вам, что всё это время мы трудились как никогда ранее.

Скачать систему

Переводчики: evilslon, dsp2003, fox_anthony, smerch, aspotashev, Jeditobe, uzver
Tags:
Hubs:
Total votes 80: ↑72 and ↓8+64
Comments99

Articles