search
main
0

Универсальное средство. Несколько слов о UNIX-подобии и POSIX-совместимости

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

Когда мы говорим о подобных операционных системах, наибольшее право на существование имеют два термина – «UNIX-подобная ОС» и «POSIX-совместимая ОС». В принципе их нередко рассматривают как синонимы, но с определенными оговорками. Во-первых, термин UNIX представляет собой зарегистрированную торговую марку. Во-вторых, понятие POSIX-совместимости выходит за рамки UNIX-подобия, то есть сходства с неким первозданным UNIX’ом и развития из него. В качестве простейшего примера можно привести известную всем операционную систему Linux, которая создавалась «с чистого листа», на основании только стандартов POSIX и не содержит в себе ни единой строчки оригинального UNIX.

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

Благодаря игре

Итак, в 1965 году компании Bell Telephone Laboratories (или попросту Bell Labs -подразделение AT&T), General Electric Company и Массачусетский институт технологии начали разрабатывать новую операционную систему, под названием MULTICS (MULTiplexed Information and Computing Service). Целью проекта было создание многозадачной ОС разделения времени, способной обеспечить одновременную работу нескольких сотен пользователей.

От Bell Labs в работах приняли участие Кен Томпсон и Денис Ритчи. Правда, проект не удался, зато он имел весьма перспективное побочное следствие: Томпсон написал под так и не созданную систему игру Space Travel. Как видите, индустрия компьютерных игр и тогда выступила двигателем прогресса.

В 1969 году проект MULTICS был закрыт, и играть Кену стало не на чем и не под чем. Правда, в закромах Bell Labs обнаружилась позабытая машина PDP-7, которая и была использована для этих целей. Поскольку Space Travel под установленной там операционной системой не работала, пришлось заодно написать для нее собственную ОС. Будучи созданной на базе MULTICS, она получила название UNICS в силу того, что пользователь у нее первоначально был один. Позднее к проекту присоединился и Денис Ритчи, в честь чего название трансформировалось в UNIX. Система быстро набирала популярность внутри AT&T, но в течение первых пяти лет своего существования за ее пределы так и не вышла.

Концепция

За это время UNIX успела сформироваться как концептуальная целостность. В ней возникли:

понятие файла как универсального интерфейса доступа ко всему на свете;

командный интерпретатор (shell) как столь же универсальное средство взаимодействия пользователя с системой;

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

Исторически первым созданным компонентом стала простая файловая система, дальнейшее развитие которой впоследствии появилось в первых версиях UNIX и сейчас известно как System V file system (s5fs). Чуть позже ими были добавлены подсистема обработки, простой командный интерпретатор, а также небольшой набор утилит.

В следующем году в процессе переноса новой ОС на свежекупленную PDP-11 в систему добавили несколько утилит обработки текста. Также в течение этих первых пяти лет был создан компилируемый язык высокого уровня С (Си).

Все нововведения в первозданном UNIX находили отражение в его титулатуре. Сначала они знаменовались сменой версий, которых было порядка десяти. Затем количество перешло в качество, и версии стали системами (до System V включительно, которой суждено было стать последней).

«В образовательных целях»

Из-за антимонопольных ограничений, наложенных на компанию AT&T, продавать UNIX она не имела права. Впрочем, выход нашелся – начиная с 1974 года исходные коды системы стали передавать в университеты (преимущественно американские) и прочие учреждения «в образовательных целях», как обычно говорится в источниках. Исходные коды UNIX (вернее, в то время не более чем ее прототипа) передавались целиком, с правом их изучения, модификации, доработки и прочего потрошения.

Правда, для производства таких действий требовалось обладание лицензией на исходный код. Лицензия же могла быть предоставлена AT&T вместе с самой системой, но уже за деньги (хотя и символические).

Калифорнийский университет в Беркли получил одну из первых лицензий на операционную систему UNIX в декабре 1974 года. За несколько лет группа выпускников университета, в состав которой входили Билл Джой (впоследствии основавший компанию Sun) и Чак Хэлей, разработали ряд утилит для этой системы, в том числе редактор ex и компилятор языка Паскаль. Также команда университета Беркли переработала существующую файловую систему в новую, получившую название FFS (Fast File System). Ее принципы легли в основу всех последующих файловых систем для UNIX-подобных ОС. Ими же впервые были введены в командную оболочку такие возможности, как управление заданиями и ведение истории команд.

Все созданные приложения были собраны в единый пакет под названием Berkeley Software Distribution (BSD). Весной 1978 года он продавался по цене 50 долларов за одну лицензию. Первые версии BSD состояли из дополнительных приложений и утилит, сама же операционная система тогда еще не подвергалась изменению или передаче.

Две линии

В том же году университет Беркли приобрел машину VAX-11/780 и операционную систему UNIX/32V, портирование которой на этот компьютер осуществила группа BTL в Холмделе, штат Нью-Джерси. Компьютер VAX имел 32-разрядную архитектуру и мог использовать до 4 Гбайт адресного пространства, однако имел всего лишь 2 Мбайта физической памяти.

Примерно в это же время Озалп Бабаоглу разработал систему страничной виртуальной памяти для VAX и добавил ее в ОС UNIX. В результате в конце 1979 года появилась новая версия ОС – 3BSD, которая стала первой операционной системой, созданной университетом Беркли.

После появления системы виртуальной памяти агентство DARPA (Defence Advanced Research Projects Agency) начало финансирование разработки систем UNIX в Беркли. Одной из главных задач, стоявших перед DARPA, являлась интеграция в создаваемой системе набора протоколов TCP/IP (Transmission Control Protocol/Internet Protocol).

Наиболее существенным этапом в развитии UNIX в университете Беркли был выпуск в 1982 году системы 4.2BSD: именно в ней были реализованы файловая система FFS и большинство прочих специфических особенностей BSD-систем. Не случайно тип раздела FreeBSD по сей день идентифицируется как раздел 4.2BSD, а до недавнего времени этот же идентификатор имел и разделы Net- и OpenBSD. С этого момента стало реальностью сосуществование двух самостоятельных линий развития UNIX – System III/V и BSD UNIX.

Путевка в жизнь

Однако и сама AT&T не забрасывала свое детище во всех его проявлениях. Из недр компании последовательно выходят System III, System V, System V Release 2 (SVR2) и наконец System V Release 3 (SVR3). Именнно SVR3, разработанной в 1987 году, суждено было стать последним экземпляром чистой линии первозданного UNIX. Потому что уже System V Release 4 (SVR4), появившаяся через два года, включила в себя множество новшеств из разработки 4BSD – интеграцию с TCP/IP, поддержку FFS, берклианскую реализацию механизма виртуальной памяти и многое другое.

Портируемость UNIX была оценена производителями специфического оборудования – IBM, Sun, Hewlett-Packard, DEC и другими. Базируясь на SVR3, BSD и SVR4, они адаптировали систему под собственные архитектуры, создав такие варианты, как AIX, SunOS, HP-UX, Digital UNIX соответственно.

Все эти операционные системы были коммерческими (проприетарными), однако будучи жестко привязанными к аппаратуре фирм-производителей, в свободной продаже (подобно нынешним Windows) они не присутствовали. Софтверные же фирмы подняли мутный вал чисто коммерческих UNIX’ов. Это были, в частности, Interactive Systems и Santa Cruz Operations. Не имея собственных аппаратных платформ, они адаптировали UNIX под общераспространенные платформы, коими были в то время сначала PDP, а затем и IBM PC. В частности, именно SCO UNIX стала первой представительницей семейства UNIX, портированной на компьютеры с процессором Intel (конкретно – на i386).

Разработки велись и другими коллективами. Например, университет Карнеги-Меллона работал над микроядерной UNIX-совместимой системой Mach. Самостоятельной жизнеспособности она так и не показала, но, во-первых, под ее воздействием Энди Танненбаум написал свою игрушечную систему MINIX, которая вдохновила Линуса Торвальдса на создание Linux. А во-вторых, микроядро Mach нынче составляет сердце MacOS X.

Как было сказано ранее, UNIX в разных его проявлениях получил широкое распространение в университетах всего мира. Более того, он стал основой базового академического образования в области Computer Sciences. И потому возникла необходимость в соответствующих учебных пособиях, каковые и появились во множестве.

К сожалению, из-за ограничений на распространение, привязки большинства вариантов к дорогим аппаратным платформам и просто из-зи своей сложности это обучение было весьма проблематичным. Поэтому профессор Амстердамского университета Энди Танненбаум написал «пионерский» вариант UNIX – ОС Minix, предназначенный исключительно для образовательных целей. И распространял его в виде набора дискет вместе со своим учебником по теории операционных систем.

Рождение Linux

В 1990 году студент университета Хельсинки Линус Торвальдс, пожелав изучить внутреннее устройство процессора своей новой машины (i386) и одновременно приобщиться к UNIX, которую он изучал в своем вузе, купил книгу Танненбаума вместе с Minix. Естественно, ему потребовался терминальный доступ к университетской машине, чтобы выходить в Сеть из дома.

В Minix штатно подходящей программы не обнаружилось, и Линусу пришлось сочинить ее. Поскольку под управлением ядра Minix она работала плохо, волей-неволей потребовалось новое ядро. Его нужно было куда-то размещать – так родилась новая файловая система ext. Для запуска терминальной программы понадобилась какая-то среда – для этой цели Линус портировал на свое ядро командную оболочку bash, разработанную в недрах проекта GNU. Все это требовалось чем-то компилировать, так что к bash пришлось присоединить еще и единственный свободный из наличных компиляторов Си – GNU C Compiler (известный как gcc).

Как итог в августе 1991 года появилось объявление о создании новой операционной системы, которая получила название Linux – в определенной степени случайно, ибо так именовался домашний каталог Линуса на том ftp-сервере, на котором она впервые была выложена для свободного доступа. Этим автор дал жизнь наиболее грандиозному по количеству разработчиков проекту в мире программного обеспечения. Он просто предложил всем желающим принять участие в дальнейшем совершенствовании как самой ОС, так и тех ее фрагментов, которые его лично мало интересовали.

То, что Linux изначально разрабатывался на основе системы стандартов POSIX, гарантировало, что такой призыв встретит понимание со стороны многочисленных UNIX-программистов, ведь в любом случае их усилия не пропали бы даром и могли быть использованы в любой иной POSIX-совместимой системе.

Здесь имеет смысл чуть подробнее рассказать о стандарте POSIX.

POSIX: время собирать камни

В силу все больших различий между клонами мог оказаться под угрозой один из краеугольных камней UNIX-идеологии – портируемость приложений. И, соответственно, это вызвало процесс упорядочивания стиля разработки. AT&T создала документ, описывающий спецификации, которым должна соответствовать система, претендующая на звание Unix – SVID (System V Interface Definition). Была даже разработана программа, которая проверяла претендента на соответствие этим спецификациям – System V Verification Suite.

По ряду причин это не устроило других производителей UNIX, в результате чего возникло несколько организаций, создавших свои версии стандартов для операционных систем, расширенные по сравнению со SVID. Наибольшее признание из таких проектов заслужил стандарт POSIX (Portable Operation System Interface based on uniX). Набор соглашений POSIX был разработан международной организацией под названием IEEE. Термин Portable в названии первоначально означал, что соответствующая POSIX-спецификациям система может быть перенесена на любое компьютерное «железо», то есть на машины с любой архитектурой, ведь тогда ОС UNIX-семейства функционировали не только и не столько на PC.

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

Вера в лучшее

Идея создания системы, свободно распространяемой в исходных кодах, витала и среди разработчиков BSD UNIX. К началу 90-х выяснилось, что исходного коммерческого кода, полученного в наследство непосредственно от UNIX, там осталось немного. Было решено создать общедоступную UNIX-систему на общедоступной платформе Intel x86, эпоха которой уже началась.

Вильям и Линна Джолитц, базируясь на одном из побегов ветви 3BSD (BSD Net/2), дописали недостающие компоненты и создали 386BSD – первую BSD-систему, претендовавшую на звание открытой в собственном смысле слова. 386BSD стала стартовой берклианской системой, портированной на IBM-совместимые компьютеры. Поначалу она была не очень работоспособна, но благодаря обширному кругу разработчиков с помощью различных дополнений (patchkit’ов) сумела набрать силу.

В 1993 году три последних координатора «Заплаточного проекта» – Джордан Хаббард, Нейт Вильямс и Род Граймс – решили «привести промежуточный снапшот 386BSD в порядок, исправив множество проблем, которые механизм patchkit не мог решить» (здесь и далее цитаты Хаббарда). Вскоре командой разработчиков была достигнута договоренность с Walnut Creek CDROM, который «не только поддержал идею распространения FreeBSD на CD, но также пошел далеко вперед и предоставил проекту компьютер для работы и быстрый доступ в Интернет. Без почти беспрецедентной веры в этот пока еще полностью неизвестный проект вряд ли можно было раскрутить FreeBSD так быстро и столь успешно».

В декабре 1993 года совместные усилия проекта FreeBSD и Walnut Creek CDROM обрели зримое воплощение в виде FreeBSD 1.0, распространявшейся как с ftp-серверов, так и на CD.

На основе 4BSD в это же время развивались еще два проекта – BSD/OS и NetBSD. Первый имел коммерческий статус и ныне воплотился в 386BSD – Unix-подобную систему, распространяемую за деньги, но с исходными текстами. Проект NetBSD зародился даже несколько раньше, чем FreeBSD (первый выпуск датируется апрелем 1993 года), и также имел целью реализовать полностью открытый и свободный вариант Unix. Но в отличие от FreeBSD здесь упор был сделан на максимально возможную мультиплатформенность.

«Вы свободны!»

И тут правообладатели Unix – компания Novell, приобретшая у AT&T права на исходный код и торговую марку, решила заявить о своих правах. В результате разработчикам FreeBSD пришлось изъять оставшиеся фрагменты первоначального кода, которые, к слову, были критически важными. Гильотинированная версия получила имя 4.4BSD-Lite, и всем претендентам на BSD-наследие было рекомендовано в добровольно-принудительном порядке перейти на ее использование.

Впрочем, крахом свободных BSD-систем вопреки ожиданиям это не стало. И в декабре 1994 года вышла FreeBSD 2.0. Аналогичным путем и примерно в то же время были решены лицензионные проблемы и разработчиками NetBSD. Увы, ни та, ни другая системы уже не были лидерами в мире свободных Unix-клонов: на этом месте прочно утвердился Linux.

Некоторое время оба свободных BSD-клона развивались параллельно – каждый в своем направлении. NetBSD портировалась на все новые (точнее, в основном все старые) платформы, тогда как разработчики FreeBSD все более эффективно использовали возможности самой распространенной из них.

Однако в 1996 году произошло первое ветвление в BSD-мире: от NetBSD отделился самостоятельный проект OpenBSD, в котором мультиплатформенность надстроена ориентацией на максимальную безопасность.

Какая разница?

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

BSD-системы различаются в основном ядрами, в то время как базовый набор прикладных программ в них чрезвычайно близок (местами до полной идентичности). Соответственно внешняя разница между ними меньше, чем между некоторыми дистрибутивами Linux, однако внутренняя идеология работы несколько различна. Разница же эта определяется ориентацией системы. К примеру, NetBSD ориентирован на мультиплатформенность, OpenBSD – на безопасность. FreeBSD жестко предопределенной направленности не имеет, зато наибольшее распространение получил в качестве сервера и операционной системы для разработчиков ПО. Что, впрочем, не мешает ему быть и «домашней» операционной системой.

Несмотря на то что существует довольно большое разнообразие дистрибутивов Linux, ядро у них всех одно, оно разрабатывается и поддерживается под руководством самого Торвальдса, что, впрочем, не мешает творческим личностям и коллективам «патчить» его под свои нужды. Различаются же они сопутствующим комплексом средств и программным обеспечением. Тем более что характерная черта всех Linux’ов – отсутствие базового набора программ. Для каждого из них существует большой выбор альтернативного софта, и пользователь может выбрать именно ту программу, которая ему больше по вкусу.

Кстати, такого ограничения, строго говоря, нет ни у одной UNIX-подобной системы ввиду того, что все программное обеспечение для них построено на основе POSIX-стандартов, а потому достаточно просто переносится с системы на систему.

И еще один важный момент «из жизни» этих систем – они распространяются как в виде прекомпилированных пакетов, так и в виде исходных кодов. Первый вариант аналогичен классической продукции Windows, а вот второй гораздо интереснее, поскольку позволяет оптимизировать вашу операционную систему под ваше конкретное аппаратное обеспечение, что заметно повышает ее производительность.

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

Александр КОЛОМОЕЦ, студент Днепропетровского национального университета, Днепропетровск,

Украина

Оценить:
Читайте также
Комментарии

Реклама на сайте