- •И.Н.Акуленок, а.В.Акуленок
- •Часть I. Основы операционной системы unix Утверждено советом университета
- •Введение
- •Глава 1. История создания ос unix
- •Реализации oc unix
- •Unix на платформе Intel
- •Доля компьютеров с ос unix (1993 год)
- •Продажи unix–серверов (III квартал 2007 года)
- •1.1. Первые шаги по созданию unix
- •1.2. Исследовательские версии unix
- •1.3. Основные стандарты
- •1.3.1. Основные задачи стандартизации
- •1.4. Разработчики операционных систем
- •1.4.1. Версии at&t
- •1.4.2. Версии Microsoft/sco
- •1.4.3. Версии университета Беркли
- •1.4.4. Версии компании Sun
- •1.4.5. Версии компании Nowell
- •1.4.6. Популярные версии unix
- •1.4.7. Свободно распространяемые системы unix
- •1.5. Реализация ядра unix
- •1.5.1. Микроядро Mach
- •1.5.2. Микроядро Chorus
- •1.6 Характеристики oc unix
- •1.6.1.Файловая система
- •1.6.2. Многозадачность
- •1.6.3. Многопользовательский режим
- •1.6.4. Мобильность
- •1.6.5. Виртуальная память
- •1.6.6. Связь между задачами
- •1.6.7. Внешние устройства
- •1.6.8. Связь между компьютерами
- •1.6.9. Графический пользовательский интерфейс
- •1.6.10. Безопасность
- •1.6.11. Поддержка баз данных
- •1.6.12. Наличие стандартов
- •1.6.13. Открытость
- •1.6.14. Разработка программного обеспечения
- •1.7. Контрольные вопросы
- •1.8. Тесты
- •Глава 2. Функционирование ос unix
- •2.1. Ядро
- •2.1.1. Функции ядра
- •2.1.2. Структура ядра
- •2.1.3. Файловая подсистема
- •2.1.4. Подсистема управления процессами
- •2.1.5. Подсистема ввода/вывода
- •2.2. Командный процессор Shell
- •2.3. Программы–утилиты
- •2.4. Контрольные вопросы
- •2.5. Тесты
- •Глава 3. Процессы
- •3.1. Контекст процесса
- •3.3. Типы процессов
- •3.3.1. Системные процессы
- •3.3.2. Демоны
- •3.3.3. Прикладные процессы
- •3.4. Атрибуты процесса
- •3.4.1. Идентификатор процесса
- •3.4.2. Идентификатор родительского процесса
- •3.4.3. Приоритет процесса
- •3.4.4. Терминальная линия
- •3.4.5. Реальный и эффективный идентификаторы пользователя
- •3.4.6. Реальный и эффективный идентификаторы группы
- •3.4.7. Идентификатор терминальной группы
- •3.5. Иерархия процессов
- •3.6. Взаимодействие процессов
- •3.6.1. «Отцы», «дети», «сироты», «зомби»
- •3.7. Системные вызовы
- •3.7.1. Механизм создания процесса и запуска программы
- •3.7.2. Графический пример дерева процессов
- •3.8. Связи между процессами
- •3.8.1. Сигналы
- •Сигналы posix 1.1
- •3.8.2. Очереди сообщений
- •3.8.3. Семафоры
- •3.8.4. Совместная память
- •3.8.5. Программные каналы
- •3.8.6. Программные гнезда
- •3.9. Контрольные вопросы
- •3.10. Тесты
- •Глава 4. Файловая система unix
- •4.1. Имена файлов
- •4.2. Структура файловой системы
- •4.2.1. Загрузочный блок
- •4.2.2. Суперблок
- •4.2.3 Дескрипторы файлов
- •4.2.4. Блоки данных и свободные блоки
- •4.3. Типы файлов
- •4.3.1. Обычные файлы
- •4.3.2. Каталоги
- •4.3.4. Символические связи
- •4.3.5. Fifo – Именованные каналы
- •4.3.6. Сокеты
- •4.3.7. Обозначение типов файлов
- •Типы файлов
- •4.4. Дескриптор обычного файла
- •4.5. Дескриптор каталога
- •4.6. Дескриптор специального файла
- •4.7. Системная таблица файлов
- •4.8. Монтирование файловых систем
- •4.9. Демонтирование файловых систем
- •4.10. Проверка и восстановление файловых систем
- •4.11. Журналирование файловых систем
- •4.12. Контрольные вопросы
- •4.13. Тесты
- •Глава 5. Этапы начальной загрузки ос Unix
- •5.1. Загрузка и инициализация ядра
- •5.2. Распознавание и конфигурирование устройств
- •5.3. Создание спонтанных процессов
- •5.4. Выполнение команд оператора
- •5.5. Выполнение командных файлов запуска системы
- •5.6. Переход в многопользовательский режим
- •5.7. Контрольные вопросы
- •5.8. Тесты
- •Глава 6. Обзор командных файлов
- •6.1. Процесс init
- •6.1.1. Формат файла inittab
- •6.1.2. Уровни выполнения
- •Уровни выполнения
- •6.1.3. Дисциплины обработки процесса
- •Дисциплины обработки процесса
- •6.1.4. Запуск и этапы работы процесса init
- •6.2. Процесс rc
- •6.2.1. Сценарии запуска системы Solaris
- •6.3. Процесс cron
- •6.4. Процесс регистрации пользователей
- •6.5. Контрольные вопросы
- •6.6. Тесты
- •Глава 7. Останов системы
- •7.1. Выключение питания
- •7.2. Команда shutdown
- •7.3. Команда halt
- •7.4. Изменение уровня выполнения процесса init
- •Глава 8. Задачи системного администрирования
- •8.1. Инструменты администрирования
- •8.1.1. Администрирование aix
- •8.1.2. Администрирование hp-ux
- •8.1.3. Администрирование Solaris
- •8.1.4. Администрирование Linux
- •8.2. Пользователь root
- •8.2.1. Команда su
- •8.3. Добавление новых пользователей в систему
- •8.3.1. Файл /etc/passwd
- •Идентификаторы пользователей
- •8.3.2. Файл /etc/group
- •8.4. Контрольные вопросы
- •8.5. Тесты
- •Литература
- •Содержание
- •Глава 1. История создания ос unix 6
- •Глава 2. Функционирование ос unix 51
- •Глава 3. Процессы 75
- •Глава 4. Файловая система unix 116
- •Акуленок Ирина Николаевна Акуленок Анатолий Васильевич
- •Часть I. Основы операционной системы unix
6.1. Процесс init
Процесс init является главным диспетчером процессов. Он поддерживает механизм создания процессов в соответствии со схемой, которая находится в файле /etc/inittab. По данной схеме обычно выполняется запуск процессов getty для всех терминальных линий, через которые пользователи входят в систему.
Кроме того, init контролирует работу автономных процессов, которые необходимы конкретной системе.
Init читает по очереди строку за строкой файл /etc/inittab, в котором содержатся точки входов, загружаемых по мере необходимости программ и командных файлов (в терминологии UNIX – shell script–файлов).
6.1.1. Формат файла inittab
Формат файла inittab состоит из 4–х полей, разделенных символом двоеточия:
id:run–level:action:process
id (имя процесса) – один или несколько символов, уникально идентифицирующих точку входа. Имя процесса служит для идентификации строки запуска процесса. Может иметь до 14 (4 – в современных ОС UNIX) символов. При идентификации терминалов используются имена их логических устройств. Имя должно однозначно идентифицировать строку.
run–level (уровень выполнения) – определяет уровень, на котором запускается процесс.
action (действие) – определяет действия для данной точки входа (дисциплину обработки процесса).
process – стартовые скрипты, которые будут автоматически запускаться при переходе к каждому из уровней выполнения.
6.1.2. Уровни выполнения
Для того чтобы системе было легче переключаться между разными наборами программ, которые используются для разных типов задач, была придумана концепция режимов работы системы. Любой UNIX ветви System V может работать в одном из семи режимов (они нумеруются от 0 до 6). Каждый режим характеризуется своим назначением, которое определяет набор программ, выполняющихся в этом режиме.
В Solaris, наряду с упомянутыми семью, используется и восьмой режим - s или S (режимы s и S - взаимозаменяемые имена для уровня однопользовательского выполнения).
Режим работы системы (runlevel) иногда также называют состоянием (state) или уровнем выполнения. Набор программ, запускаемых в том или ином режиме, определяется содержимым файла /etc/inittab.
Уровень выполнения – это программная конфигурация системы. Каждая конфигурация предусматривает в своем составе только определенные группы процессов.
В составе различных UNIX–систем предусмотрено различное количество уровней управления. Например, в системе AIX (IBM) поддерживается 11 различных уровней выполнения:
от 0 до 9, S, s, M, m
Перечень действий, происходящих с системой в различных режимах работы, представлен в табл.6.1.
Таблица 6.1
Уровни выполнения
Уровень выполнения |
Действие |
0 |
Переход системы в режим останова. В режиме 0 компьютер можно выключить без опасений за сохранность данных. |
1 |
Переход системы в режим системного администрирования. Сохраняется доступ ко всем файловым системам. Доступ к системе консоли возможен только для суперпользователя. Режим 1 применяется для установки пакетов ПО. |
S/s |
Переход системы в однопользовательский режим. При этом все пользовательские процессы останавливаются, а файловые системы, необходимые для многопользовательской работы, демонтируются. После этого доступ к системе возможен только с консоли; регистрационные имена, требующие доступа к пользовательским файловым системам, употреблять нельзя. Этот режим применяется для установки или удаления программного обеспечения, резервного копирования, восстановления или проверки файловых систем. Система переходит в состояние s автоматически, когда файловая система /usr повреждена и не может быть восстановлена без вмешательства администратора. Набор файловых систем, смонтированных при работе системы в состоянии s, не всегда один и тот же; то, какие файловые системы смонтированы, зависит от метода перевода системы в состояние s и настроек системы. Переход в режим s возможен даже при поврежденном или отсутствующем файле /etc/inittab, что невозможно для любого другого режима работы. При переходе в режим S из других режимов работы, файловые системы, уже смонтированные к этому моменту, остаются смонтированными, даже если предоставляются другими серверами в сети. Все процессы, запущенные ранее в многопользовательских режимах, завершаются. Завершаются также все процессы, запущенные от имени пользователей. |
2 |
Переход системы в нормальный многопользовательский режим работы. Все процессы и демоны, необходимые для многопользовательской работы, запущены. |
3 |
Переход системы в нормальный многопользовательский режим работы. Кроме того, обеспечивается совместный доступ к файлам. Запускает дополнительные демоны, необходимые для предоставления доступа к файловой системе, монтирует удаленные файловые системы и объявляет о доступности своих ресурсов общего пользования, таких как NFS (полный многопользовательский режим с организацией сети) |
4 |
Переход системы в альтернативный многопользовательский режим. Предполагает иную, нежели в режимах 2 и 3, конфигурацию демонов и других программ для работы в многопользовательском режиме. Обычно не используется. |
5 |
Переход системы в режим останова. Во многом подобен уровню 0, за исключением того, что система не пытается отключить питание |
6 |
Останавливает и перезагружает операционную систему в состояние, определяемое записью initdefault в файле /etc/inittab. |
Поле для указания уровня выполнения может содержать один или большее число аргументов, описанных в табл. 6.1, либо пустое место, что означает все уровни (режимы) работы. Обычно стандартное значение этого аргумента составляет 2 или 3, в зависимости от системы.
Когда команда init изменяет режим работы системы, все процессы, не принадлежащие этому режиму, будут последовательно прекращены.
Процессом считается любой демон, исполняемый сценарий или программа. Этот процесс может вызывать другие сценарии или двоичные программы.
