8.
Основы операционной системы UNIX

Успешно изучив материал, Вы будете знать:

После изучения данной темы Вы будете уметь:

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

Основные понятия к теме 8

ОС UNIX

Ядро системы (kernel)

Интерфейс пользователя

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

Система команд; команда

Оболочки

Регистрационное имя

Модуль подсистемы управления процессами

Модуль подсистемы управления памятью

Подсистема ввода/вывода

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Современные версии операционной системы 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 для работы с обычными графическими терминалами.

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

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

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

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

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

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

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

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

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

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

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

Модуль подсистемы управления процессами выполняет следующие функции:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример.

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

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

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

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

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

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

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

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

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

Здесь и далее по тексту обычным шрифтом печатается информация, выводимая на экран терминала, а полужирным шрифтом — вводимая информация.

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

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

8.12.
Пароль

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Когда системный администратор регистрирует пользователя в системе, с регистрационным именем связываются два компонента идентификации: идентификатор пользователя (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.

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

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

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

Ключ

Функция

$

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

<Backspace> или <^h>

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

<Break>

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

<Del>

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

<Esc>

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

<Enter >

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

<^d>

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

<^h>

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

<^s>

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

<^g>

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

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

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

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

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

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

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

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

8.18.
Команды

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

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

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

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

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

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

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

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

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

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

Примеры.

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

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

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

    $ who<Enter>

    dko30024

    pts/003

    Oct18             8:30

    dko30001

    pts/005

    Oct18             8:34

    dko30020

    pts/008

    Oct18             8:32

    root

    tty/000

    Oct18 8:00

    $

     

     

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

8.19.
Изменение пароля

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

8.20.
Выход из системы

Чтобы завершить работу с системой UNIX, введите <^d> в ответ на подсказку системы. Через несколько секунд система UNIX может отобразить подсказку login: вновь:

Аналогично работают команды exit и logout.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • терминал;

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

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

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

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

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

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

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

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

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

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

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

Задания для самостоятельной работы

Выполните задания к теме 8 в nетради-практикуме.