Первая версия операционной системы UNICS (UNIplexed Information and Computing System) увидела свет в сентябре 1969 года, а вторая получила привычное и более созвучное имя – UNIX, которое дошло до наших дней только в названии Tru64 Unix. Связано это в первую очередь с тем, что торговая марка Unix, зарегистрированная компанией AT&T, активно использовалась для отстаивания через суды прав на эту ОС. После разделения AT&T торговая марка Unix меняла владельцев и в конце концов оказалась в распоряжении Novell, которая продала компании Santa Cruz Operation (SCO) существующие лицензии и право на совершенствование ОС, а права на торговую марку передала консорциуму X/Open. Последний затем объединился с Open Software Foundation, образовав консорциум The Open Group. Эта общественная организация сформулировала требования к операционным системам, претендующим на звание Unix-совместимых. Сегодня, чтобы подтвердить отношение к Unix, достаточно пройти процедуру сертификации Single Unix Specification (ранее POSIX). Забавно, что права на исходные коды Unix компания Novell оставила себе и сейчас, видимо, интегрирует их в собственную версию Linux.
Отмотав историю назад и взяв дошедшие до наших дней дистрибутивы Unix, рассмотрим пути становления наиболее значимых из них: FreeBSD, NetBSD, OpenBSD, PC-BSD, DragonFly BSD, Darwin, MacOS X, iPhone OS, AppleTV, Solaris, OpenSolaris, OpenServer, AIX, Tru64 Unix, HP-UX и Linux.
Дистрибутив Беркли
Можно выделить две большие группы тесно связанных между собой операционных систем – BSD и Mac OS.Первая версия дистрибутива BSD (Berkeley Software Distribution, дистрибутив Беркли) была выпущена 9 марта 1978 года в Калифорнийском университете Беркли, а позже получила наименование 1BSD. В качестве основы для этой ОС были взяты исходные тексты шестой редакции Unix Time-Sharing System – этот набор был развитием кода изначального UNICS в лабораториях AT&T. Впрочем, при разработке дистрибутива 3BSD, выпущенного в марте 1980 года, были использованы и коды Unix 32V, созданные на основе более поздней, седьмой редакции Unix Time-Sharing System. Всего же разработчики AT&T выпустили десять редакций Unix Time-Sharing System, последняя из которых увидела свет в октябре 1989 года, видимо, к двадцатилетию первой версии. Однако коды последних двух редакций уже практически не использовались в других операционных системах.
В это время дистрибутив Беркли уже имел версию 4.3BSD, на основе которой в июне 1991 года компанией Berkeley Software Design, Inc (BSDI) был собран сетевой дистрибутив BSD Networking Release 2,
впоследствии он получил второе имя 4.3BSD Lite. Этот дистрибутив, разработанная на его базе версия 386/BSD и созданный при урегулировании судебного иска 4.4BSD Lite 1 легли в основу системы NetBSD, первая версия которой была выпущена в октябре 1994 года. Причиной переименований был иск к BSDI компании Unix Systems Laboratories, которая владела исходными кодами Unix. С тех пор как NetBSD освободилась от спорных частей кода Unix, она развивалась практически независимо от других ОС. Интересно, что ее новые версии всегда появлялись в декабре: 9 декабря 2004 года – версия 2.0, 23 декабря 2005 года – 3.0, 19 декабря 2007-го – 4.0 и только последняя, пятая версия была выпущена 29 апреля 2009 года. Из первой версии NetBSD в октябре 1995 года выросла первая версия ОС OpenBSD, которая развивается и по сей день. В октябре 1996 года была выпущена вторая версия этой разновидности BSD, а в мае 1998 года в нее была добавлена часть кода 4.4BSD Lite 2, что дало жизнь версии OpenBSD 2.3: третья версия была сформирована к 27 ноября 2001 года, четвертая – 1 ноября 2006-го, а последняя версия этого дистрибутива – OpenBSD 4.5 – опубликована 1 мая 2009 года.
Перенесенный на платформу Intel 80386 дистрибутив Беркли 386/BSD был использован и для формирования FreeBSD, первая версия которого была опубликована в декабре 1993 года, а через год была выпущена и вторая версия. В третьей версии FreeBSD, как и у OpenBSD, были заимствования из очищенного от спорных кодов Unix дистрибутива 4.4BSD Lite 2. В марте 2000 года на основе версии FreeBSD 3.4 был разработан дистрибутив FreeBSD 4.0, и в том же месяце началась работа над пятой версией, которая вышла через три года, при этом четвертая версия в этот момент уже была на уровне FreeBSD 4.8. Практически до 2005 года эти версии развивались параллельно. В том же году на основе версии 5.4 был выпущен дистрибутив FreeBSD 6.0, а 27 февраля 2008 года ему на смену был сформирован FreeBSD 7.0. Современная версия этого дистрибутива имеет индекс 7.2, а 7 июля этого года разработчики приступили к созданию восьмой версии FreeBSD.
Изначально BSD представлял собой исследовательский дистрибутив, который использовался для проведения экспериментов в области операционных систем. В частности, именно в него впервые был интегрирован транспортный протокол TCP/IP, что и стало причиной раскола с коммерческой ветвью ОС Unix, использовавшей протокол копирования файлов UUCP.
Коды этих исследовательских дистрибутивов оказали серьезное влияние на такие современные системы, как Mac OS X, Linux, Tru64 Unix, HP-UX и Solaris. Из современных наследников Unix только AIX и OpenServer не имеют отношения к BSD, что объясняется открытостью лицензии BSD, которая, в отличие от используемой для распространения Linux лицензии GPL, допускает применение собственных исходных текстов в коммерческих проектах с другой формой лицензирования. Однако ОС серии BSD не блещут удобством для пользователей, поэтому за пределами научной среды и профессиональных применений распространены слабо. Предпринималось несколько попыток сформировать пользовательские дистрибутивы BSD по модели Linux, в результате чего на основе исходных текстов FreeBSD были построены другие ОС семейства, из которых в 2009 году были обновлены DragonFly BSD и PC-BSD. В частности, в первом дистрибутиве «Стрекозы» DragonFly BSD 1.0 от 2004 года были использованы коды FreeBSD 4.8, хотя в дальнейшем появились заимствования и из пятой версии FreeBSD. Текущая версия этого дистрибутива была выпущена в 2006 году с индексом DragonFly BSD 2.2.1. В том же году вышла версия PC-BSD 1.0, созданная на базе кодов FreeBSD 5.4 и 6.0, а потом разработчики периодически брали коды из новых версий шестерки и семерки. Версия PC-BSD 7.0, которая появилась на свет в 2008 году, была основана на PC-BSD 1.5.1 и FreeBSD 7.0, а современная версия этой операционной системы (июль 2009 года) имеет индекс PC-BSD 7.1.1.
Надкушенное яблоко
В отличие от предыдущей операционной системы компании Apple, система Mac OS X входит в экосистему Unix, хотя является не совсем обычной, несмотря на то что ведет свою родословную от FreeBSD. На самом деле базовая ОС для Mac OS X – это первая микроядерная ОС Mach, появившаяся в 1985 году.
Идея Mach была в том, чтобы отказаться от обслуживания с помощью ядра всей периферии компьютера и заниматься только распределением процессорного времени и памяти, отдав работу с дисковой подсистемой, сетью, видеоплатой, клавиатурой и другими устройствами на откуп сервисам, запущенным поверх микроядра. При этом теоретически может возникнуть ситуация, когда одна операционная система будет в состоянии без виртуализации исполнять приложения, написанные для разных ОС.
Микроядро не может работать без сервисов и приложений, которые бы обслуживали периферию, поэтому разработчикам Mach пришлось реализовать сервисы другой операционной системы, взяв в качестве основы дистрибутив 4.2BSD. Именно поэтому их ОС изначально представлялась как BSD, хотя такой ответ выдавало не микроядро, а сервисы, работающие поверх него. Вторая версия Mach была выпущена в 1986 году и стала основой для бета-версии операционной системы NeXTSTEP 0.8, разработанной программистами компании NeXT, в которой часть кодов была заимствована уже у другого дистрибутива 4.3BSD. Впрочем, NeXTSTEP 1.0 заимствовала часть кодов из версии Mach 2.5.NeXTSTEP приобрела славу очень удобной операционной системы, однако, к сожалению, она имела туманные рыночные перспективы. С 22 июля 1996 года эта ОС носит название OPENSTEP 4.0, а после покупки разработчиков NeXT компанией Apple версия 4.2 легла в основу проекта Rhapsody DR1, куда были добавлены коды «чистого» дистрибутива 4.4BSD Lite 2. Впрочем, в майской версии 1998 года этого проекта появились заимствования и из NetBSD 1.3. На основе этого варианта и были
16 марта 1999 года выпущены операционные системы Mac OS X Server 1.0 (серверная коммерческая ОС) и Darwin 0.1 (проект с открытыми кодами), ставшие родоначальницами семейства Mac OS X.
В это время версия Mac OS X DP2 для настольных компьютеров существовала все еще в виде, предназначенном лишь для разработчиков, и содержала в себе коды Mach 3 и двух версий FreeBSD 3.1 и 3.2. Видимо, разработчики Apple создавали тогда свой знаменитый интерфейс Aqua, отличающий Mac OS от Darwin, выпуск 1.0 которой (2000 год) уже использовал наработки третьего выпуска Mac OS X. Первая же публичная версия настольной ОС Mac OS X 10.0, носившая маркетинговое название Cheetah, была выпущена в 2001 году. Новое вливание кодов FreeBSD (4.4 и 4.5) произошло при выпуске версии Mac OS X 10.2 с кодовым название Jaguar.
Следующим этапом развития операционных систем Apple стали версии Mac OS X 10.3, Mac OS X Server 10.3 и Darwin 7.0, выпущенные одновременно в октябре 2003 года. При их разработке были взяты коды из FreeBSD 4.8 и 5.0. Вполне законно, что Mac OS X сегодня представляется как FreeBSD – при разработке каждой новой версии этой ОС была использована новая порция разработок команды FreeBSD, однако наследие Mach и OPENSTEP никуда не делось. Тем не менее, версия MacOS X 10.5 Leopard, появившаяся в 2007 году, уже разрабатывалась собственными силами компании Apple, так же как и MacOS X 10.6 Snow Leopard, вместе с соответствующими ей Mac OS X 10.6 Server и Darwin 10.0. Следует отметить, что до версии Mac OS X 10.4.8 развитие велось в закрытой настольной ОС, а потом коды передавались в Darwin и серверную версию, однако начиная с версии Darwin 8.9, которая увидела свет 17 апреля 2007 года, развивался в основном проект с открытыми кодами, а его наработки уже использовались в настольной и серверной версиях Mac OS X.
Семейство операционных систем Mac OS изначально было рассчитано на удобство пользователей и красивые графические интерфейсы. Надо сказать, компания Apple поступила весьма мудро, опубликовав базовую операционную систему без графической оболочки Aqua в виде проекта с открытыми исходными кодами Darwin. Сейчас разработчики Darwin начали самостоятельно разрабатывать эту ОС, что позволило, в частности, отказаться от заимствования кодов из FreeBSD. К модели, когда проект с открытыми кодами помогает совершенствованию коммерческой операционной системы, пришли все производители ОС.
Указанными версиями операционных систем Apple не ограничилась – сейчас в ее арсенале есть еще две операционные системы: iPhone OS, под управлением которой работают коммуникаторы iPhone
и устройства iPod, а также AppleTV, предназначенная для телевизионных приставок. Операционная системы iPhone OS 1.0 была обнародована 29 июня 2007 года, и с тех пор разработчики выпустили еще две новые версии: 2.0 увидела свет 11 июля 2008 года с выпуском телефона iPhone 3G, а 3.0 появилась вместе с обновленным коммуникатором iPhone 3GS. Аналогично протекала история AppleTV, первая версия которой увидела свет 21 марта 2007 года одновременно с выпуском соответствующего устройства компании Apple. В основу этой ОС были положены разработки Darwin 8.8 и Mac OS X 10.4.7. Правда, эта ОС уже не была привязана к появлению новых устройств – приставка AppleTV позволяет менять собственную прошивку, поэтому существенным изменением второй версии была поддержка технологии высокого разрешения HDTV.
Коммерческие версии
Развитие коммерческих диалектов Unix началось с компании AT&T, которая в 1980 году приступила к разработке своей ОС, основываясь на кодах Unix 32V, а также Unix 3 (базирующейся на USG 1.0 и PWB 1.0, которые в свою очередь использовали четвертую, пятую и шестую редакции Unix Time-Sharing System) и TS 3.0.1. Первая коммерческая версия Unix System III вышла в ноябре 1981 года, и лицензии на нее AT&T продавала производителям оборудования. На базе этой лицензии и было создано большинство коммерческих операционных систем: AIX, HP-UX, Tru64 Unix, OpenServer и Solaris.
Практически все эти операционные системы разработаны под определенные аппаратные решения и фактически не переносимы на компьютеры других производителей. В частности, компания Sun взяла часть разработок Unix System V для своей SunOS, предназначенной для аппаратной платформы SPARC. Первая версия SunOS 1.0, которая была выпущена в феврале 1982 года, объединила линии BSD (4.1BSD) и UniSoft UniPlus V7 (то есть седьмую редакцию Unix Time-Sharing System), однако уже SunOS 1.1, появившаяся через два года, вобрала в себя часть разработок 4.1cBSD и Unix System V, то есть две существовавшие на тот момент конкурирующие линии. В дальнейшем Sun старалась балансировать между этими враждующими линиями: SunOS 1.2 наследовала часть функционала от 4.2BSD, SunOS 3.0 – от Unix System V Release 2, SunOS 4.0 – опять от 4.3BSD Tahoe. При разработке Solaris 2.0 (SPARC, 1992 год) произошел обмен кодов с Unix System V Release 4, а для разработки версии Solaris 2.0 (x86) были использованы и наработки ОС Unix Interactive 4.1, которая появилась в результате совершенствования системы Interactive 386/ix – реализации версии Unix System V Release 2 для платформы Intel 80386. Таким образом, Solaris 2,4, объединившая версии для платформы SPARC и x86, стала фактически квинтэссенцией линий Unix System V и BSD. Дальше ее уже самостоятельно развивали сотрудники компании Sun.
В новом веке руководство Sun почувствовало силу разработчиков открытых кодов и пошло на сближение с ними. В версии Solaris 9 часть кодов была унаследована от Linux 2.4.5, а Solaris 10 послужил основой для OpenSolaris, первая версия которого с именем build 21 была выпущена 26 июля 2005 года, а сама ОС по сей день активно развивается сообществом OpenSource – в июне 2009 года появилась последняя версия OpenSolaris 2009.06. Современным индексом для Solaris 10 является update7 05/09 – операционная система с такими опознавательными знаками была выпущена 30 апреля 2009 года.
История операционной системы HP для платформы PA-RISC также началась с объединения двух конфликтующих линий – версия HP-UX 2.0 (S200), выпущенная в августе 1983 года, была построена на Unix System III и седьмой редакции Unix Time-Sharing System, а HP-UX 1.0 (S800) стала наследницей 4.1cBSD. В то же время версия HP-UX 5.0 (S200/S300), выпущенная в 1986 году, объединила линии HP-UX 2.0 (S200) и 4.1cBSD, то есть опять стала слиянием веток коммерческого Unix с университетскими кодами BSD. Однако ветки S200 и S800 какое-то время развивались параллельно, объединившись вместе в версии HP-UX 7.0 (S300/S800), которая появилась в 1989 году. Потом были выпущены HP-UX 8.0 (S300/S800) (1991 год), HP-UX 9.0 (S800) (1992 год), HP-UX 10.0 (S700/S800) (1995 год) и, наконец, в ноябре 1997 года появилась версия HP-UX 11.0, которая развивается по сей день.
Операционная система компании DEC, которая одно время носила имя Digital Unix, а сейчас известна под именем Tru64 Unix, была разработана для платформы Alpha. Базовой операционной системой для этой платформы была также Mach с наложенными на нее сервисами 4.2BSD. Первая версия операционной системы OSF/1, которая вышла в 1990 году, объединяла функциональные коды Mach 2.6, 4.3BSD Tahoe и Unix System V Release 4, то есть опять же была сочетанием коммерческой лицензии Unix и открытых разработок BSD. Эта операционная система также вобрала в себя и более новую версию Mach 3 и в итоге, в марте 1995 года, получила название Digital Unix или DEC OSF/1 AXP. Эта ОС развивалась совместно с 64-разрядными процессорами Alpha и в конце концов была переименована в Tru64 Unix V4.0F. Последнее обновление Tru64 Unix с индексом V5.1B-5 было выпущено в марте 2009 года.
Из всех развивающихся на сегодняшний день Unix-совместимых ОС есть две коммерческие, которые не имеют отношения к BSD: IBM AIX и SCO OpenServer. Первая версия AIX (Advanced Interactive eXecutive) была разработана в 1986 году и носила имя AIX/RT 2. В качестве базы для нее был выбран дистрибутив Unix System V Release 2. Основная цель ее разработки состояла в том, чтобы обеспечить поддержку процессорной архитектуры RISC RS/6000 (AIX/6000 v3, 1989 год). Следующая версия этой операционной системы получила уже более привычную индексацию AIX 3.1 и включила часть кодов из Unix System V Release 4. Дальнейшее совершенствование этой ОС шло своим путем без заимствований. На текущий момент обновляются две линейки этой операционной системы: пятая версия – текущий индекс AIX 5L v5.3 TL10 и шестая версия – AIX 6.1 TL3.
Компания Santa Cruz Operation долгое время разрабатывала коммерческий дистрибутив Unix для платформы x86. Первая версия этой ОС носила название Xenix OS (1980 год) и была лицензирована компанией Microsoft у AT&T. Она была построена на базе седьмой редакции Unix Time-Sharing System. В версию Xenix 3.0 (апрель 1983) были добавлены коды от Unix System III. Строго говоря, было несколько вариантов Xenix – для процессоров Intel 8086, Zilog Z8001 и Motorola 68000. Версию для процессоров Intel развивала компания Santa Cruz Operation (SCO) – она-то и называлась SCO Xenix. В версию этой операционной системы System V/286, которая вышла в 1985 году, были добавлены коды из Unix System V Release 2.
Заключив контракт с IBM на разработку OS/2, компания Microsoft потеряла интерес к Xenix и в 1987 году продала SCO все исходные коды и эксклюзивные права на эту операционную систему. Однако к 1989 году компания SCO также отказалась от марки Xenix и выпустила ОС под названием SCO Unix System V/386 release 3. Впрочем, такое сложное обозначение ОС не оставалось долго –
в 1994 году появляется более простое SCO Unix 3.2.4 (второе название – Open Desktop), а через год – OpenServer 5.0. Следующее крупное обновление функционала было произведено через 10 лет – 22 июня 2005 года была выпущена версия OpenServer 6, современная версия этой ОС носит название OpenServer 6 MP4.
Linux
Несмотря на то что различных вариантов или дистрибутивов Linux сейчас существует достаточно много, на самом деле у этой операционной системы небогатая история и развивалась она практически линейно –на текущий момент имеется всего две версии ядра: Linux 2.4 и Linux 2.6.
Истоки Linux находятся в седьмой редакции Unix Time-Sharing System, которая была использована для создания микроядерной операционной системы Minix. Первая версия этой ОС была написана Эндрю Таненбаумом в 1987 году для изучения принципов построения операционных систем и фактически была приложением к его книге «Операционные системы: дизайн и исполнение». На версии Minix 1.0 и был основан первый вариант Linux 0.1, который увидел свет 1 августа 1991 го-да. Версия же Linux 1.0 была выпущена 14 марта 1994 года, и к этому времени в ней уже появились заимствования из ОС Plan 9 – операционной системы, которую в свое время разрабатывала Bell Labs для преодоления проблем Unix с сетью. По задумке своих создателей Plan 9 разрабатывалась для работы в распределенной среде.
После выпуска ядра Linux 1.0 началась работа над нестабильной версией ядра Linux 1.1, которая традиционно считается экспериментальной. В это ядро была добавлена часть кодов 4.4BSD Lite 1, что опять-таки привело к скрещиванию конкурирующих линий развития Unix. Стабильная версия ядра Linux 1.2 была выпущена 7 марта 1995 года, а в июне началась работа над версией 1.3, которая была воплощена уже в версию Linux 2.0, вышедшую 9 июня 1996 года. Цифра 2 ознаменовала переход со старого формата исполнимых файлов a.out к новому – elf.
В сентябре 1996 года началась работа над следующей нестабильной версией операционной системы Linux 2.1, и «застабилизировать» версию этого ядра удалось к 26 января 1999 года, когда вышла версия 2.2.0. А уже в мае того же года была начата работа над следующей нестабильной версией 2.3, которая продлилась до 4 января 2001 года, когда в свет вышла версия ядра 2.4.0 – она развивается до сих пор.
При разработке версий Linux 2.4.20 и Linux 2.5.30 было заимствование кодов из операционных систем IRIX 6.5.16 и AIX 5L v5.1, поэтому претензии SCO по поводу утечки кодов из Unix в Linux вполне обоснованы. Вопрос в том, имеет ли SCO Group права на исходные тексты Unix, ибо сотрудники Novell утверждают, что не передавали их в компанию SCO. Впрочем, сообщество разработчиков вполне в состоянии восстановить коды, которые были переданы им сотрудниками IBM и SGI, и переписать соответствующие функциональные возможности. Правда, это может вернуть Linux на уровень 2002 года.
Версия Linux 2.6 начала разрабатываться еще с 23 ноября 2001 года, когда была выпущена первая версия нестабильной ветки Linux 2.5.0. Стабильная версия Linux 2.6.0 появилась 17 декабря 2003 го-
да. Сейчас эта операционная система имеет индекс ядра Linux 2.6.30.5, и выпущена она была 16 августа 2009 года. Следующей нестабильной версии 2.7.0 так и не появилось – разработчики сконцентрировались на развитии уже существующих версий 2.4 и 2.6.
Стоит отметить, что изначально Linux разрабатывалась как операционная система с оптимальной производительностью: Торвальдс использовал те варианты кода, которые были более производительными. Именно поэтому в ядре Linux иногда встречаются вставки на ассемблере, да и код на Си иногда плохо понимаем, поскольку в нем используются нестандартные приемы повышения производительности.
* * *
Строго говоря, у современных Unix-подобных ОС и той операционной системой Unix, которая появилась 40 лет назад в недрах AT&T, общим является только выделение управляющей части кода, называемой ядром, взаимодействие с которым осуществляется через строго описанный интерфейс системных вызовов. Ядро занимается распределением процессорного времени, управлением работой памяти и периферии. Эта модель ОС и фиксированный набор системных вызовов и лежат в основе стандарта Single Unix Specification, упрощающего перенос программы между версиями ОС.
Второй особенностью Unix является работа с большинством информационных источников как с файлами – упорядоченной последовательностью байтов. Собственно, даже каталоги в Unix – это файлы, которые содержат описание вложенных файлов. Работа с большинством периферийных устройств также организована в метафоре файлов, что унифицировало написание алгоритмов обработки данных и упростило написание программ. Это же качество упрощало разработку периферии для Unix, поскольку большинство алгоритмов уже было реализовано в операционных системах, а для поддержки нового оборудования нужно было реализовать только ряд операций, характерных для данного устройства.
Третьим достоинством Unix является язык программирования Си, на котором написаны исходные коды этой ОС. Собственно, сейчас уже трудно отделить, что было причиной, а что следствием: популярность Unix или распространение Си. Возможно, что Си приобрел свою популярность именно благодаря Unix, в то же время компилируемый язык программирования обеспечил перенос ОС на разнообразные платформы.
Эти три фактора позволили компании AT&T создать вокруг Unix экосистему, в которой каждому нашлось свое место: производителям аппаратуры, разработчикам программ и пользователям. Именно эта экосистема и обеспечила технологии Unix долгую жизнь, хотя сейчас эта ОС уже разделена на множество отдельных экосистем, между которыми практически нет взаимодействия.
Операционная система Plan 9 от Bell Labs
К середине 1980-х годов наметилась тенденция отхода от больших централизованных компьютеров, работающих в режиме разделения времени: пользователям надоели вечно перегруженные машины, и они стремились перейти на небольшие системы, которые могли обслуживать сами. Именно в это время в «колыбели» Unix, то есть в Bell Labs, была разработана ОС следующего поколения – Plan 9.