Глава II. Рождение Unix на PDP-7
Кен Томпсон и игра Space Travel
В 1969 году, после ухода Bell Labs из проекта Multics, Кен Томпpson остался без интересной операционной системы для работы. Но у него была страсть к видеоиграм. Томпсон написал игру "Space Travel" для системы GECOS на машине GE-635, но симуляция солнечной системы работала медленно и нестабильно. Анимация была прерывистой, управление — неотзывчивым.
Томпсон нашёл в лаборатории пылящийся миникомпьютер Digital PDP-7 стоимостью 72 000 долларов (по тем временам — рабочая лошадка начального уровня). К процессору были подключены дисплей и клавиатура, но не было никакого программного обеспечения, кроме базового загрузчика. Томпсон портировал "Space Travel" на PDP-7, и она заработала — но для разработки требовалось кросс-компилировать код на GE-635 и переносить на перфоленте, что было мучительно.
Именно эта боль привела его к мысли: системе нужна операционная система.
Рождение Unix: первая неделя
В августе 1969 года Кен Томпсон написал первую версию Unix на PDP-7. За одну неделю он реализовал ядро, файловую систему, редактор и ассемблер. Название "Unix" — это каламбур от "Multics": Брайан Керниган предложил назвать систему "Unics" (Uniplexed Information and Computing Service), намекая на то, что в отличие от громоздкого Multics, новая система будет простой и ориентированной на одного разработчика. Позже написание сменилось на "Unix".
Первая файловая система была примитивной. Каждый файл хранился как непрерывная последовательность дисковых блоков, а каталог содержал только имя и номер индексного дескриптора (inode). Именно здесь впервые появилась идея "всё есть файл" — концепция, которая станет фундаментальной для Unix. Устройства, каналы передачи данных и обычные файлы одинаково представлялись в файловой системе.
Архитектурные решения
На PDP-7 у Unix не было виртуальной памяти, не было защиты процессов (любая программа могла читать чужую память), не было многозадачности в современном понимании. Но зато была удивительно элегантная иерархическая файловая система, отделение политики от механизма и простой интерпретатор команд.
Одно из ключевых решений — сделать ядро минимальным. В отличие от Multics, где ядро пыталось управлять всем, ядро Unix занималось только базовыми вещами: управление процессами, памятью и файловой системой. Всё остальное — компиляторы, редакторы, утилиты — были отдельными программами.
Ритуалы и соглашения Unix тоже рождались здесь: короткие имена команд (cp, mv, rm, ls), текст как универсальный формат обмена, конвейеры (pipes), которые появятся чуть позже, но идея изящной композиции уже витала в воздухе.
Разработка на коленке
Деннис Ритчи вспоминал, что вся ранняя разработка велась "на коленке". Команды не было — Томпсон писал код в основном один. Ритчи помогал, когда мог, но у него были другие проекты. Оборудование было смешным по современным меркам: PDP-7 имел 8 КБ памяти (не мегабайт, не гигабайт — килобайт) и диск на 512 КБ.
Летом 1969 года к проекту присоединились Rudd Canaday, Doug McIlroy и Joe Ossanna. Они убедили руководство Bell Labs купить более мощный PDP-11/20, на который Unix был перенесён в 1970 году. Версия для PDP-11 стала первым "публичным" Unix — её начали использовать внутри Bell Labs для обработки текстов и подготовки патентов.
Заключение
Рождение Unix на PDP-7 — это история о том, как ностальгия по хорошей интерактивной среде и раздражение от плохой разработки игр привели к созданию системы, изменившей мир. Если бы у Кена Томпсона был нормальный редактор и ассемблер на PDP-7, возможно, Unix никогда бы не появилась. Иногда великие вещи рождаются из неправильных условий.
Комментарии
Комментарии пока не подключены.