Программирование: введение в профессию. 1: Азы программирования - 2016 год
История ОС Unix - Предварительные сведения
В конце 1960-х годов консорциум в составе концерна General Electrics, Массачусетского технологического института (MIT) и исследовательской компании Bell Laboratories (на тот момент — подразделения AT&T) разрабатывали операционную систему MULTICS. О проекте MULTICS иногда говорят, как о неудачном; так или иначе, Bell Labs в некий момент из проекта вышла. В число сотрудников Bell Labs, участвовавших в проекте MULTICS, входил Кен Томпсон. По одной из легенд, тогда его интересовала новая на тот момент область программирования — компьютерные игры. В силу дороговизны вычислительной техники того времени у Кена Томпсона были определенные сложности с использованием компьютеров для развлекательных целей, поэтому он заинтересовался имевшейся в Bell Labs машиной PDP-7; эта машина была уже морально устаревшей и, как следствие, претендентов на неё было не так много. Системное программное обеспечение, входившее в стандартный для той машины комплект, Томпсона не устроило, и, пользуясь опытом, полученным в проекте MULTICS, он написал для PDP-7 свою операционную систему. Первоначально система Томпсона была двухзадачной, то есть позволяла запуск двух независимых процессов — по числу подключенных к PDP-7 терминалов [2].
Название UNICS (по аналогии с MULTICS) в шутку предложил Брайан Керниган. Название закрепилось, только последние буквы CS были позже заменены на одну X (произношение при этом не изменилось). К Кену Томпсону в его разработке присоединился Деннис Ритчи, и вдвоём они перенесли систему на более совершенный миникомпьютер PDP-11. Тогда же возникла идея переписать систему (по крайней мере, как можно большую её часть) на языке высокого уровня. Томпсон попытался использовать для этого усечённый диалект языка BCPL, который он назвал “B” (читается “би”), но язык оказался для этого слишком примитивен: в нём не было даже структурных данных. Ритчи предложил расширить язык; для названия получившегося языка авторы использовали следующую букву английского алфавита после “В” — букву “С”, которую, как известно, по-английски называют “Си”.
В 1973 году на Си удалось переписать созданную Томпсоном систему. Для того времени это был более чем сомнительный шаг: господствовала точка зрения, что высокоуровневое программирование с уровнем операционных систем принципиально несовместимо. Время показало, однако, что именно этот шаг определил на много лет тенденции развития индустрии. Язык программирования Си и операционная система Unix сохраняют популярность спустя более чем 40 лет после описываемых событий. По-видимому, причина в том, что Unix оказался первой операционной системой, переписанной на языке высокого уровня, а Си стал этим языком.
В 1974 году вышла статья Томпсона и Ритчи, в которой они рассказали о своих достижениях. PDP-11 на тот момент была машиной весьма популярной, установленной во многих университетах и других организациях, так что после выхода в свет статьи нашлось немало желающих попробовать воспользоваться новой системой. На этом историческом этапе важную роль сыграло особое положение компании AT&T: антимонопольные ограничения не позволяли ей участвовать в компьютерном бизнесе, как и вообще в любом бизнесе за пределами телефонии. В связи с этим копии Unix с исходными текстами предоставлялись всем желающим на некоммерческой основе. Согласно одной из легенд, Кен Томпсон подписывал каждый экземпляр, записанный на бобину магнитной ленты, словами “с любовью, Кен” (love, ken) [3]. Следующим серьёзным шагом стал перенос Unix на новую архитектуру. Эта идея была выдвинута Деннисом Ритчи и Стефаном Джонсоном и опробована на машине Interdata 8/32. В рамках этого проекта Джонсон разработал переносимый компилятор языка Си, ставший, кстати, едва ли не первым переносимым компилятором в истории. Перенос системы был завершён в 1977 году.
Важнейший вклад в развитие Unix внесли исследователи из университета Беркли. Одна из наиболее популярных веток Unix, BSD, представленная в настоящее время такими системами, как FreeBSD, NetBSD, OpenBSD и BSDi, была создана именно там; собственно говоря, акроним BSD означает Berkley Software Distribution. Исследования, связанные с Unix, начались здесь в 1974 году; определённую роль сыграли лекции Кена Томпсона, прочитанные в Беркли в 1975-1976 гг. Первая версия BSD была создана в 1977 году Биллом Джоем.
В 1984 году с AT&T после раздробления одного из её подразделений были сняты антимонопольные ограничения; менеджмент AT&T начал стремительную коммерциализацию Unix, свободное распространение исходных текстов Unix было прекращено. Последующие годы ознаменовались противостояниями и изнурительными судебными тяжбами между разработчиками Unix, в частности — между всё той же AT&T и компанией BSDi, пытавшейся продолжать разработки на основе BSD. Неясности с юридическим статусом BSD затормозили развитие всего Unix-сообщества. Начиная с 1987 года в Беркли проводились работы по удалению кода, являющегося собственностью AT&T, из системы. Правовые споры были урегулированы лишь в 1993 году, когда AT&T продала своё подразделение, занимавшееся Unix (Unix Software Labs, USL) фирме Novell; юристы последней идентифицировали три из 18 000 (!) файлов, составлявшие действительный предмет спора, и заключили с университетом Беркли соглашение, устранившее разногласия.
Пока разработчики Unix были заняты междоусобицей, рынок оказался заполнен дешёвыми компьютерами на основе процессоров Intel и операционными системами от Microsoft. Появившийся ещё в 1986 году процессор Intel 80386 был пригоден для Unix; делались и попытки переноса BSD на платформу i386, однако (не в последнюю очередь из-за правовых проблем) до начала 1992 года об этих разработках ничего слышно не было.
Другая интересная линия событий прослеживается с 1984 года, когда Ричард Столлман основал Фонд свободного программного обеспечения и издал соответствующий идеологический манифест. Нарождающееся общественное движение для начала поставило себе целью создать свободную операционную систему. По некоторым сведениям, именно Столлман в 1987 году убедил исследователей из Беркли в необходимости очистки BSD от кода, находящегося в собственности AT&T. Сторонники Столлмана успели создать существенное количество свободных программных инструментов, но без полностью свободного ядра ОС цель оставалась всё же далека. Положение изменилось лишь в начале 1990-х. В 1991 году финский студент Линус Торвальдс начал работу над ядром Unix-подобной операционной системы для платформы i386, причём в этой работе код из других операционных систем не использовался вообще.
Как рассказывает сам Торвальдс, его творение сначала задумывалось как эмулятор терминала для удалённого доступа к университетскому компьютеру. Соответствующая программа под Minixего не удовлетворяла. Чтобы заодно разобраться в устройстве i386, Торвальдс решил написать свой эмулятор терминала в виде программы, не зависящей от операционной системы. Эмулятор терминала предполагает два встречных потока данных, для обработки которых Торвальдс сделал планировщик времени центрального процессора, фактически делающий то же самое, что делают планировщики в ядрах мультизадачных операционных систем. Позже автору потребовалась перекачка файлов, так что эмулятор терминала был снабжён драйвером дисковода; в итоге автор с удивлением обнаружил, что пишет операционную систему [4].
Свои промежуточные результаты Торвальдс открыто публиковал в Интернете, что позволило сначала десяткам, а затем и сотням добровольцев присоединиться к разработке. Нынешние исходные тексты ядра Linux включают код, написанный десятками тысяч людей. Одним из последствий этого становится принципиальная невозможность “купить” Linux: у ядра как произведения, защищённого авторским правом, слишком много правообладателей, чтобы можно было всерьёз говорить о заключении каких-то соглашений с ними всеми. Единственный вариант лицензии, на условиях которой можно использовать ядро Linux — это лицензия GNU GPL v.2, изначально (с подачи Столлмана) принятая для исходных текстов ядра; одна из особенностей этой лицензии состоит в том, что каждый программист, вносящий свой авторский вклад в ядро, самим фактом такого вклада принимает условия GNU GPL, то есть соглашается предоставить результаты своей работы всем желающим на определяемых ею условиях.
Новая операционная система получила название Linux по имени своего создателя. Примечательно, что такое название дал системе один из сторонних участников проекта. Сам Торвальдс планировал назвать систему “Freax”. Самый первый публично доступный код (версия 0.01) появился в 1991 году, первая официальная версия (1.0) — в 1994, вторая — в 1996. Следует отметить (и это также отмечает сам Линус Торвальдс), что немаловажную роль в стремительном взлёте Linux сыграла судебная война между AT&T и университетом Беркли, мешавшая распространению BSD на i386. Linux получил изрядную фору на старте, в итоге оставив BSD на вторых ролях: в наше время BSD-системы распространены меньше, хотя по-прежнему активно используются. Созданное Торвальдсом ядро решило главную проблему возглавляемого Ричардом Столлманом общественного движения: полностью свободная операционная система наконец появилась. Более того, Торвальдс принял решение использовать для ядра предложенную Столлманом лицензию GNU GPL, так что Столлману и его единомышленникам осталось только заявить о достижении поставленной цели.
Эпоха конца 1980-х — начала 1990-х породила рассогласованность в Unix-сообществе, снижавшую переносимость программ по причине различий в интерфейсах. Отчасти проблему решает появившийся стандарт POSIX 1003.1, описывающий основные системные вызовы Unix и созданный по принципу пересечения основных ветвей развития Unix (на тот момент — BSD и System V). POSIX представляет собой редкий пример технического стандарта, от которого имеется ощутимая польза; к сожалению, о большинстве существующих технических стандартов этого сказать нельзя.
Сейчас торговая марка “Unix” не используется для именования конкретных операционных систем. Вместо этого речь идёт о Unix-подобных операционных системах, составляющих целое семейство. По популярности лидируют Linux, представленный несколькими сотнями вариантов дистрибутивов различных производителей и (с некоторым отрывом) FreeBSD. Обе системы распространяются свободно. Кроме того, нельзя не отметить коммерческие системы семейства Unix, среди которых наиболее известны SunOS/Solaris и AIX.
Выдержав более чем тридцатилетнюю историю, Unix (уже не как конкретная операционная система, а как общий подход к их построению) совершенно не выглядит устаревшим, хотя при этом практически не претерпевал революционных изменений с середины 1970-х годов. Даже создание графической надстройки X Window не внесло существенных изменений в основы Unix. Отметим, что небезызвестный Android — это ничто иное, как Linux, снабжённый своей (т. е. созданной компанией Google специально для Android) графической оболочкой; то же самое обнаруживается на компьютерах от Apple: MacOS X представляет собой систему-потомка BSD, точнее, потомком BSD является система Darwin, a MacOS X — это Darwin со специально созданной графической подсистемой.