- •И.Н.Акуленок, а.В.Акуленок
- •Часть 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.11. Журналирование файловых систем
Принципиальное решение проблемы согласованности и целостности данных в файловых системах UNIX возможно только при использовании журналировании (logging) – предварительной записи всех изменений дисковой структуры в отдельную область на диске.
В журналируемой файловой системе после того, как транзакция (изменение) записана, она может быть выполнена повторно, что предотвращает возникновение ошибок и несогласованностей в файловой системе и необходимость запуска программы fsck. Тем самым, уменьшается время перезагрузки в случае сбоя или некорректной остановки системы.
Журналирование позволяет записывать в журнал информацию обо всех начатых транзакциях. Если транзакция (т.е. операция записи на диск) по каким-то причинам не была завершена (например, отключилось питание), то после перезапуска системы файловая система будет автоматически возвращена в состояние, в котором она была до начала транзакции.
Журнал выделяется из свободных блоков файловой системы и, обычно, имеет размер порядка 1 Мбайта на каждый 1 Гбайт файловой системы. Журнал сбрасывается по мере заполнения, после синхронизации структуры файловой системы с диском.
Различные версии ОС UNIX поддерживают разные реализации журналируемых файловых систем. Это, например, файловая система ufs (Solaris), vxfs (Solaris, UnixWare), raiserfs (FreeBSD) и ext3 (Linux), jfs (AIX и Linux) и другие. Некоторые файловые системы позволяют включать и отключать журналирование (ufs, ext2/ext3). Естественно, журнализация несколько замедляет работу файловой системы, но, в большинстве случаев, гарантирует целостность данных.
4.12. Контрольные вопросы
Перечислите основные правила при создании имен файлов.
Перечислите типы файлов и их обозначение в системе.
Структура файловой системы.
Какая информация хранится в суперблоке?
Какая информация хранится в индексном дескрипторе файла?
Какая информация хранится в индексном дескрипторе каталога?
Какая информация хранится в индексном дескрипторе специального файла?
Какой командой можно смонтировать файловую систему?
Какой командой можно проверить файловую систему?
Назовите основные виды повреждений.
4.13. Тесты
Укажите типы файлов, поддерживаемые ОС UNIX (выберите все правильные ответы):
Обычный (ordinary) файл
Каталог (directory)
Файл устройства
Алиас (alias)
Символьная связь (symbolic link)
Жесткая связь (hard link)
Файловая система – это:
все файлы, хранящиеся на всех информационных носителях
все подкаталоги корневого каталога
раздел информационного носителя, используемый для хранения данных
способ организации доступа к файлам на информационном носителе или его разделе
В файловой системе UNIX имеется …
один корневой каталог
по одному корневому каталогу на каждый диск
не более 15 корневых каталогов
не более двух корневых каталогов
Индексный дескриптор – это
уникальный идентификатор объекта в файловой системе;
способ обращения к файлу, альтернативный полному имени;
запись в каталоге, в которой хранится имя файла и его атрибуты;
число (индекс), используемое для быстрого поиска группы однотипных файлов.
Как можно монтировать файловую систему на устройстве /dev/dsk/c0t0d0s3 в каталог /usr/distr?
mount -а
mount /dev/dsk/c0t0d0s3 /usr/distr
mount /usr/distr /dev/dsk/c0t0d0s3
Как можно узнать, какие файловые системы смонтированы? (выберите все правильные ответы)
mount -а
mount
df
du
Для демонтирования файловой системы, смонтированной в каталог /usr/proc следует выполнить команду
mount -r /usr/proc
mount -а
unmount
unmount /usr/proc
umount /usr/proc
Для проверки файловой системы устройства /dev/dsk/c0d0s7 следует использовать:
df
fsck
scandisk
format
Для успешного запуска проверки /dev/dsk/c0d0s7, если это устройство в данный момент смонтировано, следует (выберите все правильные ответы)
демонтировать устройство, запустить fsck /dev/dsk/c0d0s?
запустить fsck /dev/rdsk/c0d0s7, если демонтировать устройство невозможно
запустить fsck /dev/dsk/c0d0s7
Длина простого имени файла состоит
не более 256 символов
не более 32000 символов
не более 1024 символов
Чтобы получить доступ к файлу по имени, операционная система … (выберите все правильные ответы)
находит это имя в каталоге, содержащем файл
берет номер inod-a файла
по номеру находит inod в области inod-ов
из inod-а берет адрес блоков, в которых расположены данные файлы
по адресам блоков считывает блоки из области данных
