Unix — живая легенда

7 май, 1998 - 15:36Андрей Большеченко

Пожалуй, всякий пользователь компьютера, которому приходилось выходить за рамки набора текстов в Microsoft Word и создания таблиц в Excel, хотя бы краем уха слышал о Unix — своего рода легенде среди операционных систем. При этом как и любую легенду, ее сопровождает масса домыслов и субъективных мнений, заметно превосходящих в количественном отношении достоверную информацию, что создает своеобразный ореол некоей таинственности, а следовательно, непонятности. А если вспомнить, насколько редко упоминается Unix в массовых изданиях, становится вполне объяснимым, почему это название вызывает своего рода мистический трепет. Поскольку кто же захочет связываться с чем-то «громоздким и непонятным», если «и так все работает», и кому нужны лишние хлопоты.

ДАВАЙТЕ ПОЗНАКОМИМСЯ

У автора до знакомства с Unix это название ассоциировалось с машинами размером со шкаф, заполняющими целые комнаты, грохотом неуклюжих печатных устройств и десятками черно-зеленых терминалов, на которых следовало набирать длинные команды, чтобы получить еще более замысловатые ответы. Однако в процессе знакомства с Unix открывались все новые и новые ее достоинства, а старые мифы рушились один за другим. Оказалось, что она работает и на персональных компьютерах, а использовать командную строку Unix ненамного сложнее (а иногда и гораздо проще), чем в DOS (кстати, DOS изначально была очень похожа на сильно упрощенную Unix). Кроме того, всевозможные оболочки, утилиты и прочие «маленькие радости», порой весьма облегчающие жизнь пользователя тех же DOS или MS Windows, имеются и здесь. Выяснилось, наконец, что красивые визуальные эффекты не являются чем-то труднодостижимым. Например, для тех пользователей, которые привыкли к Norton Commander (или его сводному брату — Volkov), для Unix есть программа Midnight Commander. Она обладает аналогичными Norton возможностями, а также большим количеством дополнительных свойств (например, связанных с особенностями файловой системы Unix), некоторые из которых просто и «не снились» DOS и Windows. Для задач, требующих полноценного графического интерфейса, здесь есть система X Window и большое количество графических оболочек. Так что в вопросе выбора рабочей среды у пользователя этой операционной системы и возможностей, и альтернатив достаточно. Тогда возникает естественный вопрос в чем же заключаются особенности Unix?

Unix — живая легенда

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

Для задач, которые в DOS или Windows требуют написания специальных программ на языках уровня С или Pascal, в Unix достаточно использовать командный интерпретатор и несколько системных утилит (если вы создавали ВАТ-файлы в DOS, то обнаружите, что в Unix этот подход гибче и позволяет сделать намного больше).

Однако это не значит, что собственно программирование здесь не в почете. Скорее, наоборот, Unix — своего рода рай для программистов. Под Unix существует огромное количество трансляторов (как компиляторов, так и интерпретаторов) со всевозможных языков программирования, отладчиков, отладочных библиотек и других инструментов. Следует отметить, что так как ОС Unix практически на 90% написана на языке С, то этот язык является здесь наиболее распространенным и, соответственно, для него предназначена большая часть инструментария и документации. Автору самому пришлось столкнуться с проблемой интеграции двух достаточно больших программных пакетов, один из которых был написан на C++, а другой на Fortran. Сначала исследовалась возможность стыковки интерфейсов этих двух языков. Однако вскоре была обнаружена программа конвертирования текстов Fortran в С, и пакеты удалось интегрировать намного теснее, чем предполагалось. Замечу только, что текст на Fortran длиной в 10000 строк был переведен в С и скомпилирован без единой правки за 15 минут.

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

Unix является многозадачной и многопользовательской системой. Права каждого пользователя четко определены (за исключением администратора, root — он всесилен). Наверное, именно это обусловило практически полное отсутствие вирусов в Unix. Если вы сконфигурировали систему и после этого работаете как обычный пользователь (без специальных привилегий), вирусу (или некорректной программе — что подчас намного опаснее) практически невозможно повредить жизненно важные файлы системы. Кстати, это позволяет почти безбоязненно запускать программы, в которых вы не совсем уверены. Все некорректные действия пресекаются (и регистрируются), а программа выгружается из памяти, и все ресурсы (т.е. оперативная память, устройства) возвращаются системе. Существует возможность назначать пользователям специальные привилегии, например, на удаление заданий из очереди принтера или на разделение папок в сети. Поддержка одновременной работы нескольких пользователей позволяет изменять определенные параметры системы с правами администратора без выгрузки всех задач: нужно просто зайти в систему вторым пользователем — администратором. Это может быть сделано в отдельном окне или в другой виртуальной консоли. Такую процедуру с помощью штатных средств невозможно осуществить даже в Windows NT — одной из главных конкурирующих систем для Unix на сегодняшний день. Вход в систему возможен также по сети: для удаленной работы в Unix в текстовом режиме необходима программа telnet, причем система, с которой вы регистрируетесь на Unix-станции, может работать под любой другой ОС. Автору приходилось настраивать сервер, на котором была установлена Linux, из комнаты с клиентскими машинами, которая была расположена четырьмя этажами ниже. Если бы потребовалось переходить между клиентами и сервером, то, наверное, пришлось бы заниматься этим до сих пор.

Еще одна немаловажная деталь: в Unix вы можете загружать, изменять параметры и даже выгружать!!) драйверы устройств без перезагрузки системы. Естественно, это вправе делать только привилегированный пользователь.

История Unix насчитывает почти 30 лет. За это время она усовершенствовалась и переняла многое из передовых информационных технологий (и наоборот — интересные идеи из Unix попали в другие ОС), именно поэтому она была и остается на протяжении этих лет одной из самых мощных и удобных ОС. И, несмотря на усилия производителей других ОС, «старушка» не собирается уступать.

ИСТОРИЯ UNIX

В 1969 г. в рамках научно-исследовательского проекта фирмы Bell Labs концерна AT&T была создана операционная система разделения времени — ОС Multics. Она предназначалась, в основном, для управления файловой системой, управления задачами и обслуживания большого количества пользователей. Хотя эта ОС не оправдала надежд и не смогла решить всех поставленных задач, два ведущих разработчика группы по созданию Multics, Кэн Томпсон и Деннис Ритчи, а также несколько энтузиастов не захотели оставить интересные идеи, которые должны были быть в ней реализованы. Томпсон и Ритчи предложили Bell Labs разработать текстовый процессор, и под этот проект были выделены деньги и компьютер — PDP-11 (те, кто давно работает с вычислительной техникой, наверное, помнят «наш» вариант этой машины — СМ-4). Для него и была создана первая ОС Unix. Проект текстового редактора был выполнен в срок, и Bell Labs стала первым пользователем этой операционной системы. Система оказалась очень удобной, и Bell Labs занялась ее доработкой и усовершенствованием.

В 1976 г. Bell Labs выпустила шестую версию этой системы — zV6, которая бесплатно распространялась в университетах. Седьмая стала первой версией для широкого распространения (в основном, в университетах и научно-исследовательских лабораториях), она вышла через три года и послужила основой для большинства последующих версий Unix. Университетам она предлагалась по цене $100, а всем остальным — за $21000. После выхода V7, которая кроме PDP-машин работала уже и на машинах VAX (тогда эта ОС уже была переписана на языке С, вследствие чего перенос на другие платформы упростился), для продвижения Unix как коммерческого продукта в AT&T была создана «Группа поддержки Unix», впоследствии преобразованная в Unix System Laboratories (USL).

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

После выдачи лицензий на V6 университетам появляются другие ветви ОС Unix. Наиболее удачным оказался вариант, разработанный Университетом Беркли. Он был выпущен в 1978 г. и назывался 3BSD Unix, вышедшая в 1983 г. версия 4.2BSD Unix, в которую вошли протоколы TCP/IP, стала стандартом де-факто Unix.

В начале 80-х годов большинство крупных поставщиков вычислительной техники, таких как DEC, Hewlett-Packard, IBM, Sun Microsystems начали выпускать версии Unix для своего аппаратного обеспечения. Внезапно обнаружилось изобилие стандартов Unix. Вместо того чтобы систематизировать существующие версии Unix, эти стандарты способствовали появлению на рынке все новых и новых версий ОС.

В настоящее время версии Unix по своей структуре разделяют на две ветви: АТТ и BSD по сходству ОС с версией концерна AT&T и вариантом Университета Беркли соответственно. В таблице приведены основные поставщики версий ОС Unix и платформы, на которых они работают.

Различные версии Unix не хотели работать друг с другом, их структуры значительно отличались, таким образом, привлекательность Unix в целом как открытой системы (на которую опубликованы спецификации, что позволяло другим производителям разрабатывать для нее программы и упрощало ее обслуживание) померкла. Естественно, что при таком разнообразии версий появилась необходимость в стандарте. В 1988 г. две фирмы, обладающие лучшими системами ветвей System V и BSD, — AT&T и Sun Microsystems сформировали Unix International.

Тогда же три других крупных поставщика Unix DEC, HP и IBM — образовали Организацию открытого программного обеспечения (Open Software Foundation — OSF). To было время «великого противостояния» производителей Unix, а проигрывали от этого, естественно, пользователи.

Лишь после появления конкурирующего продукта фирмы Microsoft — Windows NT все ведущие поставщики Unix объединились. В1993 г. Sun Microsystems, Unix System Labs, Hewlett-Packard, IBM, SCO и Univel объявили о создании Common Open Software Environment (COSE) — набора спецификаций, определяющих наиболее популярные стандарты де-факто. Основными стандартами стали сетевая архитектура Open Network Computing (ONC), графическая система X Window System и графический пользовательский интерфейс Motif (у Sun Microsystems к тому времени уже был разработанный ею достаточно популярный интерфейс OpenLook, однако Sun отказалась от него в пользу Motif). Сейчас на базе Motif разработана система Common Desktop Environment (CDE) — унифицированная графическая рабочая среда пользователя. Это упростило процесс написания программного обеспечения для Unix, перенос его в различные версии этой ОС, а также интеграцию систем, в которых присутствовало несколько версии Unix, и снова повысило ее популярность.

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