Unix операционная система что это

Что такое UNIX и зачем он нужен

Операционная система, которая изменила мир, хотя в ней почти никто не работал

В 1970-х годах в мире появился UNIX — операционная система, из которой растут ноги у большинства современных операционок. Для своего времени это был технологический прорыв, а заложенные там принципы мы используем до сих пор. В этой статье — что же там было такого революционного.

👍 Статья расширяет кругозор и помогает лучше понять информатику, но не имеет прикладной ценности. Если вам нужно что-то прикладное — прочитайте про размеры элементов в CSS.

Однозадачные компьютеры

Когда компьютеры только начали появляться, то работали они примерно так:

Получается, что они работали в однозадачном режиме: работает только одна программа, а для запуска второй нужно остановить первую. По этому принципу до сих пор работают контроллеры в ваших микроволновках и холодильниках, а также контроллеры типа Arduino.

Сначала такой подход всех устраивал, потом стало неудобно.

Многозадачные компьютеры

Чтобы компьютер работал более эффективно, программисты написали код, который управляет работой всего компьютера — операционную систему.

Первые операционные системы были псевдомногозадачными. Это значит, что они не запускали одновременно несколько программ, а в цикле по очереди брали по одной команде из каждой программы и выполняли их. Так как переключение между командами из разных программ происходит быстро, то создаётся впечатление, что они работают одновременно.

Потом эту проблему тоже решили, и компьютер мог выполнять несколько программ действительно одновременно, чтобы они не мешали друг другу. Так появились многозадачные операционные системы.

Но в то время домашних компьютеров не было, а желающих поработать за университетским компьютером было много, поэтому все работали по очереди. Например, один лаборант работал на нём с часу до двух, второй — с двух до трёх, а научный руководитель работал за компьютером с трёх до шести.

При этом мощности компьютеров уже хватало на то, чтобы с ним мог работать второй пользователь, не замедляя работу первого. А вот операционных систем, которые бы так умели, — не было. И здесь появляется UNIX.

UNIX — многопользовательская операционная система

Создатели UNIX Кен Томпсон и Деннис Ритчи (который потом напишет язык C) решили проблему так:

Со стороны пользователя кажется, что весь сервер в его распоряжении, но на самом деле сервером могут пользоваться одновременно десятки человек и не знать о том, что сервер выполняет что-то ещё. Сейчас это звучит обычно и примитивно, но для того времени это был прорыв.

Операционную систему, которая умеет всё это делать, назвали UNIX — сокращение от Uniplexed Information and Computing Service (единый информационно-вычислительный сервис). Изначально это называлось UNICS, но потом последние две буквы превратились в одну.

Что нового появилось в UNIX, чего до неё не было

Вот что впервые появилось именно в UNIX — и в виде идей, и в виде готового кода:

Файловая система с любой глубиной вложенности. Мы сейчас привыкли к папкам, в которых можно создавать другие папки, а в них третьи и так почти до бесконечности. Но до UNIX глубина вложенности была ограничена — нельзя было создать, например, папку внутри другой папки.

Модель работы с файлами. Пользователю раньше нужно было самому предусмотреть формат, размер и физическое размещение файлов на диске. В UNIX это всё взяла на себя операционная система.

Работа с программами напрямую. До UNIX настройку работы всех программ можно было сделать только в командной строке: запустил → компьютер что-то посчитал → показал результат. Если нужно изменить параметры, то это надо было делать через командную строку. В новой системе можно было менять настройки программ прямо внутри них — именно так и устроены сейчас все программы.

Вывод всего как текста. Раньше компьютеры работали с битами и выводили битовые последовательности. Их нужно было отдельно разбивать на нужные фрагменты или использовать встроенные программы для перевода битов в байты, а из них — в текст.

В UNIX единица вывода — это не бит, а байт. А в байт как раз умещается символ текста, а значит, с ним можно работать как с текстом: искать, склеивать с другими, отправлять в файл и так далее.

Регулярные выражения стали использоваться не только в профессиональных задачах, но и как основа для обработки вывода программ.

Язык C. Этот язык появился в UNIX как замена языка B. Но B был интерпретируемым языком (как Python), и для запуска программ нужен был его интерпретатор. Язык C — компилируемый, а значит, готовые программы можно запускать на любом совместимом компьютере, даже если на нём нет компилятора C.

Протокол TCP/IP. До UNIX этот протокол не был популярен, и компьютеры связывались друг с другом по более старому протоколу, который не имел столько возможностей. Теперь благодаря этой операционной системе весь мир пользуется интернетом, построенным на протоколе TCP/IP. Справедливости ради, этот протокол появился не в первой поставке UNIX.

Как работают в UNIX

Для управления этой системой почти всегда используется командная строка. Есть, конечно, и графический интерфейс для некоторых систем и задач, но штука в том, что UNIX заточен на работу в серверах. А у серверов чаще всего нет ни клавиатуры, ни монитора — только сетевые соединения, через которые пользователи и соединяются с сервером, чтобы им управлять.

Как UNIX стал стандартом

С середины 1970-х годов идёт довольно мутная история, в которой компания
AT&T долго и небезуспешно пытается заработать на UNIX, а американские университеты и инженеры-любители делают свою открытую версию. Идёт конкуренция между стандартами, инструментами, поставками и протоколами.

Конкуренция выливается в то, что у UNIX появляется множество более совершенных потомков. Их мы называем Unix-подобными системами.

Можно сказать, что Unix-подобность — это такой набор правил, условностей и стандартов, которых должны придерживаться новые операционки, чтобы сохранять преемственность и некоторую совместимость. То есть такой ГОСТ для операционных систем. Операционка может быть и без ГОСТа, но с ним лучше.

Где сегодня используется UNIX

В чистом виде UNIX сейчас используется только на серверах и оборудовании связи. Всё дело в том, что для домашнего использования эта система подходит слабо: у неё нет встроенного графического интерфейса и все операции и программы нужно настраивать вручную.

Зато если нужна гарантированная надёжность, производительность и масштабируемость, особенно при сетевых нагрузках, — используют UNIX или производные от неё. Про них сейчас тоже расскажем.

UNIX-подобные системы

На основе оригинальных версий Юникса появилось много разных операционных систем: BSD, Solaris, HP-UX и даже MacOS, который сделан на основе BSD версии 4.4. Идеи, которые были заложены 50 лет назад, оказались настолько рабочими, что применяются до сих пор.

А ещё есть Linux и его производные — RedHat, Calculate, Ubuntu и ещё сотня дистрибутивов. Многие думают, что Линукс — это развитие Юникса, но на самом деле это полностью самостоятельное и независимое от него семейство операционных систем, хотя и слова похожие. Про Линукс обязательно расскажем в следующей статье.

Источник

Unix операционная система что это

Система UNIX имеет 4 основных компонента:

Ядро контролирует доступ к компьютеру, управляет памятью компьютера, обслуживает файловую систему и распределяет ресурсы компьютера среди пользователей. На рис. 1 приведено функциональное представление ядра.

Unix операционная система что это. Смотреть фото Unix операционная система что это. Смотреть картинку Unix операционная система что это. Картинка про Unix операционная система что это. Фото Unix операционная система что это

Shell

Этот раздел знакомит вас со многими программами и инструментальными средствами системы UNIX, которые вы будете использовать достаточно часто.

Внешний круг системы UNIX образуют программы и инструментальные средства системы, разделенные на категории функционально. Эти функции включают:

Как выполнять команды

Чтобы ваш запрос был понятен системе UNIX вы должны ввести каждую команду в корректном формате или синтаксисе командной строки. Этот синтаксис определяет порядок, в котором вы вводите компоненты командной строки. И вы должны расположить все составные части командной строки в требуемом синтаксисом порядке, иначе shell не сможет интерпретировать ваш запрос.

Пример синтаксиса командной строки:

Файловая система

Файловая система является краеугольным камнем операционной системы UNIX. Она обеспечивает логический метод организации, восстановления и управления информацией. Файловая система имеет иерархическую структуру.

Обыкновенные файлы

Обыкновенные файлы являются набором символов. Обыкновенные файлы используются для хранения любой информации. Они могут содержать тексты для писем или отчетов, коды программ, которые вы написали, либо команды для запуска ваших программ. Однажды создав обыкновенный файл вы можете добавить нужный материал в него, удалить материал из него, либо удалить файл целиком.

Справочники

Справочники являются супер-файлами, которые могут содержать файлы или другие справочники. Обычно файлы, содержащиеся в них, устанавливают отношения каким-либо способом. Например, справочник, названный sales может хранить файлы, содержащие цифры ежемесячных продаж, названные jan, feb, mar, и т.д. Вы можете создать каталоги, добавить или удалить файлы из них или удалить каталоги.

Все справочники, которые вы создаете, будут размещены в вашем собственном справочнике. Этот справочник назначается вам системой во время входа в систему. Никто кроме привилегированных пользователей не может читать или записывать файлы в этот справочник без вашего разрешения и вы определяете структуру этого справочника.

Специальные файлы

Специальные файлы соответствуют физическим устройствам, таким как терминал, дисковое устройство, магнитная лента или канал связи. Ситема читает и записывает из/в специальные файлы также как и в обыкновенные файлы. Однако запросы системы на чтение и запись не приводят в действие нормальный механизм доступа к файлу. Вместо этого они активизируют драйвер устройства, связанный с файлом, приводя, возможно, в действие головки диска или магнитной ленты.

Расположение системы

Некоторые операционные системы требуют от вас определить тип файла и использовать его определенным способом. От этого будет зависеть то, как будут файлы сохраняться, т.к. файлы могут быть последовательными, двоичными или произвольной выборки

Для системы UNIX все файлы одинаковы. Это делает файловую структуру UNIX легкой в использовании. Например, вам нет необходимости указывать требования к памяти для ваших файлов, т.к. система автоматически это сделает для вас. Или если вам или написанной вами программе необходим доступ к определенному устройству (например, принтеру) вы указываете устройство также как любой из ваших файлов. В системе UNIX существует только один интерейс для всего вашего ввода и вывода для вас; это упрощает ваше взаимодействие с системой.

Справочник root содержит несколько важных системных справочников:

Источник

Рождение и развитие Unix

Unix операционная система что это. Смотреть фото Unix операционная система что это. Смотреть картинку Unix операционная система что это. Картинка про Unix операционная система что это. Фото Unix операционная система что это
Томпсон (сидит) и Ритчи работают на PDP-11, 1972 год.

Период 1968-69 гг. был очень неопределенным для Bell Labs: проект операционной системы с разделением времени Multics (Multiplexed Information and Computing Service), разрабатываемой с 1964 года для дорогой 36-битной ЭВМ GE-645, не имел четких перспектив и целей, а лишь разрастался в размерах и сложности, всё ясней был виден его предполагаемый провал. В конце концов, American Telephone & Telegraph вышла из проекта, в который за пять лет были вложены миллионы долларов.

Однако, некоторые из инженеров, работавших над Multics — Кен Томпсон, Деннис Ритчи, Малкольм Дуглас Макилрой, Джозеф Оссанна, — ощущали необходимость в продолжении работы над подобным проектом, и не хотели терять успевшую сформироваться уютную рабочую атмосферу. Поэтому в 1969 году они начали искать альтернативу Multics: Оссанна, Томпсон, Ритчи пытались протолкнуть покупку машины средней мощности, для которой группа обещала написать операционную систему. Заказ на предлагаемые ЭВМ DEC PDP-10 и Sigma 7 так и не был сделан, и хотя несколько раз ситуация выходила на грань получения нужного оборудования, было вполне очевидно, что команда просит слишком крупную сумму для проекта с расплывчатым планом, тем более, что после провала Multics операционные системы стали не настолько привлекательной сферой. Поэтому Томпсон (в основном это была его задумка), Кэнэдэй и Ритчи (привнесший идею файлов-устройств) разработали на обычных черных учебных досках и бумаге устройство файловой системы, которая позже стала сердцем Unix.

Начало работы

Томпсон написал для Multics симуляцию производительности предлагаемой файловой системы и страничного поведения программ, начал реализацию новой операционной системы для GE-645. Он разработал ассемблер для машины и рудиментарное системное ядро, способное лишь выводить приветственное сообщение. Сложность оборудования делала заметным достижение Томпсона, но как только выяснилось, что ввиду выхода из проекта Multics 645-ая серия в Bell Labs будет продолжать работать от силы несколько месяцев, работа была прекращена.

Также в 1969 году Томпсон написал игру Space Travel для Multics, пока ещё имел к ней доступ, а потом переписал её на Фортране для GECOS, операционной системы машин GE-635. Игра содержала всего лишь симуляцию движения основных тел Солнечной системы, среди которых игроку предлагалось провести корабль и приземлиться на планетах и их лунах. Игра в версии для GECOS имела два основных недостатка: высокая цена вычислительного времени ($75 за игру) и подтормаживания графики. Поискав, Кен нашел немного использовавшийся PDP-7 с отличным экраном, ранее машину купили как терминал Graphic-II для проекта анализа цепей.

Ритчи и Томпсон переписали Space Travel для запуска на этой ЭВМ. Работа над маленькой игрой была куда более важной, чем может показаться: поскольку они проигнорировали существующее программное обеспечение, приходилось писать пакет для обработки чисел с плавающей запятой, спецификации графических символов и систему отладки самостоятельно. Всё это было написано на GECOS на кросс-ассемблере для PDP-7, и процесс переноса ассемблерного кода на перфокартах использовался в дальнейшем для реализации уже файловой системы, проект которой уже был разработан.

Летом 1969 года жена Кена уехала к его родителям, чтобы показать новорожденного сына, и Томпсон с головой ушел в работу. Вместе с файловой системой новой операционной системы появился маленький набор пользовательских программ: копирование, печать, удаление, редактирование и, конечно же, интерпретатор команд, командный процессор. После доработки ассемблера отпала необходимость писать на GECOS и переносить файлы перфолентой. Хотя название Unix как отсылка к Miltics появилось только в 1970 году как шутка Брайана Кернигана на тему того, что новая система поддерживала лишь пользователя Томпсона, и поэтому должна носить название Un-multiplexed Information and Computing Service, операционная система уже родилась и жила.

Unix операционная система что это. Смотреть фото Unix операционная система что это. Смотреть картинку Unix операционная система что это. Картинка про Unix операционная система что это. Фото Unix операционная система что это

Файловая система Unix для PDP-7 имела линейный массив индексных дескрипторов, каждый из которых описывал файл, директории (особый файл, содержащий имена и ассоциированный индекс), особые файлы, описывающие устройства. Вызовы файловой системы тоже не слишком отличаются от сегодняшних: read, write, open, creat, close. Отличие было в том, что единицей ввода-вывода в PDP-7 было машинное слово, а не байт. Примитивная по сегодняшним меркам операционная система предоставляла более удобную среду разработки, чем существовавшие аналоги. Всё очевиднее становилось, что изначально устаревшая PDP-7, накладывающая множество раздражающих ограничений на работу новой операционной системы, не сможет удовлетворить нужды для дальнейшего развития, как и вся серия машин PDP-7, а разрешать закупку нового оборудования руководство вряд ли решится.

Оссанна, до конца его дней увлекавшийся текстовым процессингом, предложил схитрить и попросить у начальства новейший микрокомпьютер компании DEC — PDP-11 — для создания инструментов редактирования и форматирования текста. А факт того, что для создания этих инструментов потребуется написать операционную систему, шел почти что как сноска. Запрашиваемая сумма была куда меньше, чем ранее — всего 65 тыс. долларов.

Unix операционная система что это. Смотреть фото Unix операционная система что это. Смотреть картинку Unix операционная система что это. Картинка про Unix операционная система что это. Фото Unix операционная система что этоПредыдущие расплывчатые предложения встречались с неодобрением, это же было слишком узко́. Не сразу, но начальство клюнуло, уже в мае 1970 года благодаря усилиям Макмахона был произведен заказ на PDP-11. Машина прибыла в конце лета, но продукт был настолько новым, что накопительный диск пришлось ждать до декабря. Всё это время Томпсон, Ритчи и остальные продолжали работать над Unix на PDP-7. В это время новенький PDP-11 три месяца обсчитывал ходы шахматного коня на доске 6×8.

Лишь после установки накопителя PDP-11 всё усложняющаяся операционная система была переписана на новую машину. У версии Unix для PDP-11 не имелось особых преимуществ относительно версии для PDP-7. К примеру, всё так же не было многозадачности: лишь одна пользовательская программа могла находиться в ядре. Размеры системы были невелики: 24 килобайта ОЗУ (16 килобайт для операционной системы и 8 килобайт для пользовательских программ), диск с тысячей блоков (512 килобайт). Файлы были ограничены размером в 64 килобайта.

Затем была переписана программа roff, текстовый процессор, написанный Осанной. Впервые Unix испытали вне Bell Labs при работе в патентном отделе AT&T, где требовалось редактировать и форматировать заявки на патенты. Unix-система имела преимущества над испытываемой в это же время в патентном отделе коммерческой системой редактирования текста: во-первых, Unix имела поддержку 37-ой модели терминалов Teletype, печатавшей все требующиеся математические символы, во-вторых, в roff быстро добавили возможность нумеровать страницы, чем конкурент не обладал.

Во время второго полугодия 1971 года группа осуществляла поддержку трех машинисток и пыталась продолжать работу в свободное время. Unix получила хорошую репутацию за поддержку интересных функций на скромном оборудовании, и система была принята к использованию в патентном отделе AT&T, что давало возможность группе убедить руководство заказать ещё одну машину, другую модель PDP-11 — PDP-11/45, ещё более мощную, чем уже купленная.

В ранние годы Unix постоянно изменялась и эволюционировала, поэтому не было смысла выпускать версии или релизы, хотя периодически происходили издания программисткого руководства, и первые системы Unix носили названия этих изданий. Первое издание датируется ноябрем 1971 года.

Языки программирования высокого уровня

Каждая программа для Unix в версии PDP-7 писалась на очень слабом ассемблере — к примеру, не было макрокоманд. Первым интересным языком был TMG Макклура, реализованный Макилроем. Потом Томпсон решил, что нельзя предлагать компьютерную систему без Фортрана, поэтому он начал писать Фортран в TMG, но намерение реализовать его продлилось неделю. То, что он сделал, было компилятором для нового языка B. Новый язык испытал сильное влияние BCPL, вкуса Томпсона к спартанскому синтаксису и скромные размеры места для компилятора, который производил простой и медленный, но исполняемый код, что сделало жизнь программистов легче. Позже кросс-компилятор PDP-7 для PDP-11 был написан на B, и постепенно компилятор для PDP-7 был транслитерирован из TMG в B. С прибытием PDP-11 почти сразу же на ней был настроен B. Ещё до прибытия накопителя для новой машины на PDP-11 был написан калькулятор.

Над переписыванием операционной системы на B не особо задумывались, даже ассемблер для новой ЭВМ переписывался на ассемблере, поскольку интерпретируемый код был слишком медленным. Также стояла проблема несоответствия ориентированного на машинное слово B и PDP-11 с байтовой адресацией.

Поэтому в 1971 году была начата работа над тем, что стало языком C. Всем прекрасна известна связь BCPL → B → C, и нет смысла повторять её, стоит лишь отметить, что в 1973 году ядро операционной системы было переписано на C, и Unix приобрел черты своих современных версий. Было ещё множество внешних изменений, и внутреннее строение системы стало более рациональным и простым. Успех попытки подтвердил, что C является полезным и практически универсальным инструментом для системного программирования, а не игрушкой для простых приложений. Сегодня лишь самые важные программы Unix-подобных систем пишутся на ассемблере, почти все утилиты и приложения написаны на C.

Дальнейшее развитие

Годами Unix оставалась лишь исследовательским проектом Bell Labs, но в 1973 году авторы представили систему на симпозиуме Ассоциации по вычислительной технике, и запросы на предоставление копий посыпались сразу же. Это ставило AT&T в крайне неудобное положение: ещё в 1956 году монополист связи был ограничен от продажи продуктов и услуг, не связанных напрямую с телефонами и телекоммуникациями, и поэтому Unix не могла продаваться. Именно этим мы обязаны выпуску исходных кодов ранних версий практически всем желающим без поддержки, рекламы и исправлений.

И такая политика дала свои плоды: поклонники операционной системы уже тогда начали общаться и собираться вместе для обмена опытом, исправлениями и багфиксами, новыми инструментами и улучшениями системы. К популярности Unix в конечном счете привели не только простота, элегантность её устройства, востребованность и портируемость, но и формирование сплоченного комьюнити Usenix. Сообщества формировались не только в США, но и в Австралии (в университете Нового Южного Уэльса и Сиднейском университете), и все они обменивались магнитными лентами с новыми программами и исправлениями для системы. К середине 70-х годов именно это окружение сформировало современные традиции сообщества open-source.

Однако, чем популярнее становилась Unix, тем пристальнее юристы AT&T следили за несколько фривольным поведением лицензиатов. К примеру, Джон Лайонс, преподающий в университете Нового Южного Уэльса, в 1977 году опубликовал одну из самых известных книг всех времен «Комментарии к операционной системе Unix», включавшую и листинг исходных кодов ОС. Условия лицензирования Unix допускали обмен исходниками, поэтому вначале книга Лайона продавалась только лицензиатам. В 1979 году AT&T ужесточила наказание за использование книги в учебных классах, и нет ничего удивительного в том, что книга стихийно начала копироваться самиздатом, порой, фотокопии фотокопий имели практически нечитабельное состояние.

Юристы AT&T следили и за жизнью в Bell Labs. К примеру, между изданием шестого издания Unix в 1975 году и седьмого в 1979 Томпсон собрал из внешних и внутренних источников Bell Labs десятки важных исправлений для системы, которые собирался вбросить в пользовательскую базу. Юристы компании запретили ему это делать, поскольку это было бы формой поддержки. Но корректоры ошибок всё равно стали доступны: Лоу Кацу, основателю и презиенту Usenix, однажды позвонили и сообщили, что если он в 2 часа дня посетит определенное место на Маунтайн авеню (где и находится Bell Labs), то он найдет кое-что интересное. Кац последовал указаниям и нашел магнитную ленту с исправлениями, которые немедленно попали в руки бесчисленного числа пользователей.

80-е. Ответвления

После разрушения монополии Bell System компания AT&T более не была связана путами соглашения 1956 года. Одновременно с этим развивались многочисленные ответвления Unix, в первую очередь версия университета Беркли, которая была тщательно вычищена от кода AT&T, чтобы сделать её свободно распространяемой. После суда в 1992 году AT&T против университета Беркли законный статус Unix-клонов был подтвержден.

Если бы исходные коды Unix не были бы доступны общественности, Линус Торвальдс, как он сам говорит, вряд ли бы создал Linux, который в начале 90-х был написан с нуля. Сегодня именно Linux и семейство BSD несут крест отошедшей на задний план Unix и управляют всем: от мобильных телефонов до суперкомпьютеров.

Источник

Философия Unix: Краткое введение

Unix операционная система что это. Смотреть фото Unix операционная система что это. Смотреть картинку Unix операционная система что это. Картинка про Unix операционная система что это. Фото Unix операционная система что это

Философия Unix лежит в основе не только оригинальной UNIX, разрабатываемой Кеном Томпсоном в Bell Labs с 1969 года, но и ее многочисленных прямых потомков и клонов, к коим относятся Solaris, Linux и семейство BSD(1), называемые в совокупности Unix-подобными операционными системами. Она оказалась определяющим фактором быстрого роста и успеха Linux и стала причиной того, что эти операционные системы до сих пор считаются лучшими(1) операционными системами, разработанными на сегодняшний день, несмотря на то, что они, безусловно, являются самыми старыми операционными системами в широком доступе.

Не существует единого стандартизированного изложения философии. Но если бы ее нужно было описать одним словом, то это слово было бы модульность, что подразумевает систему, состоящую из компонентов (то есть модулей), которые могут быть собраны вместе и скомпонованы различными способами.

Модульность является обычным явлением в природе, и ее применение к продуктам, созданным руками человека (как товарам, так и услугам), было ключевым фактором в развитии и прогрессе индустриального общества. Тем не менее, она относительно мало использовалась для компьютерного программного обеспечения до разработки UNIX, и даже сегодня ее огромные преимущества не могут быть полностью раскрыты другими операционными системами, в первую очередь системами Microsoft Windows.

Несколько более длинное и более традиционное изложение философии Unix, но которое по сути говорит то же самое, было бы следующим: разрабатывайте программы так, чтобы они выполняли только одну задачу, но делали это хорошо, и чтобы они хорошо работали вместе с другими программами(3)..

Философия обычно излагается в виде серии кратких правил или принципов(4). Хотя все они обычно логически вытекают из концепции модульности (например, небольшой размер, эффективность, простые интерфейсы и легкость понимания), думаю будет полезно сформулировать и обсудить их по отдельности.

Среди этих принципов выделяют так называемое правило композиции, которое гласит, что программы (из которых состоит модульная операционная система) должны разрабатываться таким образом, чтобы их можно было легко подключать к другим программам. Еще одно — правило тишины, которое гласит, что программы по умолчанию не должны ничего говорить (т. е. не выдавать никаких результатов), кроме того, что может быть интересно, необычно или удивительно.

К реализации принципа модульности в Unix-подобных системах подошли очень серьезно, стараясь применять его не только к программам, но и к их составным частям, таким как алгоритмы, и даже к ядру (т. е. ядро операционной системы). Таким образом, Unix-подобная операционная система обычно (или, по крайней мере, в идеале) состоит из небольшого ядра и большого количества небольших специализированных программ, которые могут взаимодействовать друг с другом через множество четко определенных интерфейсов.

Самый известный из этих интерфейсов, который к тому же является одним из самых важных нововведений UNIX — это pipe (конвейер, пайп). Представленные вертикальным символом черты в командах, вводимых пользователем, пайпы позволяют комбинировать программы так, что выходные данные одной становятся входными данными другой. Такие конвейеры команд позволяют легко выполнять узкоспециализированные операции, которые были бы достаточно затруднительными или практически невозможными при использовании немодульной системы.

Другим важным принципом этой философии является использование читаемого текста (plain text — т. е. человеко читаемых буквенно-цифровых символов) вместо двоичных файлов (которые не очень легко читаются человеком) в максимально возможной степени для входных и выходных данных программ и файлов конфигурации. Это потому, что текст — это универсальный интерфейс, то есть, он может позволить программам легко взаимодействовать друг с другом в виде текстовых выходных и входных данных, избавляя их от трудностей, которые возникли бы у них, если бы каждая из них использовала взаимно несовместимые двоичные форматы, и потому, что с такими файлами людям легче взаимодействовать. Последнее означает, что людям легко изучать, исправлять, улучшать и расширять такие файлы, а также переносить (т. е. модифицировать) их на новые платформы (т. е. другие комбинации операционных систем и оборудования).

Помимо того, что она сделала Unix-подобные операционные системы более эффективными и простыми в использовании, философия Unix также способствует их развитию и совершенствованию. Это связано с тем, что использование небольших специализированных (т. е. модульных) программ значительно облегчает разработчикам их улучшение в сравнении с громоздкими многофункциональными программами. Одна из причин заключается в том, что небольшие программы могут быть достаточно маленькими и простыми для понимания одним человеческим разумом, в то время как большие и сложные программы, как правило, не могут. Это также связано с тем, что такая специализация делает практичным для разработки (включая улучшения) быть максимально распределенной, а не сконцентрированной в одном или нескольких центральных местах.

Исторический контекст

Еще одним важным фактором стремления Томпсона к максимальной простоте и эффективности был тот факт, что он изначально написал свою операционную систему для компьютера PDP-7, который имел чрезвычайно маленькую оперативную память, всего 4000 18-битных слов. (Однако это считалось вполне приемлемым, когда этот компьютер был создан в 1965 году, особенно с учетом его низкой стоимости — всего 72000$ за базовую модель.)

Хотя за последующие десятилетия размер и сложность Unix-подобных операционных систем значительно увеличились в ответ на непрерывное снижение стоимости памяти и повышение производительности CPU (центрального процессора), наследие первоначальной простоты продолжает жить, а Unix-подобные операционные системы по-прежнему гораздо более модульны, чем большинство других систем (в первую очередь систем Microsoft Windows).

Снижение доли рынка UNIX по сравнению с системами Microsoft Windows, начавшееся в 1990-х годах, иногда объяснялось мнением, что UNIX — это старая, неуклюжая система, которая изжила себя. Однако оказалось, что это снижение на самом деле не связано ни с каким-либо внутренним дефектом ни в философии, ни в самой операционной системе, ни с каким-либо врожденным превосходством систем Microsoft. Скорее, это было результатом того факта, что философия была разработана для другой эпохи, когда к программному обеспечению относились как к математике или любому другому научному знанию. То есть программное обеспечение было чем-то, чем можно было поделиться и улучшить для всеобщего блага, а не чем-то, что нужно было копить и оберегать ради увеличения корпоративной прибыли.

Таким образом, вместо отказа от философии требовалось что-то дополнительное, чтобы операционные системы, основанные на ней, могли снова процветать и расти в этой новой среде. Это дополнение появилось в форме концепции лицензирования свободного/бесплатного программного обеспечения, которая сохраняет программы бесплатными не только в финансовом смысле, но и в отношении их использования (включая копирование, изменение, расширение и распространение). Особенно важным в этом контексте было развитие концепции copyleft (авторского лева), которая предотвращает появление доминирующих версий, требующих использования дорогостоящего оборудования, а также способствует совместимости между различными версиями, не препятствуя инновациям. Результатом стало возвращение широкой общественности права собственности на Unix-подобные операционные системы и прикладные программы для использования с ними, что как следствие привело к оживлению технологического развития.

Контраст с проприетарными системами

Философия Unix явно сильно отличается от философии, лежащей в основе операционных систем Microsoft Windows. Даже больше, эти системы характеризуются некоторыми совсем противоположными качествами. По сути, они монолитны (т. е. не имеют модульности). Конкретные характеристики включают чрезвычайно большие размеры программ, большую сложность исходного кода, очевидное отсутствие мастерства во многих аспектах (например, плохая безопасность), отсутствие прозрачности (исходный код является тщательно охраняемым секретом) и отсутствие портативности (т.е. может работать только на одном базовом типе процессора).

Исходный код (source code, также называемый source или code) — это версия программного обеспечения (обычно прикладная программа или операционная система) в том виде, в котором она изначально написана (т. е. набрана на компьютере) человеком в виде обычного текста. Он может быть написан на любом из многочисленных языков программирования, одними из самых популярных из которых являются C, C ++, Java, Perl, PHP, Python и Tcl/Tk.

Этот резкий контраст вполне естественен, поскольку операционные системы Microsoft Windows, как и многие другие проприетарные (т. е. коммерческие) программы, возникли в другую эпоху и руководствуются совершенно другим набором приоритетов. Упор делается на завоевание или поддержание доли рынка и максимизацию прибыли, и мало внимания уделяется приоритетам разработчиков UNIX. Вероятно, также играет роль совершенно другая модель разработки (например, централизованная в противовес распределенной разработке).

Конечно, в таких рыночных целях нет ничего плохого. Даже больше, они, в целом, полезны, поскольку именно они были причиной огромного экономического роста, который произошел во всем мире в начале последнего тысячелетия. Тем не менее, как быстро отметят экономисты, эти цели приносят максимальную пользу обществу только там, где существует свободная конкуренция (т. е. существует множество продавцов и покупателей, конкурирующих на основе цены и качества), а не там, где рынки (в силу самых разных обстоятельств) становятся монополистическими (т. е. характеризуются только одним поставщиком или продавцом продукта без хороших альтернатив).

За пределами проприетарного UNIX

Большой успех UNIX и его философии оказал влияние далеко за пределы оригинальной операционной системы, которая была разработана в Bell Labs, а затем в Калифорнийском университете в Беркли (UCB). Возможно, наиболее важно то, что они формируют основу Linux, которая в настоящее время является самой быстрорастущей операционной системой и которая, по мнению многих компьютерных экспертов, может стать доминирующей системой для многих приложений в будущем.

Linux удалось вернуть преимущества философии Unix на первый план и в целом вернуть Unix-подобные операционные системы на их прежнюю лидирующую роль, в основном за счет использования лицензий свободного программного обеспечения. Также основополагающим фактором его успеха, а также растущего успеха других свободных программ стала доступность интернета, позволяющая программистам по всему миру сотрудничать. Это во многом помогло уравнять правила игры и позволить бесплатным программам эффективно конкурировать с проприетарных программами (и, возможно, даже поставить под угрозу модель разработки проприетарных программ), несмотря на огромные финансовые ресурсы последних.

Фактически, использование лицензирования свободного программного обеспечения вместе с возможностью для программистов (а также тестировщиков и обычных пользователей) участвовать в процессе разработки независимо от географического положения или членства в организации еще больше расширило базовую концепцию философии Unix (т. е. модульность) и привело к значительному увеличению преимуществ. Это то, что можно назвать философией Linux.

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

(1) Помимо FreeBSD, NetBSD и OpenBSD, сюда также входит Darwin, на котором базируется достаточно успешная Mac OS X.

(2) Unix-подобные операционные системы обычно считаются наиболее безопасными и надежными (т. е. наиболее устойчивый к сбоям в необычных или стрессовых обстоятельствах), наиболее портативными (т. е. наиболее простыми в адаптации для использования на других типах оборудования) и наиболее кастомизируемыми.

(3) Дуг Макилрой, изобретатель пайпов Unix, резюмировал философию в книге Питера Х. Салуса «Четверть века Unix» в 1994 году следующим образом: «Пишите программы, которые делают одно и делают это хорошо. Пишите программы для совместной работы. Пишите программы для обработки текстовых потоков, потому что это универсальный интерфейс «. Обычно это сильно сокращается до «Делай одно, делай это хорошо». Из трех частей только третья относится к Unix-подобным операционным системам.

(4) Эта философия была хорошо выражена Майком Ганкарцем в его книге 1995 года «Философия UNIX» как набор основных и второстепенных принципов. К первым относятся: маленький — красивый, заставьте каждую программу делать что-то хорошо, как можно скорее создавайте прототип, выберите портативность, а не эффективность, храните числовые данные в неструктурированных файлах, используйте программные средства себе на пользу, используйте shell-скрипты для увеличения мощи и портативности, избегайте скрытых пользовательских интерфейсов и сделайте каждую программу фильтром. К последним относятся: позвольте пользователю настраивать среду, делайте ядра операционных систем маленькими и легкими, используйте строчные буквы и будьте лаконичны, берегите деревья, тишина — это золото, думайте параллельно, сумма частей больше целого, хуже — лучше, и мыслите иерархически.

Материал подготовлен в рамках курса «Программист С». Если вам интересно узнать подробнее о формате обучения и программе, познакомиться с преподавателем курса — приглашаем на день открытых дверей онлайн. Регистрация здесь.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *