Песочница

Железный человек 19 марта 2011 в 23:16

Чем Linux отличается от UNIX, и что такое UNIX-подобная ОС?

UNIX
UNIX (не стоит путать с определением «UNIX-подобная операционная система») - семейство операционных систем (Mac OS X, GNU/Linux).
Первая система была разработана в 1969 в Bell Laboratories, бывшей американской корпорации.

Отличительные особенности UNIX:

  1. Простое конфигурирование системы путем использования простых, обычно текстовых, файлов.
  2. Широкое использование командной строки.
  3. Использование конвейеров.
В наше время UNIX используют в основном на серверах, и как систему для оборудования.
Нельзя не отметить огромную историческую важность UNIX систем. В настоящее время они признаны одними из самых исторически важных ОС. В ходе разработки UNIX систем был создан язык Си.

Варианты UNIX по годам

UNIX-подобная ОС
UNIX-подобная ОС (иногда используют сокращение *nix) - система, образованная под влиянием UNIX.

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

Консорциум The Open Group обладает торговой маркой «UNIX», но наиболее известен как сертифицирующий орган для торговой марки UNIX. Недавно на The Open Group был пролит свет в связи с публикацией спецификации «Single UNIX Specification», стандартов которым должна удовлетворять ОС чтобы гордо называться Unix.

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

Linux
Linux - общее название UNIX-пободных операционных систем, которые разработаны в рамках проекта GNU (проект по разработке СПО). Linux работает на огромном множестве архитектур процессора, начиная от ARM заканчивая Intel x86.

Наиболее известными и распространенными дистрибутивами являются Arch Linux, CentOS, Debian. Также существует много «отечественных», российских дистрибутивов - ALT Linux, ASPLinux и другие.

Возникает довольно много споров об именовании GNU/Linux.
Сторонники «open source» используют термин «Linux», а сторонники «free software» - «GNU/Linux». Я предпочитаю первый вариант. Иногда для удобства представления термина GNU/Linux используют написания «GNU+Linux», «GNU-Linux», «GNU Linux».

В отличие от коммерческих систем (MS Windows, Mac OS X) Linux не имеет географического центра разработки и определенной организации, которая владела бы системой. Сама система и программы для нее - результат работы огромных сообществ, тысяч проектов. Присоединиться к проекту или создать свой может каждый!

Вывод
Таким образом у нас поучилась цепочка: UNIX -> UNIX-подобная ОС -> Linux.

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

Теги: unix, linux, nix, линукс, юникс

Данная статья не подлежит комментированию, поскольку её автор ещё не является

UNIX зародился в лаборатории Bell Labs фирмы AT&T более 20 лет назад.

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

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

ОС UNIX имеет следующие основные характеристики:

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

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

Поддержка одновременной работы многих пользователей;

Поддержка асинхронных процессов;

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

Поддержка независимых от устройств операций ввода-вывода (через специальные файлы устройств);

Стандартный интерфейс для программ (программные каналы, IPC) и пользователей (командный интерпретатор, не входящий в ядро ОС);

Встроенные средства учета использования системы.

Архитектура ОС UNIX - многоуровневая. На нижнем уровне работает ядро операционной системы. Функции ядра (управление процессами, памятью, обработка прерываний и т.д.) доступны через интерфейс системных вызовов , образующих второй уровень. Системные вызовы обеспечивают программный интерфейс для доступа к процедурам ядра. На следующем уровне работают командные интерпретаторы , команды и утилиты системного администрирования, коммуникационные драйверы и протоколы , - все то, что обычно относят к системному программному обеспечению . Внешний уровень образуют прикладные программы пользователя, сетевые и другие коммуникационные службы, СУБД и утилиты.

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

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


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

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

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

В UNIX существует несколько типов файлов, различающихся по функциональному назначению:

Обычный файл - наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. К этим файлам относятся текстовые файлы, двоичные данные и выполняемые программы.

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

Специальный файл устройства - Обеспечивает доступ к физическим устройствам. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства.

FIFO - именованный канал. Этот файл используется для связи между процессами по принципу очереди.

Сокет- позволяют представить в виде файла сетевое соединение.

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

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

Имеется много типов физических файловых систем, например FAT16 и NTFS, с разной структурой. Более того, имеется множество типов физических файловых систем UNIX (ufs , s5fs , ext2 , vxfs , jfs , ffs и т.д.).

Операционная система 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?

Песочница

new player 19 марта 2011 в 23:16

Чем Linux отличается от UNIX, и что такое UNIX-подобная ОС?

  • Чулан *
UNIX
UNIX (не стоит путать с определением «UNIX-подобная операционная система») - семейство операционных систем (Mac OS X, GNU/Linux).
Первая система была разработана в 1969 в Bell Laboratories, бывшей американской корпорации.

Отличительные особенности UNIX:

  1. Простое конфигурирование системы путем использования простых, обычно текстовых, файлов.
  2. Широкое использование командной строки.
  3. Использование конвейеров.
В наше время UNIX используют в основном на серверах, и как систему для оборудования.
Нельзя не отметить огромную историческую важность UNIX систем. В настоящее время они признаны одними из самых исторически важных ОС. В ходе разработки UNIX систем был создан язык Си.

Варианты UNIX по годам

UNIX-подобная ОС
UNIX-подобная ОС (иногда используют сокращение *nix) - система, образованная под влиянием UNIX.

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

Консорциум The Open Group обладает торговой маркой «UNIX», но наиболее известен как сертифицирующий орган для торговой марки UNIX. Недавно на The Open Group был пролит свет в связи с публикацией спецификации «Single UNIX Specification», стандартов которым должна удовлетворять ОС чтобы гордо называться Unix.

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

Linux
Linux - общее название UNIX-пободных операционных систем, которые разработаны в рамках проекта GNU (проект по разработке СПО). Linux работает на огромном множестве архитектур процессора, начиная от ARM заканчивая Intel x86.

Наиболее известными и распространенными дистрибутивами являются Arch Linux, CentOS, Debian. Также существует много «отечественных», российских дистрибутивов - ALT Linux, ASPLinux и другие.

Возникает довольно много споров об именовании GNU/Linux.
Сторонники «open source» используют термин «Linux», а сторонники «free software» - «GNU/Linux». Я предпочитаю первый вариант. Иногда для удобства представления термина GNU/Linux используют написания «GNU+Linux», «GNU-Linux», «GNU Linux».

В отличие от коммерческих систем (MS Windows, Mac OS X) Linux не имеет географического центра разработки и определенной организации, которая владела бы системой. Сама система и программы для нее - результат работы огромных сообществ, тысяч проектов. Присоединиться к проекту или создать свой может каждый!

Вывод
Таким образом у нас поучилась цепочка: UNIX -> UNIX-подобная ОС -> Linux.

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

Теги: unix, linux, nix, линукс, юникс

Данная статья не подлежит комментированию, поскольку её автор ещё не является

Что такое Unix (для начинающих)


Дмитрий Ю. Карпов


О чем это я?


Этот опус не претендует на полноту описания. Более того, в целях упрощения сознательно опущены некоторые подробности. Сначала цикл задумывался как FAQ (ЧаВо - часто задаваемые вопросы), но видимо получится "Курс молодого бойца" или "Сержантская школа".

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

Не дожидаясь разоблачения со стороны опытных Unix"оидов, делаю добровольное признание - я не могу претендовать на роль великого знатока Unix, а мои знания в основном вокруг FreeBSD. Надеюсь, это не помешает.

Этот файл еще долго будет находиться в состоянии "under construction". :-)

Что такое Unix?


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

Какие бывают Unix"ы и на каких машинах они запускаются?


Этот список не претендует на полноту, ибо кроме перечисленных есть еще множество менее распространенных Unix"ов и Unix-подобных систем, не говоря уже о древних Unix"ах для устаревших машин.

Условно можно выделить семейства System V и Berkeley. System V (читается "System Five") имеет несколько вариантов, последний по моим сведениям System V Release 4. Университет Berkeley славен не только разработкой BSD, но и большинства протоколов Internet. Впрочем, многие Unix"ы сочетают свойства обеих систем.

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


  • Семейство BSD: FreeBSD , NetBSD , OpenBSD .
  • Семейство Linux : RedHat , SlackWare , Debian , Caldera ,
  • SCO и Solaris доступны бесплатно для некоммерческого использования (в основном - для учебных заведений).

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


    Unix состоит из ядра с включенными в него драйверами и из утилит (внешних по отношению к ядру программ). Если надо изменить конфигурацию (добавить устройство, изменить порт или прерывание), то ядро пересобирают (перелинковывают) из обьектных модулей или (напр., во FreeBSD) из исходников. /* Это не совсем верно. Некоторые параметры можно поправить без пересборки. Существуют также loadable kernel modules. */

    В противоположность Unix"у Windows (если не уточняется, какая, то имеются в виду 3.11, 95 и NT) и OS/2 при загрузке фактически на ходу прилинковывают драйверы. При этом компактность собранного ядра и повторное использование общего кода на порядок ниже, чем у Unix. Кроме того, при неизменной конфигурации системы ядро Unix без переделки (потребуется изменить только стартовую часть BIOS) может быть записан в ПЗУ и выполняться _не_загружаясь_ в ОЗУ. Компактность кода особенно важна, т.к. ядро и драйверы никогда не покидают физическую оперативную память, не свопятся на диск.

    Unix - самая многоплатформенная OS. WindowsNT пытается подражать ему, но пока это плохо удается - после отказа от MIPS и POWER-PC, W"NT остались всего на двух платформы - традиционная i*86 и DEC Alpha. Разумеется, переносимость программ с одной версии Unix на другую ограничена. Неаккуратно написанная программа, не учитывающая различий в реализациях Unix, делающая необоснованные предположения типа "переменная integer должна занимать четыре байта", может потребовать серьезной переделки. Но все равно это на много порядков легче, чем например пернести с OS/2 на NT.

    Почему Unix?


    Unix используется как в качестве как сервера, так и рабочей станции. В номинации серверов с ним конкурируют MS WindowsNT, Novell Netware, IBM OS/2 Warp Connect, DEC VMS и операционные системы мэйнфреймов. Каждая система имеет свою область применения, в которой она лучше других.

  • WindowsNT - для администраторов, которые предпочитают привычный интерфейс экономному расходованию ресурсов и высокой производительности.
  • Netware - для сетей, где нужна высокая производительность файлового и принтерного сервиса и не столь важны остальные сервисы. Главный недостаток - на сервере Netware трудно запускать приложения.
  • OS/2 хороша там, где нужен "легкий" сервер приложений. Ресурсов требует меньше чем NT, в управлении гибче (хотя в настройке может и сложнее), а многозадачность очень хорошая. Авторизация и разграничение прав доступа не реализованы на уровне ОС, что с лихвой окупается реализацией на уровне приложений-серверов. (Впрочем, зачастую остальные OS делают то же самое). Многие станции FIDOnet и BBS сделаны на базе OS/2.
  • VMS - мощный, ничем не уступающий Unix"ам (а во многом и превосходящий его) сервер приложений, но только для платформ VAX и Alpha фирмы DEC.
  • Мэйнфреймы - для обслуживания очень большого количества пользователей (порядка нескольких тысяч). Но работа этих пользователей как правило организована в виде не клиент-серверного взаимодействия, а в виде хост-терминального. Терминал же в этой паре скорее не клиент, а сервер (Мир Internet, N3 за 1996-й год). К преимуществам мэйнфреймов надо отнести более высокую защищенность и устойчивость к сбоям, а к недостаткам - соответствующую этим качествам цену.

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

    Недостаточная гибкость предоставления прав доступа пользователей к файлам по сравнению с WindowsNT затрудняет организацию _на_уровне_файловой_системы_ группового доступа к данным (точнее, к файлам), что на мой взгляд компенсируется простотой реализации, а значит меньшими требованиями к аппаратуре. Впрочем, такие приложения, как SQL-сервер решают проблему группового доступа к данным своими силами, так что отсутствующая в Unix возможность запретить доступ к _файлу_ конкретному пользователю на мой взгляд является явно избыточной.

    Практически все протоколы, на которых основан Internet, были разработаны под Unix, в частности стек протоколов TCP/IP придуман в университете Berkeley.

    Защищенность Unix при правильном администрировании (а когда это не так?) ни в чем не уступает ни Novell, ни WindowsNT.

    Важным свойством Unix, которое приближает его к мэйнфреймам, является его многотерминальность, много пользователей могут одновременно запускать программы на одной Unix-машине. Если не требуется использовать графику, можно обойтись дешевыми текстовыми терминалами (специализированными или на базе дешевых PC), подключенными по медленным линиям. В этом с ним конкурирует только VMS. Можно использовать и графические X-терминалы, когда на одном экране присутствуют окна процессов, выполняющихся на разных машинах.

    В номинации рабочих станций с Unix конкурируют MS Windows*, IBM OS/2, Macintosh и Acorn RISC-OS.

  • Windows - для тех, кто ценит совместимость больше эффективности; для тех, кто готов купить большое количество памяти, дискового пространства и мегагерц; для тех, кто любит не вникая в суть, щелкать мышкой по кнопочкам в окошке. Правда, рано или поздно все равно придется изучить принципы работы системы и протоколов, но тогда уже будет поздно - выбор сделан. Немаловажным преимуществом Windows надо признать также возможность украсть кучу программного обеспечения.
  • OS/2 - для любителей OS/2. :-) Хотя по некоторым сведениям OS/2 лучше других взаимодействует с мэйнфреймами и сетями IBM.
  • Macintosh - для графических, издательских и музыкальных работ, а также для тех, кто любит понятный, красивый интерфейс и не хочет (не может) разбираться в подробностях функционирования системы.
  • RISC-OS, прошитая в ПЗУ, позволяет не тратить время на инсталляцию операционной системы и восстановление ее после сбоев. Кроме того, практически все программы под ней очень экономно расходуют ресурсы, благодаря чему не нуждаются в свопинге и работают очень быстро.

    Unix функционирует как на PC, так и на мощных рабочих станциях с RISC-процессорами, под Unix написаны действительно мощные САПР и геоинформационные системы. Своей масштабируемостью Unix из-за его многоплатформенности на порядок превосходит любую другую операционную систему из известных мне.

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


    Unix базируется на двух основных понятиях: "процесс" и "файл". Процессы являют собой динамическую сторону системы, это субьекты; а файлы - статическую, это обьекты действия процессов. Почти весь интерфейс взаимодействия процессов с ядром и друг с другом выглядит как запись/чтение файлов. /* Хотя надо добавить такие вещи, как сигналы, разделяемая память и семафоры. */

    Процессы нельзя путать с программами - одна программа (как правило с различными данными) может выполняться в разных процессах. Процессы можно весьма условно разделить на два типа - задачи и демоны. Задача - это процесс, который выполняет свою работу, стремясь побыстрее закончить ее и завершиться. Демон ждет событий, которые он должен обработать, обрабатывает произошедшие события и снова ждет; завершается он как правило по приказу другого процесса, чаще всего его убивает пользователь, дав команду "kill номер_процесса". /* В этом смысле получается, что интерактивная задача, обрабатывающая ввод пользователя, скорее похожа на демона, чем на задачу. :-) */

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


    В старых Unix"ах отводилось 14 букв на имя, в новых это ограничение снято. В директории кроме имени файла находится его идентефикатор inode - целое число, определяющее номер блока, в котором записаны атрибуты файла. Среди них: номер пользователя - хозяина файла; номер группы; количество ссылок на файл (см.далее) даты и время создания, последней модификации и последнего обращения к файлу; атрибуты доступа. Атрибуты доступа содержат тип файла (см.далее), атрибуты смены прав при запуске (см.далее) и права доступа к нему для хозяина, одногрупника и остальных на чтение, запись и выполнение. Право на стирание файла определяется правом записи в вышележащую директорию.

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

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

    Файлы бывают следующих типов:

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

    Специальные файлы, предназначенные для работы с устройствами, как правило, сосредоточены в директории " /dev ". Вот некоторые из них (в номинации FreeBSD):

    • tty* - терминалы, в т.ч.:
      • ttyv - виртуальная консоль;
      • ttyd - DialIn терминал (обычно последовательный порт);
      • cuaa - DialOut линия
      • ttyp - сетевой псевдо-терминал;
      • tty - терминал, с которым ассоциирована задача;
    • wd* - жесткие диски и их подразделы, в т.ч.:
      • wd - жесткий диск;
      • wds - партиция этого диска (именуемая здесь "slice");
      • wds - раздел партиции;
    • fd - floppy-диск;
    • rwd*, rfd* - то же самое, что wd* и fd*, но с последовательным доступом;

    Иногда требуется, чтобы программа, запущенная пользователем, имела не права запустившего ее пользователя, а какие-то другие. В этом случае устанавливается атрибут смены прав на права пользователя - хозяина программы. (В качестве примера приведу программу, которая читает файл с вопросами и ответами и на основании прочитанного тестирует запустившего эту программу студента. Программа должна иметь право читать файл с ответами, а запустивший ее студент - нет.) Так, например, работает программа passwd, с помощью которой юзер может изсменить свой пароль. Юзер может запустить программу passwd, она может произвести изменения в системной базе данных - а пользователь не может.

    В отличие от DOS, в котором полное имя файла выглядит как "диск:\путь\имя", и RISC-OS, в которой оно выглядит "-файловая_система-диск:$.путь.имя" (что вообще говоря имеет свои преимущества), Unix использует прозрачную нотацию в виде "/путь/имя". Корень отсчитывается от раздела, с которого было загружено ядро Unix. Если мы собираемся использовать другой раздел (а на загрузочном разделе как правило находится только самое необходимое для загрузки), используется команда `mount /dev/файл_раздела директория`. При этом файлы и поддиректории, ранее находившиеся в этой директории, становятся недоступными, пока не раздел не будет размонтирован (естественно, все нормальные люди используют для монтирования разделов пустые директории). Производить монтирование и размонтирование имеет право только супервизор.

    При запуске каждый процесс может расчитывать, что для него уже открыты три файла, которые ему известны как стандартный ввод stdin по дескриптору 0; стандартный вывод stdout по дескриптору 1; и стандартный вывод stderr по дескриптору 2. При регистрации в системе, когда пользователь вводит имя и пароль, а ему запускается shell, все трое направлены на /dev/tty; позже любой из них может быть перенаправлен в любой файл.

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


    В Unix практически всегда входят два командных интерпретатора - sh (shell) и csh (C-подобный shell). Кроме них еще бывают bash (Bourne), ksh (Korn), и другие. Не вдаваясь в подробности, приведу общие принципы:

    Все команды, кроме изменения текущей директории, установки переменных окружения (environment) и операторов структурного программирования - внешние программы. Программы эти как правило располагаются в каталогах /bin и /usr/bin. Программы системного администрирования - в каталогах /sbin и /usr/sbin.

    Команда состоит из имени запускаемой программы и аргументов. Аргументы отделяются от имени команды и друг от друга пробелаим и табуляциями. Некоторые спецсимволы интерпретируются самим shell"ом. Спецсимволами являются " " ` \ ! $ ^ * ? | & ; (еще какие?).

    В одной командной строке можно дать несколько команд. Команды могут быть разделены; (последовательное выполнение команд), & (асинхронное одновременное выполнение команд), | (синхронное выполнение, стандартный вывод stdout первой команды будет подан на стандартный ввод stdin второй).

    Кроме того, можно брать стандартный ввод из файла, включив в качестве одного из аргументов "<файл" (без кавычек); можно направить стандартный вывод в файл, используя ">файл" (файл будет обнулен) или ">>файл" (запись будет произведена в конец файла). Сама программа не получит этого аргумента; чтобы узнать, что ввод или вывод переназначены, программа должна сама предпринять некоторые весьма нетривиальные телодвижения.

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


    Если надо получить информацию по какой-либо команде, дайте команду "man имя_команды". На экран это будет выдаваться через программу "more" - посмотрите, как с ней управляться на вашем Unix"е командой `man more`.

    Дополнительная документация