Поиск по сайту:

Краткая история Unix


Несмотря на то, что сегодня на них приходится более 90% облачных рабочих нагрузок, у Unix (а вместе с ним и у Linux) было скромное начало. Джим Холл обсуждает, как Unix от Bell Labs в 1970-х годах стал основой многих современных операционных систем.

Истоки Unix

На заре вычислительной техники пользователи взаимодействовали с компьютером с помощью множества замысловатых средств. Первоначальный ENIAC даже не имел «интерфейса программирования», как мы думаем о таких вещах сегодня; вместо этого программисты соединяли отдельные «функциональные блоки» вместе с помощью вилок и проводов. По мере того, как компьютеры становились более практичными, они стали платформой для пакетных операций, например, с помощью стопок перфокарт с данными.

В более поздних, более «современных» системах, таких как мэйнфреймы, управление системой оставалось сложным. Для создания файла требовалось указать объем выделяемого дискового пространства, а также другие атрибуты. Операторы обычно взаимодействовали с системой с помощью бумажных терминалов, похожих на пишущие машинки. И в те первые дни именно так люди и предполагали работать с компьютерами.

В середине-конце 1960-х годов Массачусетский технологический институт, Bell Labs и GE совместно работали над новой системой под названием MULTICS, Службой мультиплексной информации и вычислений. MULTICS должна была стать революцией в вычислительной технике. Но в ходе своего развития MULTICS также становился все более сложным. Разочарованная проектом, Bell Labs отказалась от участия, предоставив другим возможность позже продвигать проект, хотя и с большим опозданием.

Тем временем Кен Томпсон вернулся из MULTICS в Bell Labs, чтобы работать над другими проектами. Одна попытка включала особенно быстрый дисковод, подключенный к миникомпьютеру DEC PDP-7. Томпсон хотел оптимизировать пропускную способность на этом диске и, соответственно, на любом устройстве хранения. Итак, он начал работу над дисковым планировщиком.

Приступая к этому проекту, Томпсон понял, что его тестовый проект выходит на территорию «Операционной системы». В течение следующих трех недель, пока его жена была в отпуске, чтобы навестить родителей, Томпсон дополнил недостающие части и добавил интерфейс вызова exec, ассемблер, редактор и оболочку. И из этих маленьких начинаний родилась Unix.

Unix-разработка

На протяжении всей разработки в Bell Labs не существовало «генерального проекта», который определял бы, что Unix должна делать или чем должна стать. Вместо этого Unix органично рос, поскольку разным пользователям требовались новые функции.

Одна из моих любимых историй раннего Unix — это то, как исследователям Unix удалось приобрести новую компьютерную систему, чтобы продолжить свою работу, и в то же время создать новую стандартную команду Unix. Патентный отдел планировал приобрести новую специализированную компьютерную систему для написания патентных заявок от имени Bell Labs. Команда Unix предложила патентному отделу купить новый миникомпьютер DEC PDP-11, а команда Unix поставит на него Unix и напишет специальное программное обеспечение, чтобы помочь патентному отделу писать заявки на патенты. Это новое программное обеспечение для написания патентов? Новая реализация системы форматирования документов Roff, которая сама является производным от более ранней программы CTSS под названием RUNOFF. Сегодня «Новый Roff» или nroff является основной частью Unix.

Сами команды Unix получили очень короткие имена. Команды ls, rm, mv и другие стандартные команды Unix были такими короткими, потому что ранние терминалы Teletype Model 33, использовавшиеся в Bell Labs, требовали значительных усилий. печатать каждую букву. Было проще ввести rm, чем более описательное имя команды, такое как remove или cp, чем copy.

Одна из определяющих функций Unix, «конвейер», который позволял одной команде отправлять свой вывод другой команде для дополнительной обработки, также была добавлена по указанию другого исследователя Bell Labs, Дугласа Макилроя. До этого команды воздействовали на отдельные файлы одновременно. Но с конвейерами вы можете связать несколько команд вместе, чтобы получить более интересные результаты. Например, команда ls выводит список файлов в каталоге, а команда wc подсчитывает введенные строки. Если вы соедините две команды вместе как ls|wc , вы получите количество файлов в каталоге.

Другие команды были добавлены аналогичным образом, потому что кто-то попросил их. Томпсон написал команду grep на основе предложения Макилроя о том, что в Unix должна быть утилита для поиска текста в файлах. Томпсон повторно использовал код из редактора ed Unix, чтобы создать утилиту для выполнения «глобальной печати регулярного выражения» любого текста, совпадающего с регулярным выражением пользователя. Эта команда «глобальной печати регулярных выражений» была названа просто grep и теперь является стандартной командой Unix.

Unix везде

Unix продолжал развиваться, в основном как исследовательская платформа и платформа для проектов внутри Bell Labs, до середины 1980-х годов. Примерно в то же время несколько разных поставщиков начали продавать свои собственные версии Unix, в том числе HP-UX от Hewlett Packard, AIX от IBM, Xenix от Microsoft, SunOS от Sun (позднее переименованная в Solaris) и другие. В 1983 году Ричард Столмен начал новый проект по созданию бесплатной версии Unix под названием GNU (рекурсивная аббревиатура, означающая «GNU's Not Unix»).

Каждый дистрибутив Unix немного отличался и был несовместим друг с другом. Некоторые из них были получены из оригинальной Unix AT&T Bell Lab, например, HP-UX и AIX. Другие версии Unix произошли от популярного университетского варианта Калифорнийского университета в Беркли, который называется BSD (распространение программного обеспечения Беркли). Многие из команд были одинаковыми или похожими в разных версиях Unix, но детали того, как вы управляли системой, обычно сильно различались. Одно из ключевых отличий заключалось в том, как загружалась сама Unix: AT&T «System V» Unix использует уровни запуска, управляемые центральным файлом /etc/inittab, в то время как BSD Unix запускает все, используя запускать сценарии управления, начиная со сценария /etc/rc .

Другие системы Unix появились и исчезли в 1980-х и 1990-х годах. Стив Джобс, смещенный с поста генерального директора Apple в 1985 году, основал NeXT, которая выпускала собственный вариант Unix, производный от BSD. NeXT привнес в Unix несколько инноваций, в том числе микроядро на базе Mach. Графический рабочий стол NeXT, NeXTSTEP, добавил другие новые идеи, такие как отображение PostScript для создания экранной графики, «док» доступных и запущенных приложений и уровень объектно-ориентированного приложения с наборами инструментов.

В 1991 году финский студент по имени Линус Торвальдс начал работу над проектом, который впоследствии стал ядром Linux. 25 августа 1991 года Торвальдс разместил в дискуссионной группе Usenet краткое объявление о своем хобби-проекте и пригласил других внести свой вклад в него. Торвальдс выпустил Linux под Стандартной общественной лицензией GNU, что означало, что любой мог модифицировать Linux для исправления ошибок или добавления новых функций. Эта модель «открытого исходного кода» или «свободного программного обеспечения» быстро привела к развитию новой Linux.

Вокруг Linux возникли сообщества, портировавшие инструменты GNU и другие команды Unix для работы в Linux. В 1992 году разработчики портировали систему X Window, предоставив Linux свой первый графический интерфейс пользователя. В результате большинство людей думают, когда говорят «Linux», хотя Linux — это просто ядро, на котором все работает.

Современный Unix

Хотя проприетарные системы Unix все еще существуют, большинство систем Unix представляют собой Linux. По крайней мере, на веб-серверах доминирует Linux. Linux также широко используется для многих корпоративных рабочих нагрузок, включая серверы приложений и серверы баз данных. Трудно точно определить, на скольких Linux-серверах работает что-то, но по многим оценкам на Linux работает более двух третей веб-серверов и другой интернет-инфраструктуры. Даже Microsoft поддерживает Linux; это платформа Azure под управлением Linux, как и подсистема Windows для Linux на настольных компьютерах Windows.

На настольных компьютерах Linux так и не закрепился. В сообществе Linux постоянно шутят: «Следующий год будет Годом рабочего стола Linux». Но Windows доминирует на рабочем столе. Однако, если вы ищете Unix на рабочем столе, рассмотрите macOS от Apple. В 1996 году, когда Стив Джобс вернулся в Apple в качестве генерального директора, Apple приобрела NeXT и использовала NeXT в качестве основы для операционной системы следующего поколения на новых компьютерах Mac. MacOS на самом деле представляет собой Unix под капотом; откройте окно терминала, и вы можете найти оболочку Unix со стандартными утилитами Unix. По сути, macOS — это официальная Unix, признанная Open Group.

Куда Unix движется дальше? Я не уверен, что «Unix» больше подходит. В то время, когда количество систем Linux значительно превышает количество серверов Unix, мы, возможно, прошли точку, когда «Unix» имеет большое значение. Это уже не «Unix как платформа», а «Linux как платформа». И точно так же, как Unix вышла за пределы своего первоначального дизайна, добавляя новые функции там, где это необходимо, Linux продолжает развиваться, чтобы соответствовать новым потребностям. По крайней мере, в обозримом будущем речь пойдет о «Linux», а не «Unix».