- •2. Структура ос Unix
- •2.1. История создания Unix
- •Основные этапы развития Unix
- •2.2. Основные свойства Unix
- •2.3. Концептуальная модель Unix
- •2.4. Современные версии Unix
- •2.5. Архитектура ос Unix
- •2.6. Архитектура ядра Unix
- •2.7. Основные понятия ос Unix
- •2.8. Файловая система (пользовательский аспект)
2.6. Архитектура ядра Unix
Рис. 2.2. Внутренняя структура ядраUnix
Ядро состоит из трёх основных подсистем:
Файловая подсистема;
Подсистема управления процессами и памятью;
Подсистема ввода/вывода.
Файловая подсистема:
Обеспечивает унифицированный интерфейс доступа к данным, расположенным на дисках и к периферийным устройствам;
Контролирует права доступа к файлу;
Обеспечивает перенаправление запросов, адресованных периферийным устройствам, соответствующим модулям подсистемы ввода/вывода.
Подсистема управления процессами
Запущенная на выполнение программа порождает в системе один или более процессов(илизадач).
Подсистема управления процессами контролирует:
Создание и удаление процессов;
Распределение системных ресурсов (памяти, вычислительных процессов) между процессами;
Синхронизация процессов;
Межпроцессные взаимодействия.
Подсистема ввода/вывода.
Выполняет запросы файловой подсистемы и подсистемы управления процессами для доступа к периферийным устройствам.
Она обеспечивает необходимую буферизацию данных и взаимодействует с драйверами устройств – специальными модулями ядра, непосредственно обслуживающими внешние устройства.
2.7. Основные понятия ос Unix
Пользователь, привилегированный пользователь, атрибуты пользователя, вход в систему: ввод идентификатора и пароля. Интерфейс пользователя, интерпретатор команд (общие сведения); формат команд; порождение имен файлов; стиль общения с системой.
Пользователь– тот, кто имеет имя, пароль и ряд других атрибутов. В ОСUnixпользователь не обязательно должен быть человеком. Это объект, обладающий определенными правами, который может запускать на выполнение программы и владеть файлами. Примером такого пользователя может быть удаленный компьютер. Такие пользователи называютсяпсевдопользователями.
Каждый пользователь системы имеет уникальное имя (или регистрационное имя – “loginname”). Однако внутри себя система различает пользователей по ассоциированному с именем идентификатору пользователя (UID–useridentifier).
Пользователь является членом одной или нескольких групп, которые объединяют пользователей, имеющих сходные задачи (например, работающих над одним проектом). Принадлежность к группе определяет дополнительные права, которыми обладают все пользователи группы. Каждая группа имеет уникальное имя. Внутренним представлением группы является её идентификатор (GID – group identifier).
В конечном счёте UID и GID определяют какими правами обладает пользователь в системе.
Привилегированный пользователь("суперпользователь") обладает всеми возможными правами в системе (обычно это администратор системы).
Атрибуты пользователя. Все атрибуты пользователя хранятся в файле /etc/passwd. Однако во многих системах информация о пользователе хранится в нескольких файлах (например, в специальных базах данных), поэтому создание новых записей о пользователях, как правило, производится специальными утилитами.
Строка учетной информации о пользователе (так называемая учетная карточка) имеет следующий формат:
name:passwd_encod:UID:GID:comments:home_dir: shell
В качестве разделителей полей в учетной карточке используется символ двоеточия ':'. Ниже приведены описания полей в учетной карточке пользователя.
name |
учетное (регистрационное) имя пользователя - задается администратором системы |
passwd_encod |
закодированный пароль. В современных версиях Unixхранится в другом файле |
UID |
числовой идентификатор пользователя |
GID |
числовой идентификатор группы, к которой отнесен пользователь |
comments |
произвольная информация о пользователе |
home_dir |
начальный (домашний каталог) пользователя, в котором пользователь оказывается после входа в систему |
shell |
имя интерпретатора команд, который будет запущен при входе пользователя в систему |
Вход в систему. Для входа в систему (непосредственно с консольного терминала или при помощи средств удаленного входа, например,telnet)необходимо ввести регистрационное имя пользователя (в поле "Login")и пароль (в поле "Password").
Регистрационное имя и пароль "выдается" администратором системы.
Интерфейс пользователя. Многие реализацииUnixсегодня позволяют работать с многооконным графическим интерфейсом. Однако, базовой пользовательской средой является обычный алфавитно-цифровой терминал и интерфейс командной строки является самым непосредственным способом выполнения множества небольших задач администрирования. В дальнейшем мы будем говорить, в основном об интерфейсе командной строки.
Интерпретатор команд Unix. Все современные системыUnixпоставляются по крайней мере с тремя командными интерпретаторами:
Bourn Shell (/bin/sh);
C shell (/bin/csh);
Korn shell (/bin/ksh).
Командный язык системы является языком программирования в значительно большей степени, чем аналогичные командные языки распространенных операционных систем.
Пользователь может вводить переменные и присваивать им значения, выполнять простые команды, строить составные команды, управлять потоком их выполнения с помощью условного оператора, операторов цикла и оператора варианта (переключателя).
Последовательность команд можно объединить в процедуры (командные файлы), передавать в них фактические параметры. С помощью командного языка можно описывать важнейшие свойства системы. В частности, взаимодействию процессов через программный канал соответствует в командном языке понятие конвейера команд, стандартный ввод процесса можно специальными средствами командного языка направлять в конкретные файлы, команды можно выполнять синхронно и асинхронно (в фоновом режиме). Дополнительные возможности обеспечивают встроенные команды.
Как правило, команды системы реализуют наиболее часто употребляемые процедуры обработки информации и управления работой.
Формат команд.Синтаксис команд можно представить следующим образом:
command [-f] [-a flag_parameter] [parameter]
Команда начинается сназвания -command.
За названием могут следовать флаги,параметры флаговипараметры, которые называются аргументами.
Аргумент, состоящий из знака минус '-', за которым следует одна буква, называется флагом. Флаги обычно задают режим работы команды.
За некоторыми флагами могут следовать аргументы, относящиеся только к этому флагу (flag_parameter). Такие аргументы называются параметрами флагов.
Аргументы, задаваемые после последнего флага и параметры флага, называются параметрами. Обычно они задают объекты для обработки.
Приведем несколько правил (не все), которым следуют разработчики новых команд:
длина имени команды должна составлять от двух до девяти символов;
имя команды записывается только строчными (малыми) буквами и цифрами;
флаги должны состоять из одного символа;
флаги разделяются символом '-';
флаги без параметров флагов могут группироваться за одним разделителем '-';
все флаги должны быть перечислены до параметров в командной строке;
порядок флагов не является существенным.
Пример_1: %ls-l/bin
lsимя команды (вывод содержимого каталога);
-lфлаг (задает вывод расширенной информации о файлах);
/binобъект обработки (имя каталога).
Пример_2:%ls-la/bin
-laфлагиlиaсгруппированы в одно слово.
Пример_3: %cc -o begin prog.c
ccимя команды (запуск компилятора языка Си);
-obeginфлаг-oзадает запись окончательных результатов трансляции в файлbegin(по умолчанию запись производится в файлa.out);
prog.cобъект обработки (исходный модуль на языке Си).
Порождение имен файлов. Интерпретатор командного языка анализирует каждое слово команды и ищет метасимволы ('*', '?', '['). Если хотя бы один их этих метасимволов найден, то слово считается шаблоном. Интерпретатор командного языка ищет имена файлов, удовлетворяющих этому шаблону, и заменяет исходное слово лексикографически упорядоченной последовательностью найденных имен, разделенных пробелами.
Правила подстановки:
* любая последовательность символов, в том числе, пустая;
? любой одиночный символ;
[…] соответствует любому одиночному символу из тех, которые указаны в квадратных скобках. Пара символов, разделенных символом '-' (например, [a-d]), соответствует одиночному символу, код которого попадает в диапазон между кодами указанных символов, включая их самих.
Стиль общения с системой. При работе в системеUnixнеобходимо иметь ввиду следующее:
Unixразличает большие и малые буквы.
если уничтожен какой-либо файл, то проблем с его восстановлением не будет, так как восстановить уничтоженный файл невозможно.