Miraculix

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:29, 14 мая 2019.
Miraculix
Miraculix.png
Разработчик Сообщество Kreoton Development Group [1]
Написана на ассемблер
Последний релиз 0.71 / 25 марта 2007 года
Доступно в Русский, Английский языки
Ядро (тип) Микроядро
По умолчанию
пользовательский
интерфейс
собственный графический интерфейс пользователя
Лицензия Freeware
Официальный веб-сайт www.miraculix.ru/index.html

Miraculix - это бесплатная операционная система для PC. Ядро, драйвера и основные приложения написаны на ассемблере, благодаря чему система работает очень быстро и легко умещается на одной дискете. Выпуски ее релизов происходит в период с 2003 года и по 2007 года.

Описание

Операционная система Miraculix, разрабатываемая Kreoton Development Group, является 32-х битной ОС, первая версия которой вышла в 2003 году. В архивированном варианте вся ОС занимает 151 кб и открыта для скачивания. На данный момент ОС загружается только с дискеты. Системные требования для Miraculix - процессор не менее i386, VESA 2.0, RAM - 32Mбайт. В новой версии обеспечивается многозадачность, разработан полноценный GUI.[Источник 1]

Краткая характеристика

Miraculix OS (операционная система) - микроядерная, компактная, графическая, декстоп-ориентированная операционная система. Полностью написана на Flat Assembler'e. Родной формат файлов PE, при этом система имеет все необходимые средства для реализации поддержки других исполняемых форматов, на уровне пользовательских библиотек. Имеет поддержку драйверов и динамически подключаемых библиотек. Обладает хорошо продуманным GUI. На данный момент, внешний вид стандартных окон исполнен в стиле Windows Vista. Под Miraculix имеются следующие программы: Root - Обозреватель файлов Cmd - Консоль в стиле Windows XP/2000 Run - Пункт меню для быстрого запуска программ Diag - Определение частоты процессора, объёма памяти... А также Desktop (Рабочий стол), Panel(Панель задач), Menu(Меню "Пуск"), демка Fire, Switch(Переключение по Alt+Tab по мотивам Виндового переключения), Shutdown(Выключение и перезагрузка машины), Memusage(Кол-во занятой памяти) и некоторые другие.[Источник 2]

Релизы

Первая версия этой ОС, вышедшая в 2003 году, носила название «UCS» (United Control System). Она была создана с использованием собственного языка программирования похожего на С++. UCS работала со своей файловой системой и предоставляла пользователю простенькую консоль. В 2004 году готовилась вторая редакция Miraculix , которая писалась полностью на ассемблере. Был разработан прототип GUI, появилась поддержка многозадачности (все программы выполнялись в режиме ядра). Но эта редакция так и не была завершена. И в 2005 году вышла новая, третья версия Miraculix . В этой версии имелся работающий GUI, набор необходимых драйверов (fdd, cd-rom, видео, мышь и т. д.), появилась защита процессов с использованием межкольцевого разделения и страничной памяти. В конце 2005 года было объявлено о четвёртой версии Miraculix 0.52 (см. рисунок 1), (см. рисунок 2), (см. рисунок 3).
Рисунок 1 Miraculix OS, version 0.52 (Чтение секторов жесткого диска)
Рисунок 2 Miraculix OS, version 0.52 (meos virtual machine)
Рисунок 3 Miraculix OS, version 0.52

14 июля 2006 года была выпущена версия 0.55b, а затем 10 августа 2006 года несколько доработанная 0.56. Однако несмотря на разработки в области GUI, это не была полноценная система. В ней были лишь следующие программы: панель задач (с меню пуск), run, обзор файлов, простая консоль и несколько демок. Также была возможность запуска примитивных программ для MenuetOS. Но в ней не было даже простейшего текстового редактора и потому назвать самодостаточной ОС её нельзя. 25 марта 2007 года вышла следующая версия − 0.71, в которой был переработан GUI и добавлена доработанная консоль с командой picture (показать картинку). Собственно переработке в бо́льшей степени подвергся рабочий стол — теперь на синем фоне появились иконки. Также был изменён стиль окон, который на этот раз был скопирован с Windows Vista. По неизвестным причинам, это обновление появилось лишь на сайте Miraculix на downgrage-портале. После этого (29 мая 2007 года), на основном сайте Miraculix появилась версия 0.70b, которая не отличалась от 0.71. Через некоторое время её убрали.

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

Архитектура системы включает в себя следующие части:[Источник 3]

Ядро

По производительности микроядро операционной системы 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" дискеты. [2] Этапы загрузки:

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

Поддержка DOS и 16-битных приложений. На данный момент реализован запуск 16-битных приложений. Но, не налажена система прерываний в V86. В нормальной ОС V86 поддержка должна быть. Хотя бы для вызова 16-битного BIOS'a. Некоторые вещи не стандартны, например: GFX, SMBus, DDC, APM.

Примечания

  1. По данным официального сайта.
  2. По данным официального сайта

Источники

  1. Российское системное ПО все еще существует //cnews.ru. [1995–2019]. Дата обновления: 06.09.2006. URL: http://www.cnews.ru/articles/rossijskoe_sistemnoe_po_vse_eshche_sushchestvuet (дата обращения: 04.05.2019)
  2. Топик Miraculix OS //osdev.ru. [2007–2019]. Дата обновления: 02.05.2007. URL: http://osdev.ru/viewtopic.php?p=17 (дата обращения: 04.05.2019)
  3. Архитектура системы //miraculix.ru. [2005–2019]. Дата обновления: 02.05.2007. URL: http://www.miraculix.ru/docs/Inside_Miraculix.html (дата обращения: 04.05.2019)