Unix. Появление. Краткая история.

Unix - название целого семейства операционных систем, создание которого стало одним из самых больших достижений современной компьютерной науки. Создатели Unix доказали, что сложные операционные системы могут быть практически аппаратно независимыми, а мощные системные средства могут успешно применяться при решении прикладных задач.
На этап разработки Unix ставилась задача создать операционную систему для проведения научных исследований. Разработчики не только успешно справились с этой задачей, но и добились гораздо большего. 
История создания Unix началась в конце 60-х годов в AT&T Bell Laboratories с операционной системы под названием Multics. Эта многопользовательская система работала на мэйнфрейме GE. В 1969 году Bell Labs отошла от проекта Multics и вплотную занялась разработкой того, что впоследствии превратилось в операционную систему UNIX(название UNIX произошло от Multics, "multi" уступило место сочетанию "uni" и волею случая символы "cs" были заменены на "x").
Приблизительно в то же время сотрудник Bell Labs Кен Томпсон, который вскоре стал известен всему миру как один из создателей UNIX, заинтересовался компьютером PDP-7 производства Digital Equipment Corporation(DEC), считавшимся тогда бесперспективным. Томпсон решил построить операционную систему, которая поддерживала бы совместную работу коллектива программистов при поведении исследований и разработке новых продуктов. Чтобы заручиться поддержкой руководства, Томпсон пообещал, что разрабатываемую систему можно будет использовать как инструментальное средство для подготовки патентной документации. И действительно, первая версия UNIX, работавшая на компьютере PDP-11/20, была использована в 1971 году в патентной организации.
В начале своего развития UNIX в основном использовалась в двух "несовместимых" областях деятельности - подготовке документов и программировании (как известно, разработчики программ яростно противятся всяким попыткам заставить их хоть как-то документировать свои продукты). Однако, впоследствии, именно UNIX показала, что средства обработки текстов играют большую роль в любой сфере, в том числе и в программировании. Без мощных редакторов и инструментов управления файлами было бы невозможно завершить большие проекты по созданию программного обеспечения, насчитывающие тысячи файлов  миллионы строк исходного кода.
Первый этап работы Томпсона увенчался созданием операционной системы, ассемблера для PDP-7 и нескольких утилит. В 1973 году сотрудник Bell Labs Деннис Ритчи переписал систему UNIX на созданном им языке программирования C(Си). Ритчи разработал этот язык общего назначения специально для дальнейшей работы над системой UNIX. Язык Си легко адаптировался для различных архитектур и вскоре начал применяться на самых различных машинах - от Cray до персональных компьютеров. Если бы система UNIX не была написана на переносимом языке, каковым является Си, она была бы жестко привязана к одному типу компьютера, в данном случае к PDP-7. В результате использования Си система стала легко переносимой, и в настоящее время ее можно легко адаптировать для машины новой архитектуры.
Впервые UNIX была перенесена на другую платформу в 1976 году Ритчи и Стефен Джонсон адаптировали систему для Interdata 8/32. Затем был выполнен перенос UNIX на различные популярные архитектуры, в частности, Zilog Z80 и Z-8000, Motorola MC68000/68010/68020, Intel 8086/8088/80x86 и даже на супер компьютер Cray.
После того, как система UNIX была принята на вооружение Bell Labs, началось ее распространение в остальных компаниях Bell System. Приблизительно в то же время ею заинтересовались престижные учебные заведения, такие как Калифорнийский университет и Массачусетский Технологический Институт. В 1975 году Western Electric Company, входящая в состав AT&T, начала продавать независимым производителям исходные коды UNIX и лицензии на использование системы. В то же время, учебным заведениям, желающим получить в свое распоряжение UNIX, достаточно было приобрести магнитную ленту и затратить незначительные средства на поддержку системы. Таким образом стимулировались дальнейшие работы по модификации данной операционной системы.
Не исключено, что именно успех системы в учебных заведениях был причиной несколько пренебрежительного отношения к UNIX со стороны промышленных организаций. Однако, как бы то ни было, результатами, полученными в 1973 Томпсоном и Ритчи, мы пользуемся по сей день.
В конце 70-х - начале 80-х годов AT&T уделяла мало внимания развитию UNIX. В это же время профессоры и студенты факультета компьютерных наук Калифорнийского университета усиленно занимались поддержкой и доработкой данной системы. Так как в университете в основном использовалось оборудование производства DEC, в качестве базовой версии была выбрана система UNIX 32V, и в результате работы над ней были созданы BSD 3 и BSD 4 для компьютеров VAX.
В 1991 году ведущие ученные Калифорнийского университета, работавшие в составе Computer Systems Research Group, создали независимую компанию Berkeley Software Design Inc. , предназначенную для коммерческого распространения BSD UNIX и сетевых технологий. Продукт BSDI Internet Server широко использовался Internt провайдерами для подключения к глобальной сети.
В состав BSD UNIX были включены новые средства, в частности оболочка C Shell, редактор vi, языки программирования Franz Lisp и Pascal, поддержка сетевого взаимодействия и взаимодействия между различными процессами с использованием механизма гнезд и псевдотерминалов, поддержка виртуальной памяти. В системе также были реализованы различные технологические решения для увеличения производительности. Самым значительным вкладом в проект BSD стала разработка утилит обеспечивающих дружественный пользовательский интерфейс. Этому вопросу практически не уделялось внимания при создании AT&T первых версий UNIX.
В 1980 году в лекции "Эволюция системы с разделением времени UNIX" Деннис Ритчи описал дух, который существовал в начале создания UNIX: "Мы хотели сохранить не только хорошую среду разработки, в которой писались программы, но и систему, вокруг которой могло сформироваться  товарищество. По своему опыту мы знали, что основой совместной работы, предоставляемой машинами с разделением времени и удаленным доступом, был не только  ввод программ в терминал вместо перфорирующего устройства, но и стремление к более тесному общению".
Простота и мощь дизайна UNIX стала ломать барьеры на пути разработчиков программного обеспечения. В основе UNIX лежало несколько ключевых компонентов.

  • Файловая система UNIX - после создания структуры, поддерживающей несколько уровней подкаталогов (для современных пользователей такая структура выглядит как папки внутри папок), система UNIX могла использоваться для интуитивной организации файлов и каталогов. Более того, сложные методы доступа к дискам и другим устройствам были значительно упрощены через представление всех устройств в виде файлов, к которым можно было получать доступ как к элементам каталога.
  • Перенаправление ввода/вывода - ранние системы UNIX также содержали концепцию перенаправления ввода конвейеров. В командной строке пользователи UNIX могли перенаправлять вывод команды в файл. Для этого использовался символ >. Далее была добавлена концепция каналов | , позволявшая превращать вывод одной команды во ввод другой. Например, командная строка вида cat file1 file2 | sort | pr | lpr приводит к объединению (cat) содержимого файлов file1 и file2, лексикографической сортировке (sort) строк из файлов, разбиению отсортированного текста на страницы (pr) и перенаправлению вывода на принятый по умолчанию принтер (lpr). Метод перенаправления ввода и вывода сделал возможным создание собственных утилит, связываемых с уже существующими утилитами. Такая модульность позволила писать код большому количеству разработчиков.
  • Переносимость - большая часть усилий по упрощению работы с UNIX привела к исключительной простоте переноса операционной системы на другие платформы. Драйверы устройств(представлены в виде файлов в дереве файловой системы) позволили системе UNIX предоставить интерфейсы, скрывающие от прикладных приложений информацию об используемом программном обеспечении. Для последующего переноса операционной системы UNIX на другие платформы разработчикам пришлось внести изменения только в драйверы устройств. Модификации прикладных приложений не потребовалось.


ДОПОЛНЕНИЯ ВОЗМОЖНЫ

Комментарии