Вопросы истории: UNIX, Linux, BSD и другие - Федорчук Алексей Викторович "alv"
Выйдя за стены Bell Labs, UNIX зажил самостоятельной жизнью, крепко окопавшись в той же университетско-академической среде Computer Science. Одним из её центров в данном случае оказался Калифорнийский университет Беркли – учреждение, известное всем, интересовавшимся историей как точных наук, так и их влиянием на нашу жизнь.
Получив, благодаря профессору Бобу Фабри (Bob Fabry), в 1974 году ОС UNIX вместе с её исходниками и лицензией на их использование, университет Беркли поддержал и развил традицию «систем для себя», свойственную первозданному UNIX. Но об этом – в следующей главе. А пока – о «железных» предпосылках.
«Железные» предпосылки
Как было сказано в первом разделе этой главы, именно эволюция аппаратных платформ обеспечила почву для развития всех остальных сюжетов. Так что пришло время поговорить о «железе».
Материалы, касающиеся истории вычислительной техники, принято вести с тех времён, «когда компьютеры были большими». Нашу же историю мы, напротив, начнём с того момента, когда компьютеры начали становиться маленькими, за что и получили имя миникомпьютеров.
Впрочем, самым главным был не габарит новых машин (размером с 1-2 бытовых холодильника), а то, что они допускали интерактивное взаимодействие с пользователем – ввод задач посредством клавиатуры и вывод результатов на тот же телетайп (а потом и на экран монитора).
На одном из таких миникомпьютеров, PDP-7 производства фирмы DEC, и был разработан первозданный UNIX. Который, впрочем, быстро утратил связь с родительской платформой: после того, как основная системы часть была переписана на языке Си (специально созданном для разработки этой ОС), возникли условия для относительно легкого ее портирования на любое «железо». И долгое время миникомпьютеры различных типов (в основном PDP-11 и пришедшие им на смену во второй половине 70-х машины серии VAX), как наиболее демократические платформы того времени, оставались основной средой для разработки и использования UNIX.
Попавший в Беркли UNIX также первоначально был инсталлирован и работал на 16-битных миникомпьютерах PDP-11, и программные наборы 1BSD и 2BSD (собственно системами, как говорилось ранее, их назвать было еще нельзя) разрабатывались на них и для них.
Однако в 1977 году на свет вышли первые миникомпьютеры VAX, уже 32-битные. Разумеется, первозданный UNIX, ставший к тому времени вполне кросс-платформенным, обзавелся для них соответствующей версией, носившей имя UNIX/32V. Однако и берклианская ветвь не осталась в стороне от прогресса: 3BSD – первая целостная система из Беркли уже в 1979 году была портирована на VAX, причём с эффективным использованием всех его аппаратных возможностей, в частности, виртуальной памяти. Именно тогда и сложилась та самая парадоксальная ситуация, о которой я говорил выше: пользователи VAX-машин вынуждены были получать (то есть покупать) лицензию на использование 32V, однако устанавливали и применяли на практике 3BSD, а затем и 4BSD.
Однако миникомпьютеры доживали свой век – на смену им серверы и рабочие станции на фантастически мощных по тем временам RISC-процессорах, объединённые в сети с клиент-серверной архитектурой. Они уже имели вид, подобный обычным персоналкам – с системным блоком, монитором и клавиатурой, а затем и мышью, а рабочие станции к тому же находились в индивидуальном пользовании.
Первые рабочие станции выпустила в 1981 году фирма Apollo. Они были основаны на процессоре Motorola 68000, имели сетевые интерфейсы и объединялись в клиент-серверные сети. Однако операционной системой для них был не UNIX, а собственная разработка – Aegis, позднее переименованная в DOMAIN/OS. Впрочем, ни под тем, ни под другим именем с UNIX она была несовместима, хотя, как говорят, и была с ней сходна внешне, в частности, своим командным интерфейсом.
Машины Apollo, носившие название DN100, были сами по себе дороги, а разработка софта для них, вследствие своеобразия закрытости операционки, обходилась ещё дороже. Что открывало путь к созданию альтернативных решений – более дешёвых и совместимых.
И такое решение появилось мгновенно. В том же 1981 году аспирант Стэнфордского университета Энди Бэчтольшайм (Andy Bechtolsheim), участвуя в работах по созданию сети для своей альма-матер, из отходов производства собрал машину на том же процессоре Motorola 68000. А в 1982 году он вместе Винодом Хосла (Vinod Khosla) основал компанию SUN, что первоначально расшифровывалось как Stanford University Networks, но быстро обрело «солнечную» символику – интересно, не читали ли основатели Луч света в тёмном царстве? Чуть позже третьим к ним присоединился Скотт МакНили (Scott McNealy).
«Трое появились не случайно» – они поставили себе целью создать мощный, но относительно дешёвый компьютер, основанный на стандартных промышленных компонентах. Затея эта удалась – и на протяжении 80-х годов одна за другой выпускаются машины Sun-1, Sun-2, Sun-3, основанные на процессорах Motorola 68XXX.
Стандартизация аппаратной части требовала столь же стандартной операционной системы, каковая могла основываться только на UNIX. И разработкой её занялся Билл Джой, тот самый, который, как мы увидим в главе второй, до того активно участвовал в создании BSD. И нет ничего странного в том, что именно она и была положена в основу новой ОС.
То был отнюдь не единственный пример портирования UNIX на платформу 68XXX. Мало кто ныне помнит, но, например, Apple разрабатывала собственную версию ее, под названием AUX, задолго до MacOS X – чуть не сразу после появления первого Mac’а.
Однако UNIX портировался не только – и не столько – на машины с процессором 68XXX. «Дурной пример» Sun оказался заразительным – и этим путём пошли такие разработчики собственных платформ, как IBM, Hewlett-Packard, DEC. Именно они стали и разработчиками собственных же вариантов UNIX.
Компьютеры для народа
А что же собственно персоналки, именовавшиеся в те годы IBM PC-совместимыми компьютерами? И ныне для большинства пользователей ассоциирующиеся с самим понятием компьютера.
А поначалу – ничего. Первый широко распространившийся персональный компьютер, собственно IBM PC и развивавший его линию IBM PC/XT, базируясь на внутренне 16-разрядных процессорах Intel 8088 и 8086, работать под исходно 32-битной UNIX не мог, как не способна была на это и персоналка следующего поколения, IBM PC/AT на процессоре Intel 80286.
Только появление в 1985 году первого 32-разрядного процессора от Intel – 80386, дало возможность использовать UNIX на дешевых и общедоступных персоналках. Так что именно здесь пролегала магистральная линия массовой компьютеризации – по всему миру шло триумфальное шествие Советской власти (то есть, пардон, Intel-совместимых PC).
Но под чем же работало все это аппаратное богачество? Да в подавляющем большинстве – под MS DOS, 16-разрядной операционной системой, созданной ещё для первых IBM PC и несущей в себе массу неустранимых ограничений: принципиальную однозадачность, отсутствие многопользовательского доступа, возможность использовать «по прямому назначению» лишь 640 Кбайт оперативной памяти, примитивную организацию файловой системы, не менее примитивные средства работы в текстовом режиме – единственно возможном силами «черного» DOS.
Конечно, предпринимались многочисленные попытки заретушировать «родимые пятна» DOS. Разрабатывались надстройки над ней, способные использовать вес физический объём оперативной памяти и многозадачность, такие, как QuaterDesq и Geoworks. Которые включали также и системы работы в графическом режиме. Некоторые пользовательские DOS-приложения (табличные процессоры Lotus 1-2-3 и QuattroPro, текстовый редактор WordPerfect) обзаводились собственными средствами управления памятью и графическими интерфейсами.
Вся эта многочисленная DOS-косметика была либо неудачной, либо не получила распространения. Конечно, существовала и альтернатива ей – разрабатывавшаяся в IBM операционка OS/2, первая 32-разрядная ОС, специально написанная для PC. Однако и она, не смотря на весьма прогрессивный базис, не приобрела широкой популярности. О причинах этого можно было бы вспоминать долго – не последней оказалось исключительно пофигистское отношение производителя к своему детищу.