Miraculix

Miraculix — российская бесплатная 32-разрядная операционная система реального времени на основе микроядра собственной разработки.

Miraculix
Графический интерфейс Miraculix 0.8.1
Графический интерфейс Miraculix 0.8.1
Разработчик Kreoton Development Group[1]
Исходный код закрытый
Первый выпуск 2003 год
Последняя версия 0.8.1 (14 сентября 2022)
Поддерживаемые языки английский, русский
Тип ядра микроядро
Интерфейс собственный графический интерфейс пользователя
Лицензия freeware
Состояние актуальное
Веб-сайт miraculix.ru

Целью проекта является создание многозадачной, многопользовательской операционной системы реального времени, которую можно будет устанавливать на любой носитель (жёсткий диск, дискета, CD-R, CD-RW, флеш-накопитель). Ядро, драйвера и основные приложения написаны на языке ассемблера, благодаря чему система умещается на одной дискете.[2]

История править

Первая версия этой ОС, вышедшая в 2003 году, носила название UCS (United Control System). Она была создана с использованием собственного языка программирования, похожего на C++. UCS работала со своей файловой системой и предоставляла пользователю простую консоль. В 2004 году готовилась вторая редакция Miraculix, которая писалась полностью на ассемблере. Был разработан прототип графической оболочки, появилась поддержка многозадачности (все программы выполнялись в режиме ядра). Однако эта редакция так и не была завершена, и в 2005 году вышла новая, третья версия Miraculix. В этой версии имелся работоспособный графический интерфейс пользователя, набор необходимых драйверов (дисководов гибких диcков и компакт-дисков, видеоадаптера, мыши и т. д.), появилась защита процессов с использованием кольцевого разделения и страничной памяти. В конце 2005 года было объявлено о четвёртой версии Miraculix.

14 июля 2006 года была выпущена версия 0.55b, а затем 10 августа 2006 года несколько доработанная 0.56. Несмотря на разработки в области GUI, это не была полноценная система. В ней были лишь следующие программы: панель задач с аналогом меню «Пуск», run, средство обзора файлов, простая консоль и несколько демок. Также была возможность запуска примитивных программ для MenuetOS. Но в ней не было даже простейшего текстового редактора, и потому назвать самодостаточной ОС её нельзя.

25 марта 2007 года вышла следующая версия − 0.71, в которой был переработан графический интерфейс и добавлена доработанная консоль с командой picture (показать картинку). Собственно переработке в бо́льшей степени подвергся рабочий стол: теперь на синем фоне появились иконки. Также был изменён стиль окон, на этот раз скопированный со стиля Aero из Windows Vista.

По неизвестным причинам, это обновление появилось лишь на сайте Miraculix на downgrade-портале. После этого, 29 мая 2007 года, на основном сайте Miraculix появилась версия 0.70b, которая не отличалась от 0.71. Через некоторое время её убрали.

29 августа 2019 года были обновлены образы Miraculix для скачивания: добавлена игра Nibbles, исправлены некоторые ошибки, добавлено несколько демок.[3]

14 сентября 2022 года вышло большое обновление Miraculix (0.8.1), главным новшеством которого стала поддержка сети, реализованная посредством портирования сетевой подсистемы и драйверов из КолибриОС.

Список нововведений версии 0.8.1[4]:

  • сетевая подсистема и драйвера портированы из KolibriOS;
  • поддержка консольных программ в графической среде;
  • добавлена возможность передачи строкового параметра при запуске программы;
  • доработана функция создания и завершения процессов и потоков;
  • добавлены консольные утилиты: PING, IPCONFIG, WGET (отображение HTTP);
  • диспетчер задач;
  • HTTP-сервер.

Описание править

Архитектура системы править

Ядро править

По производительности микроядро операционной системы Miraculix не уступает монолитным ядрам. В кольце 0 выполняется только код микроядра. Исключение составляет модуль TRAP.SYS: он перехватывает все исключения при возникновении ошибки в коде ядра, если код выполняется в кольце 0 (SYSTEM FAILURE). Базовым элементом API является обработчик прерывания 0x90. Функции ядра: управление виртуальной памятью (в системе используется страничная модель памяти), функции взаимодействия процессов, управление процессами и функции синхронизации.

Многозадачность править

В системе используется программная многозадачность. Для всех процессов и потоков выделен всего один "физический" TSS. Его значение меняется каждый раз при переключении на другую задачу. Значение карт I/O и INT (только для V86-задач) не меняется. Это позволяет держать в системе сколько угодно процессов и потоков, что было бы невозможно, если каждому процессу и потоку выделялось по TSS, так как количество системных дескрипторов ограничено: 8192. Функции синхронизации: усыпить_процесс (число_квантов), получить_или_продлить_выполнение (PID, число_квантов), получить_состояние (PID).

Организация памяти править

Все адресное пространство можно разделить на две области: область аппликаций и системную (ядра, драйверов/модулей). При запуске 32-битного приложения все сегментные регистры (DS, ES, GS, FS, CS) описывают все 4 Гб памяти. Модель памяти - страничная: у каждого процесса своя таблица страниц, её размер зависит от потребностей приложения. Память выделяется динамически (в процессе выполнения) в страницах. Поток наследует все адресное пространство процесса которым он был создан. При создании V86-задачи, в память новой задачи копируется таблица прерываний и BIOS также, в опциях можно указать присутствие/отсутствие A20. Функции менеджера памяти: выделить_память (число_страниц), освободить_память (число_страниц), отобразить_память (физический_адрес, число_страниц). В параметре физический_адрес можно указывать только адреса 0xA0000...0xFFFFF и адреса определенные с помощью PCI.

Загрузка править

На данный момент реализована загрузка системы с 3.5" дискеты. Этапы загрузки:

1
Boot-сектор загружает первичный загрузчик с дискеты.
2
Первичный загрузчик (AXE.COM) проверяет наличие ядра на дискете, если он его не находит, то открывает окно-меню со всеми файлами и папками на дискете, в этом режиме можно запускать DOS-программы, 32-битные бинарники. Если файл "KERNEL.SYS" присутствует на дискете, первичный загрузчик грузит весь корневой каталог дискеты в память, создавая RAM-Disk. В ядре отсутствуют функции для работы с дисками, файловыми системами. Но, ядро должно запустить вторичный загрузчик, для этого первичный загрузчик создает RAM-Disk по адресу 0x300000. Примечание: первичный загрузчик после завершения своей работы не удаляется из памяти, он остается резидентным. И получает управление в случае возникновения фатальных ошибок.
3
Получив управление, ядро загружает вторичный загрузчик (он же первый процесс в системе, в микроядре L4 он называется sigma0), с RAM-Disk'a, и загружает регистр процессора TR.
4
Вторичный загрузчик загружает все драйвера и модули, прописаные в файле "AUTOEXEC.INI". Строгая последовательность не обязательна, загрузку драйверов и модулей можно выполнять в любом порядке (т.к. система многозадачная) но нужно, что бы драйвер FDC попал в первый мегабайт физической памяти. Потому-что при работе с дискетами в драйвере FDC используется 16-битный контроллер DMA... На втором месте по важности является модуль TRAP.SYS. (его можно поставить на последнее место, но при возникновении ошибки в каком-нибудь из модулей или драйверов загружаемых перед ним возникнет неопределенная ситуация...). Ещё можно прописать загрузку GUI, альтернативной консоли или оболочку типа Norton Commander.

Поддержка DOS и 16-битных приложений править

Реализован запуск 16-битных приложений, но не налажена система прерываний в V86. Некоторые вещи нестандартны, например: GFX, SMBus, DDC, APM.[5]

Снимки экрана править

Дальнейшее развитие править

После появления GUI в Miraculix стало понятно, что эта ОС заслуживает внимания и некоторые сторонние разработчики написали несколько программ (в частности, консоль была написана не главным разработчиком Miraculix — kreoton’ом — а mistifi(ator’ом; обновлённая версия была написана vkos’ом). Но из-за закрытости исходного кода ядра и написания системы на ассемблере, kreoton’у пришлось писать остальное одному. Получилось, что коммерческим разработчикам было не выгодно её развивать, так как она была бесплатной, но и свободные разработчики не стремились поддерживать закрытую систему.[источник не указан 487 дней]

Примечания править

  1. Российское системное ПО все еще существует. CNews (6 сентября 2006). Дата обращения: 15 июля 2009. Архивировано из оригинала 11 ноября 2011 года.
  2. Inside Miraculix. Дата обращения: 18 декабря 2022. Архивировано 22 марта 2023 года.
  3. Miraculix. Дата обращения: 18 декабря 2022. Архивировано 22 июня 2006 года.
  4. Miraculix Version 0.8.1 (codename: Santa Catarina) (14 сентября 2022). Дата обращения: 18 декабря 2022. Архивировано 18 декабря 2022 года.
  5. Операционная система Miraculix OS. Дата обращения: 18 декабря 2022. Архивировано 22 марта 2023 года.

Ссылки править