Операционная система «Сивелькирия» начинается с пересмотра основ, при котором часть общепринятых концепций подвергается устранению или замене. Следующие сущности, обычно составляющие основу операционной системы, не существуют в рамках ОС «Сивелькирия»:
- Приложение.
- Процесс.
- Файл как область данных на диске.
- Сквозная файловая система, навигация по которой ограничена лишь правами доступа.
- Командная строка как среда для запуска отдельных приложений.
- Универсальные скрипты.
- Доступность базового API операционной системы любому компоненту.
- Возможность прямого переноса стандартных библиотек большинства современных языков программирования. Как следствие, возможность прямого переноса существующего ПО с других операционных систем, кроме отдельных случаев.
- Поддержка языков программирования без объектной ориентации.
Этот список неполон. Он ни в коей мере не означает ограничения возможностей программиста или пользователя и лишь указывает, что в рамках ОС «Сивелькирия» те же цели достигаются иначе, нежели в большинстве ныне существующих операционных систем.
Отказавшись от этих устоявшихся сущностей, мы преполагаем выстроить операционную систему, основанную на следующих принципах:
- Операционная система «Сивелькирия» является объектно-ориентированной в том смысле, что она предоставляет объектные интерфейсы для выражения всех понятий предметной области, с которыми может работать ПО, выполняемое в рамках данной ОС. Все сущности, с которыми ведётся работа в рамках прикладных или системных программ, должны быть представлены в виде объектов, реализующих один или более интерфейсов, определённых операционной системой. Обмен данными за пределами этой структуры не допускается. Данные, получаемые из внешних источников, оборачиваются в данные интерфейсы в точке входа.
- Единицей распространения программного кода является модуль. Разница между модулями, предоставляющими прикладную функциональность, и модулями, выполняющими функции системного уровня, минимальна или отсутствует.
- Операционная система содержит библиотеку прототипов модулей, выделенных по функциональному признаку. Каждый прототип определяет, какие функции предоставляет модуль и какими входными и выходными данными он оперирует (в терминах объектных интерфейсов). Каждый модуль реализует один (и только один) прототип. Прототипы организованы так, чтобы каждый модуль выполнял одну (и только одну) функцию вне зависимости от происхождения входных и назначения выходных данных.
- Порядок загрузки и выгрузки модулей и вызова функций из них, компоновка модулей и их взаимодействие, организация, приоритеты и синхронизация потоков, время жизни объектов данных и способы их обработки определяются операционной системой. Реализации модулей и объектов данных не делают на этот счёт никаких предположений за пределами гарантий, дающихся в определении интерфейсов и прототипов.
- Каждому модулю доступны только те данные и способы взаимодействия с операционной системой, которые необходимы для выполнения его функции (определяемой прототипом). Ни один модуль не имеет доступа ко всем функциям операционной системы. Дублирование функций, уже возложенных на определённый прототип, в рамках модуля, относящегося к другому прототипу, не допускается.
- Разработка интерфейсов данных и прототипов модулей ведётся непрерывно, совместными усилиями разработчиков программ и разработчиков операционной системы. Интерфейсы и прототипы изменяются и дополняются по мере необходимости.
Далее будет подробно показано, как эти и другие принципы будут применяться на практике.