Это - копия документа, находившегося на http://dz.ru. Авторские права, если не указано иначе, принадлежат Дмитрию Завалишину и/или Евгении Завалишиной. Все изменения, внесенные мной, находятся в этой рамочке.Пожалуйста, прочитайте disclaimer. |
Должок за мной, должок.
Начав недели две тому назад говорить про старушку OS/2 и ее SOM, отвлекся я на всякие файловые системы, да так и ушел от темы. Читатель, однако, не дал забыться и напомнил. Есть, читатель, возвращаюсь, про SOM - так про SOM.
И все же, сначала еще пара слов вокруг да около. В былые времена было можно называть OS/2 объектно-ориентированной ОС. До этого было модно называть таковой NeXTStep, а после - аж WinNT.
Ни одна из этих ОС, строго говоря, объектно-ориентированной не является. Первые две имеют ОО-навеску на обычное, более или менее юниксообразное ядро. Третья имеет в самом ядре нечто, что разработчики назвали объектами. Ну назвали. Имеют право. Холода или жары от этого особо не заметно. В общем, я сразу хотел бы отложить в сторону разговоры об ОО ОС - я среди промышленных ОС таких не знаю, а если кто МакДональдс называет рестораном, то это его право. :-) Это к вопросу о терминологии. OS/2 - это традиционного вида ОС с ОО-подсистемой. Весьма масштабной и интересной, но подсистемой.
Часто говорят об OS/2 как об ОС с ОО-шеллом. Это так, но шеллом дело не кончается.
Но лучше по порядку. Итак, DSOM. Или, для простоты, SOM. System Object Model. Ряд соглашений, которые оговаривают входной язык и двоичный формат некоторых программных модулей. Код модулей может быть написан на любом (возможно - необъектном) языке - SOM предлагает объектное обрамление для процедурных языков. То бишь на SOM IDL вы описываете структуру и интерфейс классов, а код методов пишется на чем угодно. Сам по себе SOM - это не программа, не утилита - это спецификация, согласно которой можно делать объектно-ориентированные программы с динамическим связыванием. Система, базирующаяся на SOM, может компоноваться из классов по мере их появления на свет, причем тут допускается неслабая свобода. Например, если в системе существовал класс A, а Вася Пупкин породил из него дочерний класс B, то, проапгрейдив систему он может получить новую версию класса A, и его дочерний класс не придется перекомпилировать - благодаря динамическому связыванию и законам совместимости более поздних версий с предыдущими в SOM все будет продолжать работать!
Это не только теория. На базе SOM в OS/2 сделан этот самый Workplace Shell - основной интерфейс системы. Все графические элементы этого шелла - SOM-классы. Фолдеры, файлы в них, элементы панели управления, рабочий стол, тулбары и ланчпады - все написано на SOM. Всех эти компоненты поддаются модификации путем замещения - унаследовав от стандартного WPFolder какой-нибудь WP_dz_Folder, я могу перехватить и изменить в нем стандартные функции WPFolder, добавить свои, убрать лишние, и потом сказать системе - теперь вместо WPFolder везде используй WP_dz_Folder. И будет так. Оригинальный WPFolder спрячется, будет действовать незримо, как составная часть унаследованного класса.
Внешне это проявляется так. Вы ставите на версию 2.0 ОС утилиту, которая добавляет файлам в контекстное меню пункт "послать на луну", а пункт "удалить" снабжает автопроверкой - если это .bak, то подтверждение не спрашивается, а в остальных случаях - спрашивается. Выражается это в том, что утилита порождает от класса WPFile подкласс WPSuperFile, и "подменяет" им WPFile. Новые свойства автоматически распространяются и на все классы, порожденные от класса WPFile. В том числе и на все специфические разновидности файлов, то есть классы, предоставленные системе прикладными программами для обслуживания своих типов файлов.
Далее при апгрейде системы новый системный код WPFile "подкладывается" под WPSuperFile без необходимости перекомпилировать последний, и весь "пирожок" собирается вновь на новом основании. При этом в нем меняется все, что окружало наш WPSuperFile - и класс, от которого он унаследован, и классы, унаследованные в оригинале от WPFile, а теперь уже, фактически - от WPSuperFile. И все продолжает работать. Не поверил бы, если бы сам не попробовал. Увешанный ляльками и свистками WPShell легко переживает апгрейд ОС, и все свистки остаются на местах и работают.
Что такое DSOM? То же самое, но плюс работа по сети или просто между процессами - объекты DSOM могут общаться между собой через границу адресного пространства процесса. Практически, я считаю, что лишь DSOM имеет право на жизнь, ибо надежность WPShell-а, основанного на обычном SOM-е, всегда была обратно пропорциональна степени его увешанности всякими дополнениями, а это обидно. С DSOM надежность выше, так как каждую феньку возможно оставить в отдельном процессе.
Читатель, мало знакомый с OS/2 может не совсем понять, о чем идет речь, когда я пишу слово "фенька" или "примочка", говоряо шелле OS/2. Дело в том, что объектная модель пользовательского интерфейса, на самом деле, довольно вкусная штука. В качестве "примочек" к шеллу OS/2 выпусклись вещи довольно любопытные как академически, так и практически.
К примеру, FTP-клиент в виде фолдера. Открываешь его, лазаешь там в нем, а найдя нужный файл драг-дропом отправляешь его к себе - в результате он выкачивается. Не так давно это появилось в составе Эксплорера. Я этим пользовался лет пять тому назад под OS/2. Или был еще такой personal information manager для полуоси - вроде как outlook, только никакую программу запускать не надо, просто есть специальный тип фолдера, в котором лежат напоминания и открываются сами, когда приходит время. В фолдере другого типа лежат контакты - информация о людях, с которыми ты работаешь. В третьем лежат адреса мест, где часто случаются встречи. И т.п.
Все это - объекты шелла. Все они поддаются автоматизации через стандартный системный язык Rexx и могут быть подвергнуты издевательствам посредством наследования классов. Фактически, шелл в OS/2 стал не просто интерфейсом система-человек, но новой средой программирования, ОС внутри ОС.
Будем, впрочем, справедливы - NeXT тоже сделал крепкий шаг в этом направлении, и неизвестно, где была бы OS/2, если бы не NeXT, и кто из них "первый начал".
Да, впрочем, важно ли. Обе ОС стали интереснейшими экспериментами на пути к новой концепции построения операционных систем, и обе они в прошлом. Понимать их и делать выводы тем, кто хочет шагать дальше - надо, а большего, наверное, им уже не дано.
На OS News нашел ссылку на EROS - the Extremely Reliable Operating System. Еще один шаг ОСостроения в правильную сторону. Возможно, EROS реализует все те концепции, которые я считаю необходимыми в современной ОС. Увы, даже создатели этой, довольно продвинутой системы не так революционны, как того хотел бы я, но, тем не менее, работа очень и очень неплоха.
1. Это - система "без шатдауна" - она регулярно фиксирует свое состояние на диске и при падении питания, к примеру, может рестартовать с контрольной точки. Поддержки со стороны прикладных программ для этого не требуется.
2. Это - в существенной степени ОО ОС. В ней живут не столько программы, сколько объекты.
3. Это - ОС с концепциями защиты a la Intel iAPX-432. Идея - объект имеет доступ только к тому, к чему ему дали веревочки. Доступ ко всему иному он просто никак не может получить. Не потому, что ядро проверяет его права на доступ ко всему на свете. Никто ничего не проверяет. Он просто видит ровно то, что ему показали. Остальной части системы для него не существует вообще.
В качестве примера авторы ОС предлагают sendmail - через него взломать ОС нельзя, как бы плохо он не был написан: просто с точки зрения sendmail-а весь мир состоит из охапки почтовых ящиков и 25-го порта TCP - хоть ты его наскрозь проломи, а кроме почтовых ящиков ни до чего не достанешь.
Идеально!
Создатели системы, говоря о ее плюсах, напирают на ее высокую надежность как основной плюс. Ерунда это все. Система движется в сторону совсем новой парадигмы - мира, где не требуется понятие "файл" или "программа". По той простой причине, что в нем не надо ничего запускать или открывать. Ведь если у ОС нет шатдауна, не нужно закрывать приложения, а значит, не нужно их запускать, а значит - нет необходимости вообще задумываться об их существовании кроме как на этапе инсталляции. Установка в систему класса "Microsoft Word" приводит к возможности создавать объекты этого класса, то есть вордовские документы. Захотел поредактировать - вперед, максимизируй документик-то, и редактируй. Расхотел - минимизируй, дальше иди. Что значит "запустить ворд"? Что значит "меню File, пункт Open"? Что за причина об этом думать?
Кстати, Микрософт тоже идет примерно в том направлении - оставаясь, увы, в рамках традиционной парадигмы. Внешне это выражается в отходе от MDI-интерфейса, того самого, когда есть окно программы и в нем - окна документов. Теперь будут только окна документов. А программа... кому она нужна.
Еще пара слов об EROS. Система написана на C++, исходники ее доступны с Интернета и шикарно пролинкованы насквозь - можно щелкать по имени функции и попадать в исходник, где она лежит. Потрясающе удобно для изучения, и, я подозреваю, работы с исходниками вообще. Даешь компайлеры, которые понимают html-c++ :-).
Дело Левина, человека, несколько лет тому назад обокравшего Ситибанк, очередной раз описано в прессе. Огонек, начало и продолжение статьи.
Интересно написано. Но... Наверное, до конца правдиво это дело не будет освещено никогда. Все, кто пишет о нем, спотыкаются об одну деталь - как именно Левин взломал банк, никто не знает. Все знают, что у Левина был логин/пароль, через которые он и лазил. Всем теперь уже известно, что Левина в банке пасли чуть ни с первого дня его геройств. Всем очевидно, что Левин, воруя деньги, вел себя крайне неосмотрительно, просто-таки по-идиотски, и, в итоге, сдал ФБР вагон сообщников, и, в результате, себя. Да еще и надумал выехать из страны, в результате чего его и взяли. (По нашим законам, внутри страны - не могли.) Операции по извлечению денег проводились крайне необдуманно, провал серии операций "хакера" не насторожил - он даже не сменил место прозвонки, к примеру. Казалось бы, имея доступ к миллионам долларов, нужно не пожалеть денег на съем нескольких левых квартир на имена других людей, чтобы хоть телефон конторы не светить. В Питере, тем паче, это и не так дорого, да и окраина сойдет... нет, он ломится в сеть из офиса своей фирмы раз за разом, так что вычисляют его в один шаг простым АОН-ом.
И это - ушлый и опытный хакер, нашедший кривую тропинку в святая святых огромного банка? Тонкий знаток протоколов и операционных систем? Полноте. Сказки про немытого засранца, который все понимает в компьютерах, и ничего во всем остальном - из фильмов. В жизни люди либо умны, но тогда уж во всем, либо - не очень. И опять же, это проявляется повсеместно. Левин не проявил ума во всей известной части истории, так что странно предполагать, что вот пока он ломал Ситибанк, он был умным, а когда, сломав, воровал деньги - поглупел.
Тем более, что журналисту не раз и не два говорили - не ломал Левин банка. Он Виндоуз 3.11-то не сломает без посторонней помощи. Не верит журналист. Считает, что Левин сам сломал. Но как - непонятно. Да никак, уважаемый. Ну не хакер он.
И еще - "Питерские ноды" - это узлы ФИДО, расположенные в Питере. А не хакеры вовсе. Господи, неужели нельзя у самой ноды спросить было, что это слово значит, а? Вот не понимаю я этого...