3OS

Объектная система 3OS

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

Далее изложено мнение Дмитрия Зорина aka Brasset об объектной системе 3ОС.

Маленькое вступление

3OS является совершенно новой, революционной операционной системой, построенной на понятии объекта - фундамента, на котором стоится вся ее логическая структура (определение объекта см. ниже).

С принятием объекта в качестве базового элемента ОС, изменилось отношение к файловой системе - хранилище иерархически упорядоченной информации в виде файлов превратилось в БД-подобную систему хранения объектов. Само назначение файловой системы существенно расширилось: теперь это один из главных инструментов ОС, который осуществляет управление объектами, их взаимодействие, обеспечивает к ним доступ и гарантирует уникальность каждого адресуемого в системе объекта.

Из вышеперечисленного видно, что само понятие "файловая система" уже устарело (как таковых файлов у нас нет), не отвечает своей сущности и должно быть вскоре заменено. Я сейчас затрудняюсь сформулировать новый термин (т.к. пока никто точно не знает, что из всего этого получится), и могу лишь предложить использовать выражение "Объектно-информационная подсистема" - Object Intelligence Subsystem (OIS).

Основы

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

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

Итак, основой операционной системы 3OS является объект...

Все что мы можем адресовать в системе (т.е. определить уникальным именем) является объектом. Объектами могут быть данные (или их отдельные составляющие), процессы (исполняемый код), указатели, устройства, пользователи, приложения и многие другие сущности. С точки зрения самой операционной системы объект - это любая сущность, имеющая в системе 3OS свое уникальное имя. Объекты не находятся в системе в неупорядоченном виде, они могут быть сгруппированы по классам (видам), связям, местоположению и любым описанным в объекте признакам. Заметьте, что возможностей для группировки объектов стало намного больше, чем для файлов в предметно-иерархических файловых системах, где мы могли группировать файлы только по каталогам и именам (в таких системах некоторые программы имеют дополнительные способы группировки, например FAR на временных панелях, но это уже идет как "навесок" к основной ФС).

Отдельным видом объектов являются контейнеры. Контейнер - это объект, который может содержать в себе любые другие объекты. Наиболее близкими к контейнеру понятиями в предметно-иерархических файловых системах являются архивы и каталоги (при этом заметим, что архив не является частью такой ФС, а формируется и обрабатывается сторонними приложениями). Доступ к объекту внутри контейнера осуществляется просто указанием имени требуемого объекта. Для пользователя работа с объектами внутри контейнера совершенно прозрачна, при этом контейнер сам являться самостоятельным объектом, с которым можно делать все, что душе угодно. Так же совершенно естественно наличие внутри контейнеров других объектов-контейнеров, т.е. можно говорить об уровнях вложенности расположения объекта. Уровень вложенности выражен в виде целого числа и показывает, насколько глубоко расположен адресуемый объект в цепочке контейнеров относительно текущего положения, либо относительно корня именования объектов в системе 3OS. Уровень вложенности число не всегда положительное и может указывать не только в прямом ("в глубь") направлении, но и в отрицательном состоянии - обратно ("наружу"). Если мы используем уровень вложенности для определения положения относительно другого объекта, то нужно обратить внимание на то, что уровень вложенности применим только для объектов, находящихся на одной ветви дерева контейнеров. Для ясности мы можем рассмотреть следующий рисунок:

Относительно корня ОИС: Сам корень - 0-й уровень вложенности; Объекты OBJ1 и OBJ2 - 1-й уровень; Остальные объекты находятся на 2-ом уровне вложенности.

Мы не можем с помощью уровня вложенности, например, определить положение object_2 относительно OBJ2, т.к. они находятся на разных ветвях и, указав уровень (+1) мы попадем на объекты object_3 и object_4. Отсюда следует, что уровень вложенности может служить указателем только в пределах области видимости имен для данной ветви контейнеров.

Область видимости имен, определенная для корня объектно-информационной системы, включает в себя имена всех адресуемых в 3OS объектов.

Мы уже несколько раз употребили в тексте понятие корня именования объектов или по-другому - корня OIS - точки, от которой ведется именование (адресация) всех объектов. В именах объектов корень обозначен символом "/" (прямой слеш) в первой позиции имени объекта.

Кроме стандартных или назначенных пользователем свойств, объектам присуща такая вещь как логические связи. Связи - это указатели объектов друг на друга. Связи бывают различных типов с совершенно разными свойствами, кроме того, пользователь волен сам определять новые свойства для связей. Те, кто уже знаком с теорией объектно-ориентированных баз данных, должны для себя определить, что в OIS понятие "связь" отличается от аналогичного понятия в обычных ООБД. В 3OS применяются следующие виды связей:

Связь "часть целого", указывает, что данный объект является одной из составляющих частей другого глобального объекта. "Часть целого" указывает на некий виртуальный объект, который присутствует в системе лишь как описание совокупности нескольких малых объектов, и описан лишь своим именем. Например: объекты A и B имеют зарегистрированные связи "часть целого" на объект C. Кроме того, что мы можем обращаться к отдельным объектам A и B, мы можем производить манипуляции сразу с объектом C или с объектами C/A и C/B. Отметим, что контейнеры не используют таких связей, т.к. нахождение объекта в контейнере очевидно и не нуждается в подобном описании.

Зачем вообще нужны связи? При изначальном проектировании ОС 3OS понятие связи как-то было забыто и упущено, в самом деле, необходимость таких отношений между объектами очень не очевидна. Отсутствие чего-нибудь подобного начинаешь остро ощущать только когда приступаешь к непосредственному программированию реальной объектной базы данных. Дело в том, что самой 3OS "связи" как таковые не нужны, но я считаю, что мы должны иметь возможность с помощью OIS описать полноценную объектную БД, с возможностями динамического моделирования (чтобы не использовать в системе "навески" в виде сторонних баз данных), и взаимодействия объектов, а это без объявлений связей попросту невозможно.

Рассмотрим еще один тип связей - "прямое взаимодействие". Описав такую связь, мы можем задать зависимость параметров одного объекта относительно другого. Например, мы можем описать такую связь как условие: "если object1.a > 10, то object2.s = (object1.b * 10)".

Пользователь может сам создавать новые классы связей. Например, при описании некоторой инженерной конструкции, он может задать всем объектам связи (указывающие на последовательность крепления объектов), а в качестве параметров связей указать координаты мест и способ крепления. При этом взаимодействие объектов (давление, внутренние напряжения и т.д.) можно так же описать с помощью связей.

Работа со связями очень проста и чем-то напоминает работу с самими объектами. Кстати, пора бы нам вернуться и к самим объектам, мы ведь еще не узнали, как именуются и адресуются объекты в системе. Область имен операционной системы 3OS полностью совпадает с областью видимости имен для корня OIS.

Каждый объект в системе имеет свое собственное имя, которое представляет из себя ASCIIZ-строку с максимальной длинной - 255 символов. Если первым символом объекта является прямой слеш "/", то мы адресуем объект относительно корня OIS, если нет, то от своего локального положения. Символ "/" так же является символом разделителем между именами, контейнеров, объектов и их свойств. Например, параметр A объекта OBJ5 может быть использован, как /OBJECTS/OBJ5/A = 6. Метод SUM того же объекта вызван как /OBJECTS/OBJ5/SUM (1,2,3). При этом /OBJECTS есть некоторый контейнер, который содержит в себе требуемый объект.

Ну вот, мы описали почти что все элементы объектно-информационной системы, упустив, пожалуй, что только "кодеки" и модель "объект" а "кодек" а "приложение", но их мы рассмотрим в следующей главе.