3OS

Концепция 3ОС

версия от 14.06.2004

Что в данном документе

Текущая концепция проекта, описывает расстановку приоритетов, основные задачи и цели проекта.

Место 3OS

Предлагается следующая классификация операционных систем:

Массовыми считаются популярные ОС, вроде Windows, Linux или FreeBSD, популярность и применимость которых не вызывает сомнений ни у кого. Это идеал, к которому надо стремиться.

Прикладными можно назвать мало популярные ОС, имеющие успех у групп энтузиастов. Сюда можно отнести SkyOS или Menuet.

Специализированные ОС предназначены для решения задач узкого круга. Например QNX.

Остальные ОС считаются учебными, поскольку чаще всего разрабатываются одним человеком или небольшой группой, чаще всего студентами. Цель проста - посмотреть, как оно работает. Таких проектов больше всего.

На данном этапе 3ОС - операционная система прикладной направленности, рассчитанная на энтузиастов. Программа-максимум - получение статуса массовой ОС, но для этого нужно дожить хотя бы до выпуска первого релиза для энтузиастов. Из прикладной направленности 3ОС также вытекает положение, что сравнивать 3ОС с учебными ОС некорректно.

Цель и приоритеты

Изначально 3ОС задумывалась как генеральная чистка концепций. Основная задача - создание новой, свободной от старых (и других) недостатков операционной системы.

Функциональность

Расстановка функциональных приоритетов в 3ОС следующая:

  1. Универсальность и масштабирумость, составляющие гибкость системы
  2. Защищенность ядра, драйверов и приложений - безопасность, отказоустойчивость
  3. Производительность (скорость, быстрота) - не является основной задачей

Несмотря на то, что защищенность стоит на втором месте ей уделяется самое пристальное внимание. То есть гибкость не должна наносить вред безопасности, но она стоит на первом месте, так как некоторые сервисы, обеспечивающие безопасность системы можно отключать - а это гибкость. Безусловно, также для 3OS важна новизна системы, то есть разработка новых решений старых вопросов.

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

Гибкость

Под гибкостью в данном случае подразумевается:

С другой стороны, гибкость решения не должна приноситься в жертву производительности. Задача переносимости 3ОС будет сведена к:

Система должна быть модульной, и все части ОС должны взаимодействовать друг с другом через абстрактные интерфейсы. В идеале, замена одних модулей другими должна быть безболезненна и абсолютно прозрачна.

Защищенность

Архитектура системы предусматривает изоляцию ядра, драйверов и приложений друг от друга. В 3ОС эти задачи должны решаться на концептуальном уровне. По мнению некоторых участников, обеспечение безопасности системы дополнительными средствами может снизить и гибкость, и производительность системы в целом.

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

На каком-то этапе развития ОС безопасность приложений может быть обеспечена введением p-кода и JIT-выполнения приложений. Но это, по всей видимости, задача будущего. На первом этапе 3ОС должна обеспечить приемлемый уровень безопасности для обычных приложений.

Производительность

Как упоминалось выше, максимальная производительность не является приоритетной задачей 3ОС, она достигается косвенными средствами.

В качестве основного постулата принято, что все существующие на данный момент системы работают неоптимально. Причина - устаревшие архитектурные решения и просто-напросто большой объем кода. Предполагается, что 3ОС будет иметь определенный запас скорости чисто за счет незамусоренного кода.

Таким образом, способы достижения производительности 3ОС следующие:

Приложения

В то же время, стоит отметить и приоритеты в прикладной плоскости. Это:

Вместе они образуют понятие альтернативности ОС по отношению к существующим.

Минимализм

Минимализм подразумевает продуманность концепций прикладной среды, исключающую вольное или невольное дублирование кода или данных. Можно взять на вооружение девиз Java: "написано один раз - работает везде". Минимализм важен для прикладной направленности системы. Рассматривая ее более глубоко, можно вспомнить, сколько дополнительного кода приходится писать программистам, если ОС предоставляет сугубо системные возможности. Минимализм в понятии 3ОС означает не аскетичность и отсутствие самых необходимых инструментов, а наоборот, возможность создания прикладного кода с минимальными затратами.

Совместимость

Совместимость подразумевает использование существующих стандартов вместо изобретения новых. Используя FAT32 или ext2, TCP/IP, Unicode, MP3, MIME и другие стандарты, принятые во всем мире, можно дать реальную альтернативу энтузиастам, которые хотят получить новый взгляд на свои данные (или даже на свой компьютер). Утрируя понятие совместимости, можно сказать, что 3ОС будет операционной системой без собственной файловой системы, собственного сетевого протокола и т. п.

В то же время, эти два противоричевых приоритета можно понимать, как у Таненбаума - "простота и полнота". Простота - реализовывать всю функциональность ОС как можно проще и понятнее. Полнота - закладывать только ту функциональность, которая необходима. Ни больше, ни меньше.

Технические решения

Стоит также описать некоторые технические решения и идеи, лежащие в основе 3OS.

Конструктор ОС

ОС разрабатывается как взаимозаменяемый набор модулей, из которых может быть собрана ОС, заточенная под конкретные нужды. Подразумевается, что в системе будет несколько вариантов ядра, реализации различных файловых систем и т.д. Главное - совместимость интерфейсов модулей.

Единое пространство данных

В 3OS понятие файловой системы отсутствует и применяется только "для совместимости". 3OS должна предоставить единое пространство данных, где существуют только строго типизированные объекты. Понятие "файл" слишком расплывчато и не отражает сути данных: изменив расширение файла можно заставить систему воспринимать данные по-другому. Это принципиально неустранимая дыра в системе безопасности, плюс головная боль пользователей. Если же система видит только строго типизированные объекты, то это повышает надежность и безопасность.

В единое пространство данных "подшивается" все, что видит система - диски, флешки, дискеты, сетевые ресурсы. Таким образом, обращение к любому объекту унифицировано и не зависит от его физического положения.

Для полного воплощения концепции единого пространства данных 3OS должна предоставить свою систему хранения объектов, так как назвать это файловой системой уже нельзя. Система хранения будет объектно-ориентированной базой данных, возможно поддерживающей ANSI SQL. Совместимость с существующими файловыми системами будет обеспечена экспортом/импортом объектов. Экспорт может быть в 3OS объектный формат или любой из совместимых "стандартных" форматов.

ОООС

Исходя из своего названия, в 3ОС все является объектом. При том, приложение - это не объект. Приложение в обычном понимании этого слова - это нечто, что что-то делает. Что может делать приложение? Очень многое. Это не очень хорошо, так как, запустив приложение отследить его деятельность уже крайне сложно.

3ОС предлагает отказаться от приложений. Любое приложение, так или иначе, оперирует какими-то данными или ресурсами. Без обработки данных приложение не имеет смысла. А значит, все может и должно быть привязано к данным - они первичны. Если есть данные, то можно и нужно их обрабатывать, если нет - что делать? А ведь любые данные имеют свой формат, который можно и нужно четко типизировать, а с каждым форматом можно делать только что-то вполне определенное. Объекты и методы, вот к чему сводится вся модель взаимодействия в 3OS. Любые данные представимы в виде объектов, а значит можно четко определить методы взаимодействия с ними, а если так, то зачем нужны приложения?! Все можно свести к вызовам методов.

Такое решение, опять-таки радикально повышает уровень безопасности системы, предоставляя, в то же время, "человеческие" методы взаимодействия с данными.

Изменения в документе

14.06.2004
Концепция дополнена предложениями Влада, изложенными в письме Message-ID: <list-20236200@backend2.aha.ru> датированным Date: Sat, 5 Jun 2004 02:00:38 +0500 с темой "[3OS] Концепция reloaded", и обсужденными в той же ветке.