История UNIX-систем.

Если вы недавно начали изучать Linux и осваиваться в этой огромной вселенной, то наверное, часто встречали термин Unix. Звучит очень похоже на Linux, но что же оно значит? Наверное, вам интересно чем отличается unix от linux. Ответ на этот вопрос зависит от того что вы понимаете под этими словами. Ведь каждое из них может интерпретироваться по-разному. В этой статье мы рассмотрим упрощенную историю Linux и Unix чтобы помочь вам понять что это и как они между собой связаны. Как всегда вы можете задавать вопросы или добавить дополнительную информацию в комментариях.

Свою историю Unix начал в конце 1960-х и в начале 1970-х в научно-исследовательских вычислительных лабораториях AT&T Bell Labs в Соединенных штатах. Вместе с MIT и General Electric исследовательская лаборатория Bell Labs начала разработку новой операционной системы. Некоторые исследователи были недовольны ходом разработки этой операционной системы. Они отошли от работы над основным проектом и начали разрабатывать собственную ОС. В 1970 году эта система получила название Unix, а два года спустя она была полностью переписана на языке программирования Си.

Это позволило распространять и портировать Unix на различные устройства и вычислительные платформы.

Так как Unix продолжал развиваться, AT&T начал продавать лицензии на использование ее в университетах, а также в коммерческих целях. Это означало что не все могли, как сейчас, свободно изменять и распространять код операционной системы Unix. Вскоре начало появляться много редакций и вариантов операционной системы Unix, предназначенной для решения различных задач. Самой известной из них была BSD.

Linux похож на Unix по функциональности и возможностям, но не кодовой базой. Эта операционная система была собрана из двух проектов. Первый - проект GNU, разработанный Ричардом Столлманом в 1983, второй - ядро Linux, написанное Линусом Торвальдсом в 1991.

Целью проекта GNU было создать систему похожую на Unix, но не зависящую от него. Иными словами, операционную систему, не содержащую код Unix, которая могла бы свободно распространяться и модифицироваться без ограничений, как свободное программное обеспечение. Так как свободное ядро Linux не могло работать само по себе, проект GNU объединился с ядром Linux, и так родилась операционная система Linux.

Конструировался Linux под влиянием системы Minix, потомка Unix, но весь код был написан с нуля. В отличие от Unix, который использовался на серверах и больших мэйнфреймах различных предприятий, Linux был рассчитан для использования на домашнем компьютере с более простым аппаратным обеспечением.

На сегодняшний день Linux работает на огромном количестве платформ, большем чем любая другая ОС, это сервера, встраиваемые системы, микрокомпьютеры, модемы и даже мобильные телефоны. Теперь будет более подробно рассмотрена разница linux и unix.

Что такое Unix

Термин Unix может относиться к таким понятиям:

  • Оригинальная операционная система, разработанная в AT&T Bell Labs, на основе которой развиваются другие ОС.
  • Товарный знак, написано заглавными буквами. UNIX принадлежит The Open Group, которая разработала набор стандартов для операционных систем - Single UNIX Specification. Только те системы, которые соответствуют стандартам могут законно называться UNIX. Сертификация не бесплатная и требует от разработчиков платить за использование этого товарного знака.
  • Все операционные системы зарегистрированы с именем Unix. Потому что они соответствуют вышеупомянутым стандартам. Это AIX, A/UX, HP-UX, Inspur K-UX, Reliant UNIX, Solaris, IRIX, Tru64, UnixWare, z/OS и OS X - да, даже те что работают на компьютерах Apple.

Что такое Linux

Термин Linux относится только к ядру. Операционная система не будет полной без настольной среды и приложений. Поскольку большинство приложений были разработаны и сейчас разрабатываются в рамках проекта GNU, полное название операционной системы - GNU / Linux.

Сейчас множество людей используют термин Linux для обозначения всех, основанных на ядре Linux, дистрибутивов. На данный момент самая новая версия ядра Linux - 4.4, версия 4.5 находится на стадии разработки. Смена нумерации релизов ядра с 3.х на 4.х состоялась не так уж давно.

Linux - это Unix подобная операционная система, которая ведет себя как Unix, но не содержит его код. Unix подобные ОС часто называют Un*x, *NIX и *N?X, или даже Юниксоидами. У Linux нет сертификации Unix, а GNU расшифровывается как GNU not Unix, так что в этом отношении Mac OS X больше Unix чем Linux. Но тем не менее ядро Linux и ОС GNU Linux очень похожи на Unix по функциональности, реализуют большинство принципов философии Unix. Это удобочитаемый код, хранение конфигурации системы в отдельных текстовых файлах, а также использование небольших инструментов командной строки, графическая оболочка и менеджер сеансов.

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

Надеюсь, теперь стало более понятно, чем отличается unix от linux. Но пойдем еще дальше и подведем итоги.

Основные отличия

  • Linux - свободная операционная система с открытым исходным кодом, а оригинальная Unix - нет, кроме некоторых ее производных.
  • Linux - это клон оригинального Unix, но он не содержит его код.
  • Главное отличие unix от linux, в том что Linux - это только ядро, в то время как Unix была и есть полноценной операционной системой.
  • Linux был разработан для персональных компьютеров. А Unix ориентирован в первую очередь на крупные рабочие станции и сервера.
  • Сегодня Linux поддерживает больше платформ чем Unix.
  • Linux поддерживает больше типов файловых систем чем Unix.

Как видите, путаница обычно возникает из-за того, что linux vs unix могут означать совершенно разные вещи. Какое бы значение ни имелось в виду, факт остается фактом - Unix был первым, а Linux появился позже. Linux родился из стремления к свободе программного обеспечения и мобильности, вдохновленный подходом Unix. Можно смело сказать что мы все в долгу перед движением свободного программного обеспечения, потому что мир был бы намного хуже без него.

Введение

Что такое Unix?

Где взять бесплатный Unix?

Каковы основные отличия Unix от других OS?

Почему Unix?

Основные понятия Unix

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

Комадный интерпретатор

Руководства - man

Введение

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

Рождение ОС Unix относится к концу 60-х годов, и эта история уже обросла "легендами", которые подчас по-разному повествуют о деталях этого события. ОС Unix родилась в исследовательском центре Bell Telephone Laboratories (Bell Labs), входящем в состав корпорации AT&T. Изначально этот инициативный проект для ЭВМ PDP-7 (впоследствии - для PDP-11) представлял собой то ли с файловую систему, то ли компьютерную игру, то ли систему подготовки текстов, то ли и то, и другое, и третье. Важно, однако, то, что с самого начала проект, превратившийся в итоге в ОС, задумывался как программная среда коллективного пользования. Автором первой версии Unix является Кен Томпсон, однако в обсуждении проекта, а впоследствии - и в его реализации принимал участие большой коллектив сотрудников (Д. Ритчи, Б. Керниган, Р. Пайк и другие). На наш взгляд, несколько счастливых обстоятельств рождения Unix определили удачу этой системы на много лет вперед.

Для большинства сотрудников того коллектива, в котором родилась ОС Unix, эта ОС была "третьей системой". Существует мнение (см., например ), что системный программист достигает высокой квалификации только при выполнении третьего своего проекта: первый проект получается еще "ученическим", во второй разработчик пытается включить все, что не получилось в первом, и в итоге он получается слишком громоздким, и только в третьем достигается необходимый баланс желаний и возможностей. Известно, что до рождения Unix коллектив Bell Labs участвовал (совместно с рядом других фирм) в разработке ОС MULTICS. Конечный продукт MULTICS (Bell Labs не принимала участия в последних стадиях разработки) носит все признаки "второй системы" и не получил широкого распространения. Следует, однако, заметить, что в этом проекте были рождены многие принципиально важные идеи и решения, и некоторые концепции, которые многие считают рожденными в Unix, на самом деле имеет своим источником проект MULTICS.

ОС Unix была системой, которая делалась "для себя и для своих друзей". Перед Unix не ставилась задача захвата рынка и конкуренции с какими-либо продуктами. Сами разработчики ОС Unix были и ее пользователями, и сами оценивали соответствие системы своим нуждам. Без давления рыночной конъюнктуры такая оценка могла быть предельно объективной.

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

В 1972-73 гг. Кен Томпсон и Деннис Ритчи написали новую версию Unix. Специально для этой цели Д. Ритчи создал язык программирования C, представлять который теперь уже нет необходимости. Более 90% программного кода Unix написано на этом языке, и язык стал неотъемлемой частью ОС. То, что основная часть ОС написана на языке высокого уровня, обеспечивает возможность ее перекомпиляции в коды любой аппаратной платформы и является обстоятельством, определившим широкое распространение Unix.

В период создания Unix антимонопольное законодательство США не давало корпорации AT&T возможности выходить на рынок программных продуктов. Поэтому ОС Unix была некоммерческой и свободно распространялась, прежде всего - в университетах. Там ее развитие продолжалось, и наиболее активно оно велось в Калифорнийском университете в г. Беркли. При этом университете была создана группа Berkeley Software Distribution, которая занималась развитием отдельной ветви ОС - BSD Unix. На протяжении всей последующей истории основная ветвь Unix и BSD Unix развивались параллельно, неоднократно взаимно обогащая друг друга.

По мере распространения ОС Unix стал все более возрастать интерес к ней коммерческих фирм, которые стали выпускать собственные коммерческие версии этой ОС. Со временем стала коммерческой и "основная" ветвь Unix от AT&T, для ее продвижения была создана дочерняя фирма Unix System Laboratory. Ветвь BSD Unix в свою очередь разветвилась на коммерческую BSD и Free BSD . Различные коммерческие и свободно распространяемые Unix-подобные системы строились на базе ядра AT&T Unix, однако в них включались и свойства, заимствуемые из BSD Unix, а также и оригинальные свойства. Несмотря на общий источник, различия между членами семейства Unix накапливались и в итоге привели к тому, что перенос приложений из одной Unix-подобной ОС в другую стал чрезвычайно затруднен. По инициативе пользователей Unix возникло движение за стандартизацию API Unix. Это движение было поддержано Международной организацией стандартов ISO и привело к возникновению стандарта POSIX (Portable Operation System Interface eXecution), который развивается и в настоящее время и является самым авторитетным стандартом для ОС. Однако, оформление спецификаций POSIX как официального стандарта - процесс довольно медленный, и он не может удовлетворять потребностей производителей программного обеспечения, что привело к возникновению альтернативных промышленных стандартов.

С переходом AT&T Unix к компании Nowell название этой ОС изменилось на Unixware, а права на торговую марку Unix перешли к консорциуму X/Open. Этот консорциум (в настоящее время - Open Group) разработал свои (более широкие, чем POSIX) спецификации системы, известные как Single Unix Specification. Недавно вышла вторая редакция этого стандарта, значительно лучше согласованная с POSIX.

Наконец, ряд фирм - производителей собственных версий Unix образовал консорциума Open Software Foundation (OSF), который выпустил собственную версию Unix - OSF/1, сделанную на базе микроядра Mach. OSF также выпустил спецификации системы OSF/1, на основе которой фирмы-члены OSF стали выпускать собственные Unix-системы. Среди таких систем: SunOS фирмы Sun Microsystems, AIX фирмы IBM, HP/UX фирмы Hewlett-Packard, DIGITAL UNIX фирмы Compaq и другие.

Поначалу Unix-системы этих фирм в большей степени базировались на BSD Unix, но сейчас большая часть современных промышленных Unix-систем строятся на базе использовании (по лицензии) ядра AT&T Unix System V Release 4 (S5R4), хотя наследуют и некоторые свойства BSD Unix. Мы не берем на себя ответственность сравнивать коммерческие Unix-системы, так как периодически появляющиеся в печати сравнения такого рода зачастую представляют совершенно противоположные результаты.

Компания Nowell продала Unix компании Santa Crouse Operations, которая выпускала собственный Unix-продукт - SCO Open Server. SCO Open Server базировался на более ранней версии ядра (System V Release 3), но был великолепно отлажен и отличался высокой стабильностью. Фирма Santa Crouse Operations интегрировала свой продукт с AT&T Unix и выпустила Open Unix 8 , однако затем продала Unix фирме Caldera, которая и является владельцем "классической" ОС Unix сегодня (в конце 2001 г).

Фирма Sun Microsystems начала свое представительство в мире Unix системой SunOS, созданной на основе ядра BSD. Однако впоследствии заменила ее системой Solaris на основе S5R4 . В настоящее время распространяется версия 8 этой ОС (существует также v.9-бета). Solaris работает на платформе SPARC (RISC-процессоры, изготовляемые по спецификациям Sun) и Intel-Pentium.

Фирма Hewlett-Packard предлагает ОС HP-UX. v.11 на платформе PA-RISC . HP-UX базируется на S5R4, но содержит много свойств, "выдающих" ее происхождение от BSD Unix. Конечно же, HP-UX будет доступна и на платформе Intel-Itanium.

Фирма IBM выступает с ОС AIX, последняя на сегодняшний день версия - 5L (о ней еще пойдет речь впереди) . IBM не объявляла "родословную" AIX, это в основном оригинальная разработка, но первые версии носили признаки происхождения от FreeBSD Unix. Сейчас, однако, AIX больше похожа на S5R4. Первоначально ОС AIX была доступна и на платформе Intel-Pentium, но впоследствии (в соответствии с общей политикой IBM) перестала поддерживаться на этой платформе. В настоящее время AIX работает на серверах IBM RS/6000 и в других вычислительных платформах на базе процессоров PowerPC (в том числе и на суперкомпьютерах IBM).

ОС DIGITAL UNIX фирмы DEC была единственной промышленной реализаций системы OSF/1. ОС DIGITAL UNIX работала на RISC-серверах Alpha фирмы DEC. Когда в 1998 г. фирма DEC была поглощена фирмой Compaq, в фирму Compaq перешли и серверы Alpha, и DIGITAL UNIX. Фирма Compaq имеет намерение восстановить присутствие на рынке серверов Alpha и в связи с этим интенсивно развивает и ОС для них. Нынешнее название этой ОС - Tru64 Unix (текущая версия - 5.1A), она продолжает базироваться на ядре OSF/1 и несет в себе много признаков BSD Unix .

Несмотря на то, что большинство коммерческих Unix-систем базируется на одном ядре и удовлетворяет требованиям POSIX, каждая из них имеет собственный диалект API, и различия между диалектами накапливаются. Это приводит к тому, что перенос промышленных приложений с одной Unix-системы на другую затрудняется и требует, как минимум, перекомпиляции, а часто - и корректировки исходного кода. Попытка преодолеть "разброд" и сделать единую для всех ОС Unix была предпринята в 1998 г. альянсом фирм SCO, IBM и Sequent. Эти фирмы объединились в проекте Monterey с целью создания единой ОС на базе Unixware, владельцем которой в то время была SCO, IBM AIX и ОС DYNIX фирмы Sequent. (Фирма Sequent занимает лидирующие позиции в производстве ЭВМ архитектуры NUMA - несимметричной многопроцессорной - и DYNIX - это Unix для таких ЭВМ). ОС Monterey должна была работать на 32-разрядной платформе Intel-Pentium, 64-разрядной платформе PowerPC и на новой 64-разрядной платформе Intel-Itanium. О поддержке проекта заявили почти все лидеры производства аппаратных средств и промежуточного программного обеспечения. Даже фирмы, имеющие собственные клоны Unix (кроме Sun Microsystems), объявили, что на платформах Intel они будут поддерживать только Monterey. Работа над проектом продвигалась, по-видимому, успешно. ОС Monterey была в числе первых, доказавших свою работоспособность на Intel-Itanium (наряду с Windows NT и Linux) и единственной, которая при этом не прибегала к эмуляции 32-разрядной архитектуры Intel-Pentium. Однако в финальной стадии проекта произошло фатальное событие: SCO продала свое Unix-отделение. Еще раньше фирма Sequent вошла в состав IBM. "Наследником" всех свойств ОС Monterey стала ОС IBM AIX v.5L. Однако, не совсем всех. Платформа Intel-Pentium не является для IBM стратегическим направлением, и на этой платформе ОС AIX недоступна. А поскольку другие лидеры компьютерной индустрии не разделяют (или не вполне разделяют) такую позицию IBM, идея общей ОС Unix так и не реализовалась.

Операционная система UNIX

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

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

Код системы написан на языке высокого уровня СИ, что сделало ее простой для понимания, изменений и переноса на другие аппаратные платформы.

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

UNIX располагает простым, но мощным набором стандартных пользовательских интерфейсов.

Унифицированный интерфейс файловой системы UNIX реализует доступ не только к данным, хранящимся на дисках, но и к терминалам, принтерам, магнитным лентам, компакт-дискам, сети и даже к памяти.

Для системы UNIX разработано большое число различных приложений - от простейших текстовых редакторов до мощных систем управления базами данных.

В общем виде операционная система UNIX может быть представлена двухуровневой моделью, как это изображено на рис. 8.1
.

В центре находится ядро системы (kernel) . Ядро непосредственно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы от особенностей ее архитектуры. Ядро включает в себя программы, реализующие набор услуг, предоставляемых прикладным программам. К услугам ядра относятся операции ввода/вывода, создания и управления процессами, синхронизация процессов и т.д. Следующий уровень модели - системные услуги, обеспечивающие пользовательский интерфейс ОС UNIX. Схема взаимодействия с ядром и приложений, и системных задач одинакова.

Функции операционной системы UNIX

Операционная система UNIX взаимодействует с аппаратными и программными ресурсами компьютера, выполняя следующие функции :

    управление оборудованием;

    управление ресурсами;

    мониторинг системы;

Управление оборудованием

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

Управление ресурсами

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

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

Поддержка интерфейсов пользователя

Это средство обеспечения интерактивного (обеспечивающего диалог) взаимодействия пользователей с вычислительной системой.

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

Командная строка обычно удобна для пользователей, знакомых с функциями и командами системы. При работе с таким типом интерфейса пользователь на «приглашение» (по умолчанию для пользователя это знак доллара) вводит каждую команду с клавиатуры. Этот интерфейс не обеспечивает «обзора» системы, однако позволяет выполнить любую команду системы. Программы, обеспечивающие такой интерфейс, называются командными оболочками (shell). Командных оболочек существует очень много: Bourne shell (sh), Bourne Again Shell (bash), Korn shell (ksh), C shell (csh), Debian Almquist shell (dash), Zsh и т.д. Наиболее распространенной является bash.

Обычно используется новичками или пользователями, которым необходимо произвести некоторые установки в операционной системе. Часто такой интерфейс осуществляет функцию гида: он позволяет пользователю выбрать некоторую функцию из списка (меню), которая будет выполняться системой. Обычно меню организуется в виде многоуровневого текста, предлагая пользователю несколько возможностей выбора. Примером такого интерфейса может служить программа sysadm, помогающая системному администратору выполнять работы по конфигурированию и настройке системы.

Графический пользовательский интерфейс ориентирован как на новичков, так и на квалифицированных пользователей. Он обеспечивает несколько путей взаимодействия с компьютером: обзор объектов системы, изображаемых пиктограммами, выполнение команд путем выбора графического изображения (пиктограммы) на экране дисплея с помощью «мыши» или устройства tracking ball. ОС UNIX обеспечивает X.desktop как графический пользовательский интерфейс для работы со специальными X-терминалами или систему X Window для работы с обычными графическими терминалами.

Обеспечение удаленного доступа в компьютерной сети

ОС UNIX обеспечивает доступ пользователей к ресурсам других компьютеров, работающих в вычислительной сети. В составе операционной системы имеется набор сетевых приложений, позволяющих устанавливать связь с удаленным компьютером, регистрироваться в удаленной системе, передавать данные между компьютерами сети, пользоваться электронной почтой. UNIX поддерживает сетевую файловую систему NFS (Network File System), позволяющую пользоваться командами операционной системы для доступа к файловой системе удаленного компьютера.

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

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

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

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

Как было отмечено выше, в составе ОС UNIX обычно используется несколько оболочек.

Оболочки с ограничениями (restricted shell - rsh и ksh - подмножества Bourne shell и Korn shell) разработаны для пользователей, которым необходимо ограничить доступ к системе.

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

Взаимодействие прикладных задач с ядром происходит посредством стандартного интерфейса системных вызовов. Интерфейс системных вызовов определяет формат запросов на базовые услуги. Процесс запрашивает базовую функцию ядра посредством системного вызова определенной процедуры ядра. Ядро выполняет запрос и возвращает процессу необходимые данные.

Ядро состоит из трех основных подсистем :

    1) подсистема управления процессами и памятью;

    2) файловая подсистема;

    3) подсистема ввода/вывода.

Выполняет следующие функции :

    создание и удаление процессов;

    распределение системных ресурсов между процессами;

    синхронизацию процессов;

    взаимодействие процессов.

Специальная функция ядра, выполняемая планировщиком процессов (scheduler ), разрешает конфликты между процессами в конкурентной борьбе за системные ресурсы.

Обеспечивает распределение памяти между процессами. Если для всех процессов недостаточно памяти, ядро перемещает части процесса или несколько процессов (чаще пассивных, ожидающих каких-либо событий в системе) в специальную область диска (область «подкачки»), освобождая ресурсы для выполняющихся (активных) процессов.

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

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

Доступ к системе UNIX

Чтобы установить контакт с системой UNIX, вам необходимо иметь :

    терминал;

Получение регистрационного имени

Регистрационное имя - это имя, с помощью которого система UNIX проверяет, являетесь ли вы полномочным пользователем системы, во время запроса доступа к ней.

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

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

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

Связь с системой UNIX

Если ОС UNIX установлена на персональном компьютере, вы можете зарегистрироваться непосредственно на нем через текстовую виртуальную консоль. Но возможны и другие варианты доступа.

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

Для осуществления связи с системой необходимо включить терминал.

Если он напрямую связан с компьютером, то в верхнем левом углу немедленно появится подсказка :

Если в качестве терминала используется персональный компьютер, настроенный на работу в сети с помощью семейства протоколов TCP/IP, необходимо установить связь с компьютером, на котором установлена ОС UNIX. Это можно осуществлять несколькими способами, например с помощью сетевого приложения telnet, которое имеется в операционных системах Windows или с помощью средств доступа к Internet. Обратите внимание, что - это незащищенный протокол, который в настоящее время уже практически не применяется. Современной альтернативой является Secure Shell (SSH).

Пример.

В качестве терминала используется персональный компьютер с ОС Windows NT, сконфигурированной для работы в сети. Необходимо зарегистрироваться в UNIX-системе.

Требуемые исходные данные и действия:

    для установления связи с ОС UNIX необходимо знать сетевое имя удаленного компьютера или его IP-адрес (например, 192.168.2.19);

    найти в персональном компьютере приложение telnet и запустить его на исполнение;

    в открывшемся окне приложения выбрать пункт меню Подключение;

    ввести IP-адрес удаленной UNIX-системы (например, 192.168.2.19);

    установить по желанию характеристики терминала.

Процедура регистрации

Когда появится подсказка login: , введите регистрационное имя и нажмите клавишу . Например, если ваше регистрационное имя all30123 , то строка регистрации будет выглядеть следующим образом:

    login: all30123

Если вы сделаете ошибку при вводе вашего регистрационного имени, то можете исправить ее с помощью символа @ или клавиши .

Помните, что важен регистр вводимых символов. Имена all30123 и ALL30123 принадлежат двум разным пользователям.

Теперь система выдает вам подсказку для ввода пароля. Введите пароль и нажмите клавишу . Если при вводе вы сделаете ошибку, то можете исправить ее с помощью клавиши или символа @. Система UNIX не отображает ваш пароль на экране в целях безопасности.

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

Когда вы войдете в систему, то экран терминала будет выглядеть следующим образом:

    login: all30123

Если вы сделаете ошибку при входе в систему, UNIX выведет сообщение:

    login incorrect

Затем предоставит вам второй шанс войти в систему, выдав подсказку login:. Экран будет выглядеть следующим образом:

    login: all30123

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

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

Процедура входа в систему:

    Вы устанавливаете контакт; система UNIX отображает подсказку login:. Введите ваше регистрационное имя и нажмите клавишу .

    Система UNIX выводит подсказку password:. Введите ваш временный пароль и нажмите клавишу .

    Система сообщит, что ваш временный пароль больше не действителен, и предложит выбрать новый пароль.

    Система предложит ввести ваш старый пароль. Введите временный пароль.

    Система предложит ввести ваш новый пароль. Введите выбранный вами пароль.

Пароль должен соответствовать следующим требованиям :

    каждый пароль должен состоять, по крайней мере, из 6 символов;

    каждый пароль должен содержать, по крайней мере, 2 буквенных символа и одну цифру или специальный символ. Буквенный символ может быть набран в регистре либо больших символов либо малых;

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

    новый пароль должен отличаться от старого, по крайней мере, на три символа.

Примеры допустимых паролей:

Для проверки система просит вас заново ввести пароль. Введите пароль снова.

Если вы введете новый пароль второй раз не так, как в первый, то система сообщит, что пароли не совпадают, и предложит повторить процедуру регистрации снова. Когда пароли совпадут, система отобразит подсказку.

Следующий экран отображает описанную процедуру:

    login: dko30123

    password:

    Your password has expired

    Choose a new one

    Old password:

    New password:

    Re-enter new password:

Идентификация пользователя

Когда системный администратор регистрирует пользователя в системе, с регистрационным именем связываются два компонента идентификации: идентификатор пользователя (user ID - UID) и идентификатор группы , к которой он относится (group ID - GID).

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

В любой ОС UNIX имеется один специальный суперпользователь с идентификатором UID = 0, который обычно связан с именем root. Это означает, что пользователь имеет все системные привилегии.

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

Вся регистрационная информация о пользователях системы хранится в файле /etc/passwd.

В современных версиях ОС UNIX зашифрованные пароли и относящаяся к ним системная информация хранятся в файле /etc/shadow, структура и назначение полей которого представлены на рис. 8.2
.

Записи данных о каждой установленной группе содержатся в файле /etc/group, структура и назначение полей которого представлены на рис. 8.3 .

Структура и назначение полей файла /etc/passwd представлены на рис. 8.4
.

Соглашения по вводу

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

Таблица 8.1.
Соглашения о вводе

Ключ

Функция

Подсказка системной команды (предлагает вам ввести вашу команду)

или <^h>

Стереть символ

Остановить выполнение программы или команды

Удалить текущую командную строку

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

Означает конец строки ввода и помещает курсор на новую строку

Остановить ввод в систему или выйти из системы (завершить работу)

Возвратиться на один символ (для терминалов, у которых нет клавиши )

Временно остановить вывод на экран

Продолжить вывод на экран информации, которая была остановлена при помощи <^s>

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

Подсказка команды

Стандартным приглашением командной строки для пользователя в системе UNIX является знак доллара $. Для пользователя root - #. Когда приглашение появляется на экране вашего терминала, то это означает, что система UNIX ожидает инструкции от вас. Соответствующим ответом на подсказку с вашей стороны является выдача команды с последующим нажатием клавиши .

Исправление ошибок ввода

Существует несколько способов исправления ошибок ввода. Символ @ стирает текущую строку, а клавиши и <^h> стирают последний введенный символ. Эти клавиши и знаки являются значениями по умолчанию. Функции, которые они выполняют, могут быть переназначены другим клавишам.

Остановка выполнения команд

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

Появление на экране подсказки означает, что система UNIX распознала вас как полномочного пользователя и ждет от вас ввода команды.

В общем виде командная строка имеет следующую структуру:

    имя [опции] [аргументы]

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

В дальнейшем изложении функций команд предполагается:

Опции (параметры) :

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

    как правило, начинаются с символа «-» («минус»), который не отделяется пробелом от остальных символов;

    могут быть скомбинированы любым образом, при этом знак «минус» можно использовать только один раз.

Аргументы указывают объекты, которые должны обрабатываться командой, например:

    имя файла;

    номер процесса;

Если вы знаете, что должна сделать вызываемая программа, но не уверены в правильном использовании синтаксиса, можно в командной строке после имени команды указать опцию --help :

    $ cal --help

Для того чтобы иметь возможность получения подробной информации, в ОС UNIX имеется встроенное руководство (on-line), доступ к которому обеспечивают команды man и apropos .

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

    man имя_команды

apropos выводит список команд в соответствии с ключевым словом (шаблоном), указанным в качестве аргумента команды:

    apropos шаблон

Примеры.

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

    $ date

    Tues Sep 18 14:49:07 2000

Команда date выводит дату и время.

Если запустить команду who и нажать клавишу , то экран будет выглядеть следующим образом:

    $ who

    dko30024

    Oct18 8:30

    dko30001

    Oct18 8:34

    dko30020

    Oct18 8:32

    Oct18 8:00

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

Это означает, что вы успешно завершили работу с системой и она готова зарегистрировать нового пользователя.

Если вы регистрировались с удаленного терминала, произойдет разрыв связи, о чем вас уведомит, например, приложение telnet.

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

Основные выводы

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

    В общем виде операционная система UNIX может быть представлена двухуровневой моделью. В центре находится ядро системы (kernel). Ядро непосредственно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы от особенностей ее архитектуры. Ядро включает в себя программы, реализующие набор услуг, предоставляемых прикладным программам. К услугам ядра относятся операции ввода/вывода, создания и управления процессами, синхронизация процессов и т.д. Следующий уровень модели - системные услуги, обеспечивающие пользовательский интерфейс ОС UNIX. Схема взаимодействия с ядром и приложений, и системных задач одинакова.

    Операционная система UNIX взаимодействует с аппаратными и программными ресурсами компьютера, выполняя следующие функции:

    • управление оборудованием;

      управление ресурсами;

      поддержка интерфейсов пользователя;

      выполнение ввода и вывода информации;

      мониторинг системы;

      обеспечение удаленного доступа в компьютерной сети.

    UNIX-система содержит три главных компонента: систему команд, оболочки и ядро.

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

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

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

    Ядро состоит из трех основных подсистем:

    • подсистема управления процессами и памятью;

      файловая подсистема;

      подсистема ввода/вывода.

    Чтобы установить контакт с системой UNIX, вам необходимо иметь:

    • терминал;

      регистрационное имя, которое идентифицирует вас как полномочного пользователя;

      пароль, который проверяет вас на идентичность;

      инструкции для диалога и доступа к системе UNIX, если ваш терминал напрямую не связан с компьютером.

Контрольные вопросы

    Для решения каких задач предназначен класс операционных систем UNIX?

    Какие возможности должна предоставлять операционная система класса UNIX?

    Каковы задачи ядра ОС UNIX?

    Каковы функции ядра ОС UNIX?

    Каково назначение компонента операционной системы «Система команд»?

    Можно ли утверждать, что оболочка предоставляет пользователю интерактивный интерфейс взаимодействия с операционной системой?

    Каким образом выполняется идентификация пользователя в ОС UNIX?

История UNIX® начинается в 1969 г. Большинство современных UNIX-систем являются коммерческими версиями исходных дистрибутивов UNIX. Solaris от Sun, HP-UX Hewlett-Packard, AIX® от IBM являются лучшими представителями UNIX, которые, кроме того, имеют свои собственные уникальные элементы и свои собственные фундаментальные решения. Например, Sun Solaris - это UNIX, но, кроме того, она содержит много инструментов и расширений, разработанных специально в расчете на рабочие станции и серверы производства Sun.

Linux® был разработан в попытке создать бесплатную альтернативу коммерческим UNIX-средам. Его история начинается в 1991 или даже в 1983 гг., когда был создан проект GNU, чьей исходной целью было предоставить бесплатную альтернативу UNIX. Linux работает на гораздо большем количестве платформ, например на Intel®/AMD x86. Большинство ОС UNIX способны работать только на одной платформе.

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

Администратор или разработчик, который привык работать с Linux, система UNIX может показаться не очень удобной для использования. С другой стороны, фундамент UNIX-подобной операционной системы (инструменты, файловая система, интерфейсы API) достаточно стандартизирован. Однако некоторые детали систем могут иметь существенные различия. Далее в статье будут рассмотрены эти различия.

Технические различия

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

Разработка GNU/Linux, с другой стороны, не ориентирована на конкретные платформы и круг клиентов и разработчики GNU/Linux имеют различные опыт и взгляды. В Linux-сообществе не существует строгого стандартного набора инструментов или сред. Для решения этой проблемы был запущен проект Linux Standards Base (LSB), но он оказался не столь результативным, как хотелось бы.

Эта недостаточная стандартизованность приводит к значительным несогласованностям внутри Linux. Для некоторых разработчиков возможность использовать лучшие достижения других операционных систем является плюсом, однако не всегда удобно копирование в Linux элементов UNIX, например, когда имена устройств внутри Linux могут быть взяты из AIX, тогда как инструменты для работы с файловой системой ориентированы на HP-UX. Несовместимости такого рода встречаются также между различными дистрибутивами Linux. Например, Gentoo и RedHat реализуют различные методы обновлений.

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

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

Архитектура аппаратного обеспечения

Большинство коммерческих версий UNIX созданы для одного или небольшого количества архитектур аппаратного обеспечения. HP-UX работает только на платформах PA-RISC и Itanium, Solaris - на SPARC и x86, а AIX предназначен только для процессоров POWER.

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

Linux, с другой стороны, исторически разрабатывался для обеспечения максимальной совместимости. Linux доступен на различных архитектурах, а число устройств ввода/вывода и прочей периферии, которая может использоваться с этой ОС, почти безгранично. Разработчики не могут заранее знать, какое конкретное оборудование будет установлено в компьютере, и часто не могут обеспечить его эффективное использование. Одним из примеров является управление памятью на Linux. Ранее Linux использовал сегментную модель памяти, первоначально разработанную для x86. Сейчас он адаптирован для использования страничной памяти, но все еще сохраняет некоторые требования к сегментной памяти, что вызывает проблемы, если архитектура не поддерживает сегментированную память. Это не является проблемой для UNIX-производителей. Они точно знают, на каком оборудовании будет работать их UNIX.

Ядро

Ядро является сердцем операционной системы. Исходный код ядра коммерческих дистрибутивов UNIX является собственностью их разработчиков и не распространяется за пределы компании. Полностью противоположная ситуация с Linux. Процедуры для компиляции и исправления ядер и драйверов весьма различны. Для Linux и других операционных систем с открытым исходным кодом патч может быть выпущен в виде исходного кода, и конечный пользователь может установить, проверить и даже модифицировать его. Эти патчи обычно проверены не так тщательно как патчи от поставщиков коммерческих ОС UNIX. Поскольку нет полного списка приложений и сред, которые должны быть оттестированы для корректной работы на Linux, Linux-разработчики зависят от конечных пользователей и других разработчиков, которые будут отлавливать ошибки.

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

Все коммерческие версии UNIX в некоторой степени эволюционировали до модульного ядра. Драйверы и отдельные особенности ОС доступны как отдельные компоненты и могут быть по необходимости загружены или выгружены из ядра. Но открытая модульная архитектура Linux гораздо гибче. Однако гибкость и адаптируемость Linux означают и постоянное изменение. Исходный код Linux постоянно меняется, и, по прихоти разработчика, может поменяться API. Когда модуль или драйвер написан для коммерческой версии UNIX, он проработает гораздо дольше, чем тот же драйвер для Linux.

Поддержка файловой системы

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

Таблица 1. Файловые системы, которые являются стандартными для UNIX

Большинство коммерческих версий UNIX поддерживают журналируемые файловые системы. Например, HP-UX в качестве стандартной файловой системы использует hfs, но он также поддерживает журналируемую файловую систему vxfs. Solaris поддерживает ufs и zfs. Журналируемая файловая система является важным компонентом любой серверной среды для предприятия. В Linux поддержка журналируемых файловых систем была реализована поздно, но теперь есть несколько вариантов – от клонов коммерческих файловых систем (xfs, jfs) до специфических для Linux файловых систем (ext3, reiserfs).

Другие особенности файловых систем включают в себя поддержку квот, список контроля доступа к файлам, зеркальное копирование, снимки системы и изменение размеров. В той или иной форме они поддерживаются файловыми системами Linux. Большинство из этих особенностей не являются стандартными для Linux. Одни особенности могут работать на одной файловой системе, тогда как другие потребуют другой файловой системы. Некоторые из этих особенностей просто недоступны на определенных файловых системах Linux, а другие требуют дополнительной установки инструментов, например, определенной версии LVM или поддержку дисковых массивов (software raid package). Исторически так сложилось, что в Linux совместимость программных интерфейсов и стандартных инструментов достигается с трудом, поэтому множество файловых систем реализуют эти особенности поразному.

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

Доступность приложений

Большинство базовых приложений одинаковы как на UNIX, так и на Linux. Например, команды cp , ls , vi и cc доступны на UNIX и Linux, и очень похожи, если не полностью идентичны. Linux-версии этих инструментов основаны на GNU-версиях этих инструментов, тогда как версии этих инструментов для UNIX основаны на традиционных UNIX-инструментах. Эти инструменты для UNIX имеют длительную историю и редко менялись.

Но это вовсе не означает, что коммерческие версии UNIX не могут использоваться с GNU-инструментами. Фактически много производителей коммерческих UNIX ОС включают в свои дистрибутивы много GNU-инструментов или предлагают их как бесплатное дополнение. GNU-инструменты не просто стандартные инструментальные средства. Некоторые из таких бесплатных утилит не имеют коммерческих аналогов (emacs или Perl). Большинство производителей предустанавливают эти программы, и они либо автоматически устанавливаются вместе с системой, или доступны в качестве дополнительного компонента.

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

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

С другой стороны, коммерческие версии UNIX исторически имеют поддержку большого количества приложений уровня предприятия, например, Oracle или SAP. Linux сильно проигрывает из-за трудности сертификации больших приложений, тогда как коммерческие версии UNIX не меняются сильно от релиза к релизу. Linux может сильно измениться не только с каждым новым дистрибутивом, но иногда и в промежутке между релизами одного и того же дистрибутива. Поэтому производителю программного обеспечения очень трудно понять, в какой именно среде будет использоваться их приложение.

Системное администрирование

Хотя некоторые дистрибутивы Linux поставляются со стандартным набором инструментов для управления системой, например, SUSE"s YaST, не существует общего для Linux стандарта инструментальных средств системного администрирования. Доступны текстовые файлы и инструменты командной строки, но иногда их применение может быть неудобным. Каждая коммерческая версия UNIX имеет свой собственный интерфейс управления системой. С помощью этого интерфейса можно управлять элементами системы и изменять их. Ниже приведен пример Менеджера системного администрирования для HP-UX.

Данный SAM содержит следующие модули:

  • Пользователи или группы, которыми надо управлять.
  • Параметры ядра, которые можно изменить.
  • Настройка сети.
  • Настройка и инициализация дисков.
  • Конфигурирование X server.

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

Еще один аспект в UNIX и Linux, который, кажется, меняется почти с каждой версией ОС – расположение сценариев инициализации системы. К счастью, /sbin/init и /etc/inittab являются стандартными каталогами. Но сценарии запуска системы находятся в различных каталогах. показывает места, где хранятся сценарии инициализации системы для различных дистрибутивов UNIX и Linux.

Таблица 2. Расположение сценариев инициализации системы для различных версий UNIX
HP-UX /sbin/init.d
AIX /etc/rc.d/init.d
Irix /etc/init.d
Solaris /etc/init.d
Redhat /etc/rc.d/init.d
SUSE /etc/rc.d/init.d
Debian /etc/init.d
Slackware /etc/rc.d

Из-за большого количества дистрибутивов Linux и почти бесконечного числа доступных приложений (с учетом того, что версий этого приложения тоже много) для этой ОС, управление программами на Linux становится сложной задачей. Выбор правильного инструмента зависит от того, с каким дистрибутивом вы работаете. Далее неудобства проистекают из того, что некоторые дистрибутивы используют формат файлов Redhat Package Manager (RPM), в то время как их программы несовместимы. Такое разделение приводит к появлению огромного количества опций работы с пакетами, и не всегда понятно, какая система используется в конкретной среде.

С другой стороны, коммерческие дистрибутивы UNIX содержат стандартные менеджеры пакетов. Даже при том что существуют различные версии приложений и специфичные форматы для различных версий UNIX, среда управления приложениями неизменна. Например, Solaris использует одни и те же инструменты управления пакетами приложений с момента своего создания. И скорее всего средства идентификации, добавления или удаления пакетов программ в Solaris будут все также неизменными.

Производители коммерческих дистрибутивов UNIX поставляют также и аппаратное обеспечение, для работы на котором предназначена их ОС, поэтому в своих ОС они могут внедрять какие-либо новые устройства, что гораздо труднее сделать для Linux. Например, в последних версиях Linux были попытки реализовать поддержку компонентов с возможностью их "горячей замены" (с переменным успехом). Коммерческие версии UNIX обладают такой возможностью уже много лет. Также в коммерческих версиях UNIX лучше, чем в Linux, реализован мониторинг за аппаратным обеспечением. Производители могут написать драйверы и внедрить их в свою операционную систему, которая будет вести мониторинг состояния системы, например, число ошибок памяти ECC, параметры энергопотребления или любого другого компонента аппаратного обеспечения. Поддержка такого рода для Linux ожидается только в отдаленном будущем.

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

Поддержка

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

При покупке коммерческой версии UNIX производители обычно предоставляют техническую поддержку. Большинство пользователей Linux лишено поддержки компании-производителя ОС. Они могут получить поддержку только с помощью электронной почты, из форумов и от различных сообществ пользователей Linux. Однако эти группы предназначены не только для пользователей Linux. Многие администраторы коммерческих операционных систем семейства UNIX участвуют в этих открытых группах поддержки для того чтобы иметь возможность как оказывать помощь, так и, при необходимости, пользоваться ею. Много людей находят такие группы взаимопомощи даже более полезными, чем система поддержки, предлагаемая изготовителем ОС.

Заключение

Фундаментальные основы UNIX и Linux очень схожи. Пользователю или системному администратору переход с Linux на UNIX добавит в работу некоторые неудобства, но в целом переход окажется безболезненным. Даже если файловые системы и ядра у них будут отличаться и для их освоения потребуется некоторое время, инструменты и API остаются неизменными. В основном эти различия существенны не более чем различия между основными версиями UNIX. Все ветви UNIX и Linux постепенно развиваются и будут незначительно отличаться друг от друга, но из-за зрелости концепций UNIX основы ОС не изменятся очень сильно.

Краткие сведения о развитии ОС UNIX

ОС UNIX появилась в конце 60-х годов, как операционная система для мини-ЭВМ PDP-7. Активное участие в разработке приняли Кеннет Томсон и Деннис Ритчи.

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

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

С 1974 года ОС UNIX распространяется в университетах США в исходных кодах.

Версии UNIX

С самого начала распространения UNIX в американских университетах начали появляться различные версии ОС.

Для упорядочивания фирма AT&T в 1982 объединила несколько версий в одну назвала вариант ОС – System III. В 1983 году была выпущена коммерческая версия – System V. В 1993 году AT&T продала свои права на UNIX фирме Novell, которая далее консорциуму X/Open и Santa Cruz Operation (SCO).

Другая линия ОС UNIX – BSD разрабатывается в Калифорнийском университете (Беркли). Существуют бесплатные версии FreeBSD, OpenBSD.

К семейству OSF/1 – Open Software Foundation – относятся ОС консорциума IBM, DEC и Hewlett Packard. К числу ОС данного семейства относятся – HP-UX, AIX, Digital UNIX.

Бесплатные версии ОС семейства UNIX

Существует большое количество бесплатных версий UNIX.

FreeBSD, NetBSD, OpenBSD – варианты, разрабатываемые на основе ОС BSD.

Наиболее популярное семейство бесплатных UNIX-систем – это системы семейства Linux . Первый вариант Linux был разработан Линусом Торвальдсом в 1991 г. В настоящее время существует несколько вариантов Linux: Red Hat, Mandrake, Slackware, SuSE, Debian.

Общие черты UNIX-систем

Различные варианты UNIX обладают рядом общих черт:

Мультипрограммная обработка в режиме разделения времени, основанная на вытесняющей многозадачности;

Поддержка многопользовательского режима;

Использование механизмов виртуальной памяти и свопинга;

Иерархическая файловая система;

Унификация операций ввода/вывода на основе расширенного использования понятия файл;

Переносимость системы;

Наличие сетевых средств взаимодействия.

Достоинства UNIX-систем

К числу достоинств ОС семейства UNIX относят:



Переносимость;

Эффективная реализация многозадачности;

Открытость;

Наличие и строгое соблюдение стандартов;

Единая файловая система;

Мощный командный язык;

Наличие значительного числа программных продуктов;

Реализация стека протокола TCP/IP;

Возможность работы в роли сервера или рабочей станции.

Серверы на основе UNIX

Сервер – компьютер, обрабатывающий запросы других компьютеров в сети и предоставляющий собственные ресурсы для хранения, обработки и передачи данных. Сервер под управлением UNIX может выполнять следующие роли:

Файловый сервер;

Web-сервер;

Почтовый сервер;

Сервер дистанционной регистрации (аутентификации);

Вспомогательные серверы Web-служб (DNS, DHCP);

Сервер доступа к сетям Интернет

Управление компьютером под управлением UNIX

При работе с UNIX-системой в режиме сервера, как правило, используется режим удаленного доступа с помощью некоторой терминальной программы.

Сеанс работы начинается с ввода регистрационного имени и пароля доступа

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

Общий вид команды:

  1. -bash-2.05b$ команда [опции] [параметры]

Например, вызов справки по ОС имеет вид:

  1. -bash-2.05b$ man [ключи] [тема]
  2. Для вызова справки по использованию команды man введите
  3. -bash-2.05b$ man man

Интерпретация командной строки

При вводе команд используются следующие соглашения:

Первое слово в командной строке является именем команды;

Остальные слова – аргументы.

Среди аргументов выделяются ключи (опции) – предопределенные для каждой команды слова (символы), начинающиеся с одной (краткий формат) или пары дефисов (длинный формат). Например:

Bash-2.05b$ tar –c –f arch.tar *.c

Bash-2.05b$ tar - -create - -file=arch.tar *.c

При задании опций они могут объединятся. Например следующие команды равноправны:

Bash-2.05b$ ls –a –l

Bash-2.05b$ ls –l –a

Bash-2.05b$ ls –al

Другие аргументы указывают на объекты, над которыми выполняются операции.

Переменные оболочки

При работе в системе существует способ передачи параметров в программы, кроме использования ключей командной оболочки, – использование переменных окружения. Для задания переменной окружения используется команда set. Формат команды:

Bash-2.05b$ set имя_переменной=значение

Удаление переменной окружения выполняется командой unset.

Для обращения к значению переменной используется обозначение $имя_переменной, например команда:

Bash-2.05b$ echo $PATH

Выведет значение переменной PATH.