- •И.Н.Акуленок, а.В.Акуленок
- •Часть 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
4.3.4. Символические связи
Символическая связь (symbolic link) – это специальный файл, который содержит путь к другому файлу. Указание на то, что данный элемент каталога является символической связью, находится в индексном дескрипторе. Поэтому обычные команды доступа к файлу вместо получения данных из физического файла, берут их из файла, имя которого приведено в связи. Этот путь может указывать даже на каталог, находящийся в другой физической файловой системе.
4.3.5. Fifo – Именованные каналы
Именованный или программный канал (pipes) представляет собой файл, созданный для обмена информацией между двумя процессами на одной машине по принципу очереди. Посылающий процесс пишет данные в именованный канал, а принимающий процесс считывает данные из именованного канала. Канал – это временный файл, который существует так долго, как долго процессы обмениваются информацией. Данные из поименованного канала обрабатываются на основе алгоритма конвейера FIFO (сокращенно от "first–in–first–out" – "первым пришел – первым вышел"). Канал отличается от обычного файла тем, что содержит временные данные: информация, однажды считанная из канала, не может быть прочитана вновь. Кроме того, информация читается в том порядке, в котором она была записана в канале, и система не допускает никаких отклонений от данного порядка. Способ хранения ядром информации в канале не отличается от способа ее хранения в обычном файле, за исключением того, что здесь используются только блоки прямой, а не косвенной адресации.
Именованные каналы впервые появились в UNIX System V, но большинство современных систем поддерживают этот механизм.
4.3.6. Сокеты
Сокеты (sockets) –позволяют представить в виде файла в логической файловой системе сетевое соединение. Другими словами, сокет – это интерфейс прикладного программирования (API), который используется для обмена информацией между двумя компьютерами, т.е. сокет выполняет сетевой ввод/вывод. Абстракция сокета была создана на основе файлов, но сокет не является реальным файлом. Для использования сокета в программе следует создать сокет и сконфигурировать его с соответствующими адресами локального и удаленного хостов. После соединения локального сокета с сокетом на удаленном хосте программа может использовать его для обмена информацией с удаленными хостами.
4.3.7. Обозначение типов файлов
В табл.4.1 представлены односимвольные обозначения различных типов файлов, доступ к которым идентичен.
Таблица 4.1.
Типы файлов
Тип файла |
Символ обозначения в системе |
Обычный файл |
– |
Каталог |
d |
Байт–ориентированный файл устройства |
c |
Блок–ориентированный файл устройства |
b |
Символическая ссылка |
l |
Именованный канал |
p |
Доменное гнездо UNIX |
s |
Процедура доступа к внешним устройствам идентична процедуре доступа к любому файлу системы. Такой подход обеспечивает независимость программы пользователя от особенностей ввода–вывода на конкретное внешнее устройство. Это определяет мобильность программ, работающих под управлением OC UNIX.
Типы файлов можно увидеть только с помощью единственной команды ls с опцией –l, что означает листинг длинного формата (l – long).
Рассмотрим примеры обозначений.
Пример 1 . Признаком обычного файла является дефис (–) в первой позиции первого столбца:
–rw–rw–r–– 1 root sys 8296 Фев 23 15:39 ps_data
Пример 2. Признаком каталога является символ d в первой позиции первого столбца:
drwxr–xr–x 2 informix informix 115 Фев 24 13:05 lib
Пример 3. Признаком специального символьного и блочного устройств являются символы с и b в первой позиции первого столбца, соответственно:
$ ls –1 /dev/dsk15 /dev/rdsk15
br–––––––– 2 root root 0,21 Feb 12 15:40 /dev/dsk15
crw–rw–––– 2 root root 7,21 Mar 7 09:29 /dev/rdsk15
crw––w––w– 1 root unix 9,1 May 3 15:02 /dev/tty01
crw––w––w– 1 root unix 9,2 May 3 15:02 /dev/tty02
Два числа вместо размера – это так называемые старший и младший номера устройства (major device number, minor device number).
Старший номер устройства указывает, какой драйвер будет обрабатывать запросы на чтение из этого файла или запись в него, а младший, к какому из нескольких внешних устройств или разделов идет обращение, а также один из возможных методов такого обращения.
Пример 4. Признаком символической связи является символ l в первой позиции первого столбца. Рассмотрим простой пример создания символической связи:
$ ln –s f2 f4
$ ls –l f*
–rw–r––r–– 1 kravchuk 50 643 Мар 26 15:37 f2
lrwxrwxrwx 1 kravchuk 50 2 Мар 26 15:57 f4 –> f2
Пример 5. Признаком именованного канала является символ p в первой позиции первого столбца:
$ ls –l /etc/cron.d/FIFO
prw––––––– 1 root root 0 Фев 23 15:41 /etc/cron.d/FIFO
Пример 6. Признаком сокета является символ s в первой позиции первого столбца:
$ ls –l /var/spool/prngd/pool
$ srwxrwxrwx 1 root other 0 Мар 14 11:25 /var/spool/prngd/pool
