Unix и Linux: рождение великих ОС

Мало кто из рядовых пользователей компьютера задаётся вопросом, а что же влияет на работу операционной системы? На то, с какой скоростью она работает, стабильность? Для специалистов ответ очевиден – от ядра. Разработка ядра операционной системы стоит на первом месте в ряду самых сложных задач программирования. Управиться с этой задачей сможет лишь тот, кто имеет познания в компьютере, позволяющие общаться с ним на «ты» и умеет мыслить нестандартно. В компании Microsoft над созданием такой операционной системы, как Windows XP, трудится целый штат сотрудников из тысяч человек. И всё же, в 1969 году всего два сотрудника компании Bell System, а 12 лет назад студент финского института Линус Торвальдс смогли самостоятельно создать и подарить миру такие операционные системы как UNIX и Linux, оказавшие серьёзное влияние на компьютерное сообщество.

Системы разделения времени

В середине 50-х годов исследовательский отдел корпорации Bell System приобрел для своего компьютерного центра несколько новых компьютеров. Огромные махины, купленные за миллионы долларов у IBM, предназначались для проведения разработок в пока еще мало изученной компьютерной области. Но когда ученые Bell освоились на установленных мейнфреймах, стало ясно, что идущее в поставке программное обеспечение совершенно не подходит для полноценной исследовательской работы. А из-за отсутствия операционной системы все приходилось делать вручную, что отнимало много времени и сил. Так как большинство сотрудников отдела были опытными программистами, они приняли решение разработать ОС своими силами. И воплотить в ней все, что им было нужно.

Общими усилиями разработка системы BESYS заняла меньше года, и в 1957 г. она была установлена на всех машинах компьютерного центра. Авторы BESYS не собирались распространять программу за пределами Bell – она предназначалась исключительно для внутренних нужд. Но когда некоторые исследовательские институты проявили интерес к разработке, сотрудники крупнейшей телефонной компании выслали всем желающим копии на магнитных лентах.

В 1964 г. Bell Labs приобрела новое дорогостоящее оборудование, включая более мощные компьютеры, установленные в исследовательском отделе. Программисты компании снова столкнулись со старой проблемой. BESYS была заточена под конкретную платформу и не работала на новых машинах, а IBM по-прежнему мало заботилась о программах, занимаясь созданием исключительно железа. Оставалось рассчитывать только на себя. Впрочем, представители других организаций тоже были заинтересованы в написании новой операционной системы.

К этому времени компьютерное сообщество захватила идея разделения машинного времени. Новая технология, предложенная командой Фернандо Корбато из Массачусетского Вычислительного Центра, давала возможность работать на одном компьютере нескольким людям одновременно. Не нужно было ждать своей очереди, ресурсы компа распределялись между всеми активными пользователями. Таким образом не только экономилось дорогое машинное время – программистам стало намного удобнее работать вместе над одним проектом. Впервые Compatible Time Sharing System (CTSS) была запущена в 1961 на модифицированном компьютере IBM 7094 и посредством коммуникационного контроллера соединила 30 терминалов. Чуть позже эту технологию переняли в Университете Кембридж. Несмотря на очевидные достоинства системы, у нее было много противников, в основном среди студентов МТИ. Ребята, которые проводили все свое время возле компьютеров и использовали их ресурсы по максимуму, не могли смириться с тем, что теперь мощностью придется делиться с кем-то еще. Несмотря на это, ведущие компьютерщики признавали – за CTSS будущее. И если писать операционную систему – в её основе должна лежать система разделения времени.

Multics

Идея создать Multics (Multiplexed Information and Computing Service) – операционную систему с поддержкой CTSS – пришла профессору Джеку Дэннису из Массачусетского Технологического Института. Её подхватили студенты-компьютерщики, и в 1963 г. они вместе разработали спецификации будущей ОС. Прежде чем начать работу над Multics, Дэннис обратился к руководству IBM с предложением написать операционку под один из их мейнфреймов, если те поддержат проект. Но корпорацию не вдохновили полные энтузиазма речи профессора. Гораздо большую заинтересованность проявили представители компании General Electric, с которыми Джека познакомил лектор МТИ Джозеф Визенбаум. Технари из GE предоставили институту для написания ОС свой самый навороченный компьютер GE-645, а затем и сами подключились к работе над ней.

Мотив массачусетских хакеров был ясен – парней из МТИ всегда отличало стремление превзойти самих себя, создать что-то действительно потрясающее. А Multics был самым амбициозным, самым революционным компьютерным проектом в истории. GE преследовала куда менее возвышенные цели. С помощью Multics компания просто рассчитывала усилить свое влияние в компьютерной индустрии. Исследовательская команда Bell не горела желанием превзойти себя и не стремилась выйти на софтварный рынок. Но для полноценной работы им не хватало хорошей операционной системы, как раз такой, какой обещала стать Multics. Поэтому несколько лучших программистов Bell под руководством Виктора Высоцкого предложили свою помощь и вскоре присоединились к остальным. Работая вместе и обмениваясь идеями, три команды стали потихоньку воплощать проект в жизнь.

Планы разработчиков ОС были грандиозными. Multics не только должна была выполнять множество возложенных на нее задач, но и включала технологии, которые еще не могли быть использованы на компьютерах того времени. Каждая команда выдвигала все новые и новые предложения, и через какое-то время список возможностей, которые предстояло воплотить в жизнь, вырос до невероятных размеров. Мало кто верил, что разработчикам удастся создать что-либо подобное.

Несмотря на энтузиазм создателей, работа затянулась на несколько лет. Разработчики, особенно представители МТИ, хотели создать идеальную систему. В процессе работы над Multics постоянно появлялись новые задумки, значительная часть которых реализовывалась впервые и требовала тщательного тестирования. Это, а также отсутствие хорошей финансовой поддержки, вынуждало снова и снова откладывать релиз.

В апреле 1969 г. команда из Bell заявила о своем решении выйти из состава разработчиков ОС. Виктор Высоцкий и его коллеги поняли, что для создания столь амбициозного проекта, как Multics, понадобится еще не один год. Множество идей все еще оставались бумаге, к тому же, по мнению сотрудников Bell, система с каждым годом все сильнее отличалась от того, что планировалось в начале. И её полезность в экономическом плане вызывала серьёзные сомнения.

Спустя полгода, в октябре 1969, сильно сокращенная и явно недоработанная Multics была представлена общественности. После этого на авторов обрушился шквал писем и звонков – пользователи наперебой перечисляли баги, рассказывали о регулярных сбоях. Только в середине 1970 г. первая система с разделением времени обрела более-менее стабильную рабочую форму.

Space Travel

После того как программисты Bell разочаровались в пятилетнем проекте, большинство из них вернулись к своим обычным обязанностям. На компьютер GE-635, где разрабатывалась Multics, установили GECOS – операционную систему, намного более простую, чем её предшественник.

Несмотря на то, что она вполне подходила для работы с файлами и базами данных, для сложных комплексных задач, которыми обычно занимались сотрудники Bell, новая ОС не годилась. Некоторые программеры из числа Bell-разработчиков Multics не отказались от идеи создать гибкую систему, пригодную для серьезного программирования. Среди них были Кен Томпсон, Деннис Речи, Джои Осанна и Рад Кеннедей, которым ограничения GECOS сильно мешали. В конце весны 1969 г. Томпсон и Ричи обратились к руководству с просьбой предоставить им эксклюзивный мощный компьютер для работы над новой CTSS-системой. В своем проекте программисты планировали собрать все лучшее, что было в Multics, сделать систему максимально гибкой и функциональной. Но несмотря на все просьбы, компания отказалась выделить отдельный компьютер. Отдать под некоммерческий проект машину стоимостью миллион долларов означало терять десятки тысяч долларов ежемесячно.

Блуждая по длинным коридорам корпорации Bell, Кен Томпсон как-то наткнулся на старенький компьютер PDP-7, стоявший в углу одной из лабораторий и редко использовавшийся. Кен тогда как раз закончил работу над игрой Space Travel – симулятором солнечной системы, по которой можно было летать на маленьком космическом корабле – и сразу захотел портировать её со своего рабочего GE-635 на эту машину. Во-первых, потому, что играть на PDP-7 было намного дешевле, чем на GE-635, во-вторых – дисплей у PDP-7 больше подходил для видеоигр. Правда, компьютер фирмы DEC не поддерживал многих функций, реализованных в игре. И для того чтобы запустить Space Travel на PDP, нужно было не только перенести исходный код, а с нуля написать всю программную среду, в которой будет работать программа. Именно этим и занялись Кен Томпсон и Деннис Ричи летом 1969 года.

Рождение UNIX

Программный пакет для работы с плавающей запятой, графические примочки и другие вещи, которые требовались для запуска игры на PDP, писались на ассемблере мейнфрейма GE-635. Затем код записывался на магнитную ленту, и Кен или Деннис несли его через все здание в лабораторию, где стоял компьютер DEC. Там информация считывалась и загонялась в память. Со временем двум программистам удалось воспроизвести файловую систему, полностью отвечающую требованиям Space Travel. Правда, все, на что она была способна – загрузить игру и передать управление над кораблем игроку. В принципе, ради этого и затевалась вся эта беготня. Но очень скоро Томпсону захотелось большего.

Файловая система, написанная для Space Travel, походила на ядро простенькой ОС. В ней уже содержались некоторые важные процедуры, но не было способа управления ими. Кен решил немного её расширить и добавил множество различных программ для работы с файлами: копировать, удалить, редактировать, распечатать и др. Когда следом за ними появилась оболочка с командной строкой – это уже была не просто платформа для одной игры, а настоящая операционная система. Хотя еще изрядно сырая.

Кен и Деннис быстро увлеклись новым проектом. Они оба участвовали в разработке Multics и имели немалый опыт в программировании ОС. Полученные тогда знания очень пригодились в создании собственной системы. И чем дальше, тем серьезнее они к ней относились.

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

В процессе разработки ОС принимали участие двое других сотрудников Bell – Джои Осанна и Рад Кеннедей, которые написали несколько дополнительных утилит. Моральную и идейную поддержку оказывал Дуглас Маклрой.

В начале 1970 г. система уже могла полностью функционировать самостоятельно и наконец обрела имя. Название UNICS (UNiplexed Information and Computing Service) подсказал Брайан Керниган – работник компании, все это время с интересом следивший за проектом.

А через несколько месяцев ОС, родившаяся в кампусах Bell, стала более известна как UNIX.

После того как о системе Кена и Денниса узнали за пределами телефонной компании, она быстро завоевала популярность. Этому во многом способствовало её умение легко адаптироваться к самым разным компьютерным платформам. В 1973 г. UNIX была практически полностью переписана на языке C, что сделало её еще привлекательнее. В большинстве исследовательских институтов эта ОС стала стандартом де-факто, причем многие старались как-то улучшить её возможности. В результате с 70-х по 90-е годы вышло множество UNIX-клонов (*BSD, Ultrix, Xenix, Irix, HP-UX, Unixware и т.д.), среди которых были как коммерческие, так и фриварные. Но ни одна из этих систем не получила такой популярности и такого признания, как Linux.

Линус Торвальдс

28 декабря 1968 г. в обычной финской семье Нильса и Анны Торвальдс родился сын. Маленький Линус унаследовал от своего отца большой нос, а от матери – маленькие внимательные глаза. При всем желании ребенка нельзя было назвать красивым. Когда Линус подрос, он стал носить очки – не столько из-за близорукости, сколько для того, чтобы спрятать за ними «наследство» отца. Тощий, нескладный, с выпирающими зубами и торчащими во все стороны волосами – он был одним из тех, кого называют типичными ботаниками. И не только внешне. Линус был признанным математиком и часто удивлял даже своих учителей. Это не значит, что он просиживал все вечера, уткнувшись в учебник. Чаще парень вообще ничего не учил. Ему достаточно было нескольких минут перед уроком, чтобы понять весь заданный материал и при случае рассказать его у доски.

 

Любимыми предметами Линуса всегда были математика и физика. Ему нравились точные науки, дающие возможность поломать голову над решением той или иной задачи. В то же время история, биология и другие науки, требующие запоминания больших объемов информации, его не интересовали вообще. Единственной причиной, заставлявшей его все это учить, была младшая сестра Сара, с которой Линус все время соперничал за звание лучшего ученика в семье.

Самым близким родственником для юного математика в то время был дедушка Лео – профессор статистики в Университете Хельсинки. Такой же рассеянный и замкнутый, как его внук. Линус часто приходил к нему в гости. Ему было интересно пообщаться на математические темы, а также поиграть с калькулятором – одним из главных рабочих инструментов профессора. Для вычисления заданного действия примитивной машинке нужно было секунд десять, и все это время Линус, затаив дыхание, наблюдал за перемигиванием лампочек на экране. Парнишка снова и снова задавал новые команды и пытался решить с помощью калькулятора самые разнообразные примеры. А когда дедушка работал, он сидел где-нибудь рядом и, делая вид, что внимательно читает или смотрит телевизор, с нетерпением ждал, когда Лео закончит, и даст ему повозиться с любимой игрушкой.

Примитивный калькулятор – все, что Линусу тогда было нужно для счастья. Пока в 1981 г. дедушка-профессор не купил Commodore VIC-20.

Первые шаги юного программиста

VIC-20 был одним из первых персональных компьютеров. Конечно, это была весьма примитивная модель с 3,5 Кб ОЗУ, но она не требовала сборки, а в качестве терминала мог служить обычный телевизор. Изучать возможности новой игрушки дед с внуком принялись вместе. В то время готовые программы в Финляндии практически не продавались, поэтому, если ты хотел поиграть в какую-нибудь игру или получить нужную утилиту, тебе нужно было написать её самому. На единственном доступном языке Бейсик.

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

Видя увлечение сына, родители купили ему учебник по программированию на английском языке. Эта книжка, которую можно было читать только со словарем, сразу стала самым близким другом Линуса. Миновав стадию «hello world», юный программист со временем стал пробовать писать собственные программы. В основном это были аркадные игры, где нужно было управлять машиной, самолетом или подводной лодкой. Сама игра не доставляла того удовольствия, которое давало программирование, поэтому, порубившись недельку в свое творение, автор переходил к написанию очередной программы.

Через четыре года после первого знакомства с VIC-20 в семье Торвальдсов случилось два события. Во-первых, разошлись родители, во вторых – у дедушки случился инсульт, и его поместили в больницу. Из-за этого Линус еще больше привязался к компьютеру. Когда профессор Лео умер, VIC-20 перешел во владение внука. Теперь 15-летний Торвальдс мог работать на нем сколько угодно, и ничто, кроме школы, не могло ему помешать.

Жизнь за черными занавесками

Когда Линус поступил в университет, главным предметом он выбрал компьютеры, а в дополнение записался на математику и физику. Группа, в которой он учился, состояла исключительно из парней, в основном таких же ботаников, как он сам. Первое время в институте было интересно, и Линус с удовольствием брался за решение заданных на дом задач. Правда, он никогда не ходил на студенческие вечеринки… да и вообще практически никуда не ходил. Маршрут каждый день был одинаковым: дом – институт – дом. А дома все его внимание приковывал компьютер. К концу первого курса Линус выжал из VIC-20 все, что только можно. Работать на нем стало скучно, к тому же, в какой-то момент закончилось вдохновение. Поэтому, когда настал обязательный для всех финнов военный призыв, Линус без особого сожаления отправился служить.

Вернувшись из армии через год, Торвальдс продолжил учебу, но интерес к универу уже прошел.

Намного больше его привлекала идея купить новый компьютер. Перебирая разные модели, Линус остановился на Sinclair QL – 32-разрядной персоналке с частотой 8 мегагерц и 128 Кб ОЗУ. Стоила она около 2 тысяч долларов, и чтобы собрать эту сумму, пришлось целый год откладывать стипендию, студенческие премии (как лучшему математику), карманные деньги и деньги, подаренные на день рождения и Новый год. В конце концов, Sinclair был куплен, и Линус с головой окунулся в изучение новой игрушки.

В первую очередь 17-летний программист взялся за изучение более серьезных, чем Бейсик, языков программирования. Таких как Фортран и Ассемблер. Благодаря математическим способностям, Линус быстро все схватывал и уже скоро мог написать на асме практически любую программу. Возвращаясь из института, он сразу отгораживался от мира плотными черными занавесками, закрывал двери и садился программировать. Программирование занимало почти все его мысли. Если разрабатывался какой-то новый проект, новая игра, он не мог успокоиться, пока не заставлял её работать. Мать, с которой жил Линус, переживала за сына, сидящего целыми днями в своей комнате. Но тот, хоть и вел жизнь затворника, несчастным не выглядел. Компьютер был для него всем.

Единственное мероприятие, ради которого Линус с удовольствием покидал свою комнату – еженедельные встречи членов клуба «Спектрум». Только там он мог пообщаться на любимые технические темы. И только там он мог встретить близких по духу людей.

Знакомство с UNIX

В 1990 г. в институте, где учился Торвальдс, появился UNIX. Он уже знал об этой системе из книги Эндрю Таненбаума «Проектирование и реализация операционных систем», и настолько загорелся мыслью изучить её на практике, что приложил все усилия, чтобы поступить на курсы UNIX. Посещая их в группе из 16 компьютерщиков, Линус с каждым днем все отчетливее понимал, что хочет иметь эту систему у себя на компьютере. Но простенький Sinclair этого не позволял. В январе 1991 г., раздобыв кое-как деньги на начальный взнос, Линус отправился в компьютерный магазин и купил в рассрочку крутой по тем временам PC 386 с 33 МГц, 4 Мб ОЗУ и 5-дюймовым дисководом. На компе стоял DOS, и, чтобы поменять ее на Minix – клон UNIX, созданный профессором Таненбаумом – пришлось потратить еще около $200.

Чтобы досконально изучить Minix, Линусу Торвальдсу понадобилось не больше месяца. Он уже был постоянным читателем технических конференций, а чаще всего заходил на comp.os.minix. ОС Таненбаума была чем-то вроде учебного пособия по миру UNIX. Поэтому в ней было много ограничений. Это не могли исправить ни патчи, ни дополнительные программы. Линуса раздражали в Minix многие вещи, но больше всего – эмулятор терминала, сделанный просто ужасно. Уже привыкший все нужные программы писать для себя самостоятельно, Торвальдс взялся за разработку нормального терминала. Кроме всего прочего, это давало возможность во всех подробностях изучить архитектуру процессора 386.

Самодельный эмулятор терминала быстро обрастал наворотами. Когда он, наконец, был готов, Линус решил разбавить его новыми возможностями. Например, функциями upload и download. Для этого требовалось написать драйвер дисковода, а для него, в свою очередь – создать файловую систему. Сложная, трудоемка работа, но закаленному ночными посиделками программисту нравилось решать такие задачи. И процесс пошел.

Linux

Так как в универе весной 1991 г. делать было, в общем-то, нечего, Линус целыми днями не выходил из своей комнаты. От написания файловой системы его отвлекали разве что сон и иногда еда. Через несколько недель проект, первоначально задуманный как продвинутая терминальная программа, уже больше напоминал целую операционную систему. Когда автор понял, что зашел слишком далеко, останавливаться было уже поздно. Линус Торвальдс вообще был не из тех, кто мог бросить все на полпути. 3 июля 1991 г. в конференции comp.os.minix появилось его сообщение с просьбой прислать Posix – определение стандартов для ОС UNIX. Линус серьезно увлекся идеей написать свою систему, и стандартны были нужны, чтобы она была совместима с остальным семейством юниксов. Так как никто не откликнулся, пришлось довольствоваться документацией от Sun Microsystems и доступными учебниками по UNIX.

В качестве образца выступала Minix, но в своей системе Линус собирался превзойти Таненбаума и снабдить ее многими полезными и еще не реализованными функциями. Основу проекта составляли системные вызовы, и писать программы для их осуществления приходилось практически вслепую, так как проверить – работает ли что-нибудь – было невозможно. Чтобы исправить ошибки, приходилось часами листать исходники, пытаясь обнаружить, где что не так. Разработка ядра и написание основных программ заняли все лето.

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

В начале сентября оболочка будущей операционки, наконец, заработала. Несмотря на то, что про себя Торвальдс называл ее Linux, для официального релиза готовилось имя Freax – автор не хотел, чтобы его считали нескромным. Тем не менее, Ари Лемке – преподавателю одного из вузов Хельсинки, согласившемуся выделить для системы место на институтском компе, название Linux понравилось больше, и уже скоро на ftp.funet.fi/pub/OS/Linux появилась первая версия системы со знаком 0.01. Эту версию мало кто щупал – она была еще очень сырой, и чтобы заставить ее работать, нужно было потратить кучу времени и нервов.

В октябре вышла Linux 0.02, а в ноябре – 0.03. Первыми бета-тестерами Linux стали читатели comp.os.minix, которые, хоть и слали сообщения об ошибках пачками, но всячески хвалили новую ОС. Однако по настоящему завоевывать популярность Linux начала, когда в конце ноября стала полностью автономной. Армия линуксоидов стремительно росла. Многие предлагали свою помощь, присылали программы и патчи для Linux. Система распространялась фриварно, а от постоянно предлагаемых денег Линус неизменно отказывался. Чтобы хоть как-то его отблагодарить, поклонники скинулись и оплатили трехлетнюю рассрочку на PC.

В 1993 году Линус уже закончил институт и сам в нем преподавал. Руководство вуза знало о разработках и предоставило все условия для поддержки Linux. А осенью того же года произошло то, чего никто не ожидал, по крайней мере, из родственников. Линус Торвальдс влюбился в одну из студенток своего курса и через несколько месяцев переехал в ее квартиру. Примечательно то, как они познакомились. Линус задал задание на дом – отправить ему на e-mail любое сообщение. И Туве – та самая девушка – в своем сообщении пригласила его на свидание. Вскоре они поженились, а чуть позже у них родилась первая из трёх дочерей.

К тому времени, как вышла версия Linux 1.0, о системе уже знал весь мир. Популярность привлекла к ней внимание многих крупных компаний. Благодаря своей гибкости и потенциалу, она поселилась на сотнях тысяч серверов в качестве основной ОС. Поддержать Linux решили тысячи хакеров со всего мира, которые все вместе трудятся над улучшениями. Помимо основной версии, разрабатываемой автором, появилось множество дистрибутивов, каждый из которых имеет свои плюсы и минусы.

В 1997 г. Линус Торвальдс вместе с женой и тогда еще одним ребенком переехали в Америку. Многие компьютерные корпорации, включая Apple, предлагали ему хорошее рабочее место, но Линус предпочел им всем небольшую компанию Transmeta, специализирующуюся на разработке процессоров.

Недавно Торвальдс решил отойти от производства микрочипов и полностью углубиться в поддержку своего главного детища под началом Лаборатории Разработки Открытых Исходников (www.osdl.org). А тем временем, тернистый путь операционной системы Linux в мире ПК продолжается под неустанным присмотром своего отца – система готова ринутся на миллионы компьютеров обычных пользователей под флагом: «Открытость, прозрачность, бесплатность, быстрота и надёжность!»