Введение в POSIX'ивизм


Грани открытости


Во вступлении к этой главе я упомянул о так называемых открытых системах (Open Systems) - понятии, семантически близком к термину Open Sources Software. И тем не менее, понятия эти - разные, и в принципе между собой не связаны. Потому что под открытой системой понимается просто-напросто "система, которая состоит из компонентов, взаимодействующих друг с другом через стандартные интерфейсы" (Жан-Мишель Корну, один из авторов руководства Французской ассоциации пользователей UNIX; цитировано по: С. Д. Кузнецов Операционная система UNIX).

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

Стандартные интерфейсы для открытых систем регламентируются набором соглашений POSIX (Portable Operating System Interface), разрабатываемые двумя организациями - IEEE (Institute of Electrical and Electronics Engineers, Inc.) и Open Group. Соглашения эти, получившие звучный титул стандартов POSIX, опирались в первую очередь на опыт разработки систем Unix. И. следовательно, все Unix-подобные системы, как проприетарные (Solaris, например, или AIX), так и свободные (Linux или FreeBSD) по определению являются POSIX-совместимыми, представляя собой конкретные реализации соответствующих стандартов.

Собственно, термины "Unix-подобная ОС" и "POSIX-совместимая ОС" можно было бы рассматривать в качестве синонимов. И на протяжении всего данного сочинения я так и делаю. Тут, однако, нужно иметь ввиду несколько обстоятельств.

Во-первых, термин "Unix" представляет собой зарегистрированную торговую марку. И продолжающееся по сей день крестоносное сутяжничество SCO против IBM (и попутно - против всего движения Open Sources и Free Software), исход которого остается неясным, в немалой степени будет способствовать его дискредитации.
Имея в своем осадке лишь тот положительный момент, что очередной раз привлекло внимание к понятию Open Systems как системам, следующим открытым (то есть общедоступным) стандартам. Достаточно вспомнить попытку демонстрации "украденного" из Unix кода в Linux-ядре.

Во-вторых же, и главных, понятие POSIX-совместимости, строго говоря, выходит за рамки Unix-подобия, то есть сходства с неким первозданным Unix'ом. В той или иной мере соответствие POSIX-стандартам (хотя и неполное) признается разработчиками ОС QNX, генетически с Unix никак не связанной. Да и Linux представляет собой попытку воспроизведения функциональности Unix с "чистого листа", не только без использования ее кода, но и без доступа к нему. При этом Линус опирался не столько на устройство самой системы Unix, сколько именно на стандарты POSIX. Впрочем, подробнее об этом будет говориться в .

Следует заметить, что и для Windows линии NT/2000/XP декларируется соответствие стандартам POSIX. Однако, как это в обычае у фирмы-разработчика этих продуктов, стандарты эти понимаются тут весьма своеобразно и трактуются весьма расширительно в плане "улучшения". А потому отнесение Windows к POSIX-совместимым системам по меньшей мере спорно.

Все стандарты POSIX (а в это семейство входит несколько групп соглашений, например, стандарты на интерфейс прикладных программ, утилит и оболочек, и т.д.) являются открытыми в понимании, близком к Open Sources. То есть они общедоступны - (почти) любой человек с "улицы" может получить к ним доступ и создать в соответствии с ними свою открытую систему (откуда и пошел термин Open Systems).

Однако открытость основополагающих стандартов ни в коей мере не подразумевает открытости созданных в соответствие с ними операционных систем. И само по себе соответствие POSIX-стандартам не влечет их свободного (тем более - бесплатного) распространения. Кратко говоря, под Open Systems, в отличие от Open Sources, можно понимать просто системы, основанные на открытых (=общедоступных) стандартах.А уж на каких условиях эти системы распространяются - определяется лицензиями, которые вольно было приписать им разработчиками.


Содержание раздела