Miraculix OS

Введение
Сегодня я расскажу вам о новейшей разработке российского программиста Бориса Попова — операционной системе MIRACULIX
http://filesx.fdd5-25.net.
Пользовательский интерфейс: на данный момент это консоль, которая подчиняется стандартным ДОС командам и принципам.
Целью проекта является написание многозадачной, многопользовательской системы реального времени, которую можно будет устанавливать на любой носитель (жесткий диск, дискету, CD-R, CD-RW, FLASH).
Основная часть ОС: первичный загрузчик, ядро, SCHEDULER, базовые драйвера и приложения без проблем влезающие на дискету. Основой основ является микроядро. Система предназначена для компьютеров IBM PC и совместимых с ними. На данный момент основной инструмент разработки — FASM, в будущем для MIRACULIX будут созданы компиляторы C/C++, BASIC, PASCAL.

Архитектура
— Ядро:
По производительности микроядро операционной системы 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.

AXE.COM
На дворе 21-й век! Но по-прежнему ДОС никак не умрёт. С чего бы это?! А всё дело в том, что, как и 10 лет назад все программы по восстановлению работоспособности системы написаны под ДОС. Только эта среда может противостоять натиску вирусов, кривых рук пользователей, посыпавшимся данным диска. Яркий пример тому программы для работы с HDD, RAM, локальными сетями и прочими прелестями.
А что же AXE.COM? У этой программы/утилиты так же много возможностей: таких как диагностика системы, отладка программ в среде MS-DOS или в окне V86 в WINDOWS, предотвращение зависания в MS-DOS. За счет перехвата всех возможных исключений, AXE.COM можно вызвать во время работы другой программы или завершить работу программы. Утилита может загружать операционные системы с дискеты или жесткого диска, проигрывать AUDIO CD в среде чистого MS-DOS или же его просто эмулировать.
Теоретически AXE можно запускать на любом железе, даже на 8086 с монохромным монитором. А вот практически на компьютере OLIVETTI M28 программа вешается. Так как у него вместо BIOS встроенная система диагностики ::-)). Да, и CGA монитор – это не EGA. Утилита AXE работает почти под любой ОС: WINDOWS в окне V86, любые версии и виды DOS, FLOPOS, DS-16, TRIADA OS. Это даёт истину безграничные возможности!
Но будем реалистами.
Работа AXE в среде MS-DOS
После выхода из этой программы АХЕ остается резидентной, перехватывая все исключения. И если произойдет ошибка в выполняемом приложении, то AXE сообщит об этом, покажет состояние всех регистров процессора и часть кода, из-за которого произошла ошибка. Например: недоступная инструкция процессора, общая ошибка защиты. Утилита предложит 4 варианта действия:

1) Исправить ошибку;
2) Пропустить;
3) Повторить;
4) RESET.

AXE можно вызвать во время выполнения другой программы CTRL-ALT+HOME. Завершить CTRL-ALT+END, ENTER. При этом может возникнуть ошибка – надо будет ещё раз нажать на CTRL-ALT.
Параметры командной строки
/TSR – остаться резидентным.
/UNREAL – переключение процессора UNREAL MODE при этом будет доступна вся физическая память, поскольку, лимиты сегментов станут 4 Гигабайта.
/RK – загрузка русских фонтов.
/INSTALL – установить AXE на дискету.
/BOOT – установить BOOT SECTOR на дискету из файла в параметре, например: AXE /BOOT BOOTSECT.BIN, это замена программы BOOTCOPY.
Эмуляция DOS
Установите AXE на дискету через меню TOOLS->INSTALL, или через командную строку AXE /INSTALL. Перезагрузитесь с дискеты, появится меню с файлами. Не поддерживается только работа с драйверами.

Загрузка ОС
С помощью AXE можно загрузить ядро ОС 16 или 32 битное. В файле AUTOLOAD.DAT в корневом каталоге на дискете надо указать путь ядра, если ядро 32-битное поставить префикс “load32=”. Для 32-битных ядер селектор DS=8, CS=16. Можно загружать ОС с HDD при наличии FAT32.

Примеры
Загрузка 16-битного ядра с дискеты:
A:\system\kernel16.com
Загрузка 16-битного ядра с HDD:
load32=c:\kernel.sys
Одна из самых ярких возможностей АХЕ – диагностика системы. А именно, определение её точной конфигурации. Это непременно может пригодиться всем тем людям, которые покупают или собирают компьютеры. Ведь не всегда на том или ином DEVICE можно прочесть его название, а главное узнать характеристики. А вот благодаря АХЕ эта, как и многие другие проблемы оказывается решаемой.

При поддержке Бориса Попова
http://filesx.fdd5-25.net

 

(r) www.fdd5-25.net Форма обратной связи.