Читатели

26 февраля 2011

История UNIX и LINUX

Разработка ядра ОС – одна из самых сложных задач для программиста. Задача, справиться с которой может только хакер – человек, умеющий мыслить нестандартно, знающий компьютер как свои пять пальцев. Сейчас сложно представить, чтобы кто-то сам мог создать полноценную систему. Над монстрами типа Windows XP трудятся тысячи специалистов. Но 12 лет назад, один из студентов финского института мог рассчитывать только на себя. Как и двое сотрудников компании Bell System в далеком 1969 году. Тем не менее, именно этой троице удалось создать операционные системы, которые сильно повлияют на компьютерный мир. Этими системами были UNIX и Linux.


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

"Системы разделения времени"
Кен Томпсон
В середине 50-х гг. исследовательский отдел корпорации Bell System приобрел для своего компьютерного центра несколько новых компьютеров. Здоровенные махины, купленные за миллионы долларов у IBM, предназначались для проведения разработок в пока еще мало изученной компьютерной области. Но когда ученые Bell освоились на установленных мейнфреймах, стало ясно, что идущее в поставке программное обеспечение совершенно не подходит для полноценной исследовательской работы. А из-за отсутствия операционной системы, все приходилось делать вручную, что отнимало много времени и сил. Так как большинство сотрудников отдела состояло из опытных программистов, они приняли решение разработать ОС своими силами. И воплотить в нее все, что им было нужно.
Деннис Ричи
Общими усилиями коллектива разработка системы BESYS заняла менее года и в 1957 г. она была установлена на всех машинах компьютерного центра. Авторы BESYS не собирались распространять за пределы Bell – программа предназначалась исключительно для собственных нужд. Но, когда некоторые исследовательские институты проявили интерес к разработке, сотрудники крупнейшей телефонной компании выслали всем желающим копии на магнитных лентах.
В 1964 г. Bell Labs приобрела новое дорогостоящее оборудование, включая более мощные компьютеры, установленные в исследовательском отделе. Программисты компании снова столкнулись со старой проблемой. BESYS была заточена под конкретную платформу и не работала на новых машинах, а IBM по прежнему мало заботилась о программах, занимаясь созданием исключительно железа. Оставалось рассчитывать только на себя. Впрочем, представители других организаций тоже были заинтересованы в написании новой операционной системы.
Компьютер, на котором писался UNIX
К этому времени внимание компьютерного сообщества приковывала идея разделения машинного времени. Новая технология, предложенная командой Фернандо Корбато из Массачусетского Вычислительного Центра, давала возможность работать на одном компьютере нескольким людям одновременно. Не нужно было ждать своей очереди, ресурсы компа распределялись между всеми активными пользователями. Таким образом не только экономилось дорогое машинное время, программистам стало намного удобнее работать вместе над одним проектом. Впервые 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 клонов (FreeBSD, OpenBSD, NetBSD, Ultrix, Xenix, Irix, HP-UX, Solaris, Unixware и т.д.), среди которых были как коммерческие, так и фриварные. Но ни одна из этих систем не получила такой популярности и такого признания, как Linux.

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

28 декабря 1968 г. в самой обычной финской семье Нильса и Анны Торвальдс появился сын. Маленький Линус унаследовал от своего отца большой нос, а от матери – маленькие внимательные глаза. При всем желании ребенка нельзя было назвать красивым. Когда Линус подрос, он стал носить очки – не столько из-за близорукости, сколько для того, чтобы спрятать за ними "наследство" отца. Тощий, нескладный, с выпирающими зубами и торчащими во все стороны волосами – он был одним из тех, кого называют типичными "ботаниками". И не только внешне. Линус был признанным математиком и часто удивлял даже своих учителей. Это не значит, что он просиживал все вечера, уткнувшись в учебник. Чаще парень вообще ничего не учил. Ему достаточно было нескольких минут перед самым уроком, чтобы понять весь заданный материал и при случае рассказать его перед доской.
Любимыми предметами Линуса всегда были математика и физика. Ему нравились точные науки, дающие возможность поломать голову над решением той или иной задачи. В то же время история, биология и другие науки, требующие запоминания больших объемов информации, не интересовали вообще. Единственное, что заставляло его все это учить – была младшая сестра Сара, с которой Линус все время соперничал за звание "лучшего ученика в семье".
Самым близким родственником для юного математика в то время был дедушка Лео – профессор статистики в Университете Хельсинки. Такой же рассеянный и замкнутый, как его внук. Линус часто приходил к нему в гости. Ему было интересно пообщаться на математические темы, а также поиграть с калькулятором – одним из главных рабочих инструментов профессора. Для вычисления заданного действия примитивной машинке нужно было секунд десять, и все это время Линус, затаив дыхание, наблюдал за перемигиванием лампочек на экране. Парнишка снова и снова задавал новые команды и пытался решить с помощью калькулятора самые разнообразные примеры. А когда дедушка работал, он сидел где-нибудь рядом и, делая вид, что внимательно читает или смотрит телевизор, с нетерпением ждал, когда Лео закончит, и даст ему поиграться с любимой игрушкой.
Примитивный калькулятор – все, что Линусу тогда было нужно для счастья. Пока в 1981 г. дедушка-профессор не купил Commodore VIC-20.
Улыбка гения

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

VIC-20 был одним из первых персональных компьютеров. Конечно, это была весьма примитивная модель с 3.5 Kb ОЗУ, но она не требовала сборки, а в качестве терминала мог служить обычный телевизор. Изучать возможности новой игрушки дед с внуком принялись вместе. В то время готовые программы в Финляндии практически не продавались, поэтому, если ты хотел поиграть в какую-нибудь игру или получить нужную утилиту – тебе нужно было написать ее самому. На единственно доступном языке Бейсик.
После покупки компьютера, школа казалась еще более скучной и ненужной. Еле досиживая до конца уроков, Линус дожидался, пока его заберет мать, и просил отвезти к дедушке с бабушкой. Там он садился на колени к родному профессору и набивал на клавиатуре программы, которые Лео успел написать за день. Обычно это были какие-нибудь математические расчеты, связанные со статистикой. Одиннадцатилетний Линус, конечно, ничего из всего этого не понимал, но с удовольствием набирал текст. Со временем простой набор уже не мог удовлетворить любознательного паренька, и он потихоньку принялся изучать Бейсик.
Видя увлечение сына, родители купили ему учебник по программированию на английском языке. Эта книжка, которую можно было читать только со словарем, сразу стала самым близким другом Линуса. Миновав стадию "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. А осенью того же года произошло то, чего никто не ожидал, по крайней мере из родственников. Линус Торвальдс влюбился в одну из студенток своего курса и через несколько месяцев переехал в ее квартиру. Примечательно то, как они познакомились. Линус задал задание на дом – отправить ему на емейл любое сообщение. И Туве – та самая девушка – в своем сообщении пригласила его на свидание. Вскоре они поженились, а еще чуть позже у них родилась первая из трех дочерей.

К тому времени, как вышла версия Linux 1.0, о системе уже знал весь мир. Популярность привлекла к ней внимание многих крупных компаний. Благодаря своей гибкости и потенциалу, она поселилась на сотнях тысяч серверов в качестве основной ОС. Поддержать Linux откликнулись тысячи хакеров со всего мира, которые все вместе трудятся над улучшениями. Помимо основной версии, разрабатываемой автором, появилось множество дистрибутивов, каждый из которых имеет свои плюсы и минусы. В 1997 г. Линус Торвальдс вместе с женой и тогда еще одним ребенком переехали в Америку. Многие компьютерные корпорации, включая Apple, предлагали ему хорошее рабочее место, но Линус предпочел им всем небольшую компанию Transmeta, специализирующуюся на разработке процессоров.
Недавно Торвальдс решил отойти от производства микрочипов и полностью углубиться в поддержку своего главного детища под началом Лаборатории Разработки Открытых Исходников (www.osdl.org). Популярность Linux с каждым годом неуклонно растет...

4 комментария:

  1. Спасибо, прочитал наконец-таки)

    ОтветитьУдалить
  2. Героические, однако, люди. И дела их велики.
    Сам иногда из под Убунты сижу =)

    ОтветитьУдалить
  3. Очень умная и интересненькая статья.

    ОтветитьУдалить