Содержание

Руководство VictoriaOS: Введение

  1. Идея

Приступая к разработке операционной системы, я ставил перед собой задачу ознакомиться с принципами написания больших программ на языке ассемблера, а также подробно изучить архитектуру микропроцессора Intel 8086. Эти две цели я считаю достигнутыми. Я рассчитывал написать систему, сходную по функциональности с CP-M, или немного более совершенную. Вот список функций и свойств системы, которые я хотел реализовать:


  2. Общие принципы разработки

При разработке системы руководствовался принципами минимализма, простоты и функциональности. Я поверхностно изучил устройство систем CP-M, MS-DOS, MINIX и других. Я сделал следующие выводы:


  3. Модули

Система состоит из трех модулей: загрузчика, ядра и командного интерпретатора (shell).

Загрузчик загружает (как это ни странно ;-) ядро в память, настраивает таблицу векторов прерываний, запускает процедуру инициализации ядра, затем загружает командный интерпретатор и передает ему управление. Навсегда.

Ядро находится в памяти на протяжении всей работы системы и занимается обработкой прерываний, вызванных программами пользователя.

Командный интерпретатор представляет собой обычную программу уровня пользователя. При желании он может быть заменен на любой другой по усмотрению пользователя.


  4. Выбор функций API

Функции для включения в ядро я выбирал следующим образом: из списка функций MS-DOS я исключил лишние, неподходящие и легко реализуемые средствами BIOS функции. Я рассчитывал получить интерфейс из 10-20 функций.

Выбирая файловую систему, я сомневался между FAT и своей собственной системой, сделанной по аналогии с FAT, но более простой. Выбор был сделан в пользу собственной системы, в связи с некоторыми техническими неудобствами реализации FAT и некоторыми неясными деталями в ее устройстве. Моя файловая система не поддерживает каталоги, поскольку система создана исключительно для работы с диска 3.5'', и усложнение кода в данных условиях не оправдано. Было решено реализовывать следующие функции API для работы с файловой системой:

Реализацию каких-либо других операций для работы с файловой системой я считаю неоправданной в данном случае. Подробнее о функциях VictoriaAPI для работы с файловой системой см. Руководство программиста.


  5. Исполняемые файлы

Для исполняемых файлов был выбран формат, аналогичный DOS COM (COM — Copy Of Memory). Для программ пользователя используется модель памяти TINY, то есть код и данные любой программы располагаются в одном сегменте размером в 64 килобайта. Такая модель памяти ограничивает размер исполняемого файла, но для данной операционной системы эта проблема не существенна. Исполняемый файл представляет собой последовательность инструкций и данных, которая целиком и без каких-либо изменений загружается в память. Управление передается в начало блока. Подобное устройство исполняемых файлов позволяет без особого труда переносить под мою операционную систему программы, написанные для MS-DOS. При этом достаточно заменить системные вызовы DOS на аналогичные вызовы Victoria с учетом ограничений, накладываемых системой.


  6. Дополнительные утилиты

Было запланировано написать программу для Windows и/или UNIX, обеспечивающую доступ к файловой системе Victoria (VictoriaFS). Под Windows такая программа может быть написана в виде плагина к FAR Manager (коим я активно пользуюсь). Однако, на деле оказалось, что особой нужды в такой программе нет: VictoriaFS настолько проста, что можно без труда работать с её файлами "вручную".

Содержание