- •Unix-подобные операционные системы
- •Часть 1. Введение в операционные системы unix 10
- •Часть 2. Использование unix 44
- •Unix-подобныеОс
- •Термин «unix-подобный» и торговая марка unix
- •Категории
- •История развития ос unix
- •Часть 1. Введение в операционные системы unix
- •Основные концепции операционных систем Обзор компьютерных систем
- •Назначение операционной системы
- •Операционная система как виртуальная машина
- •Операционная система как менеджер ресурсов
- •Архитектура операционной системы
- •Монолитная операционная система
- •Микроядерная операционная система
- •Классификация операционных систем по назначению
- •Архитектура unix. Файлы и устройства Особенности архитектуры unix
- •Два объекта unix: файлы и процессы
- •Беглый взгляд на архитектуру unix
- •Ядро unix
- •Файловая система unix
- •Особенности файловой системы
- •Виртуальная файловая система
- •Дерево каталогов
- •Устройства и драйверы
- •Архитектура unix. Процессы
- •Управление памятью
- •Управление процессами
- •Контекст процесса
- •Планирование процессов
- •Создание новых процессов
- •Процессы и потоки
- •Межпроцессное взаимодействие
- •Разделяемая память
- •Переменные окружения
- •Сигналы
- •Часть 2. Использование unix Терминал и командная строка
- •Терминал
- •Управляющие символы
- •Одновременный доступ к системе
- •Командная строка
- •Командная оболочка
- •Приглашение
- •Команды
- •Параметры
- •Шаблоны
- •Перенаправление ввода и вывода
- •Программное окружение
- •Стандартные переменные окружения
- •Служебные символы
- •Процесс выполнения команды
- •Возвращаемое значение
- •Эффективное использование командной строки
- •Редактирование командной строки
- •История команд
- •Автодополнение
- •Средства объединения команд
- •Справочная подсистема
- •Страницы руководства
- •Поиск по руководствам
- •Программа info
- •Документация, поставляемая с программой
- •Интегрированные системы документации
- •Введение в безопасность unix
- •Основы информационной безопасности
- •Политика безопасности
- •Управление доступом
- •Аутентификация и авторизация
- •Концепции безопасности unix
- •Пользователи и группы
- •Права доступа
- •Разделяемые каталоги
- •Подмена идентификатора процесса
- •Ограничения базовой модели доступа и её расширения
- •Суперпользователь
- •Аутентификация пользователей
- •Управление пользователями и правами доступа База данных пользователей системы
- •Изменение базы данных пользователей
- •Изменение прав доступа
- •Ограничения сеанса пользователя
- •Литература
Виртуальная файловая система
Рассмотрение второго значения термина файловая система приводит нас к уже обозначенной ранее совокупности процедур, осуществляющих доступ к файлам на различных носителях.
Файловая подсистема операционной системы UNIX имеет специальный уровень абстракции для обработки запросов к файлам — переключатель файловых систем или виртуальная файловая система (VFS). VFS предоставляет пользователю стандартный набор функций (интерфейс) для работы с файлами, вне зависимости от места их расположения и принадлежности к разным файловым системам.
Пользовательская программа имеет стандартный набор системных вызовов (например, открыть файл, прочитать данные, удалить файл), которые операционная система транслирует соответствующей фаловой системе. Таким образом, приложения становятся независимыми от реализации конкретных файловых систем. Тогда как модуль, предоставляющий доступ к файловой системе, должен быть написан согласно строго определённому внешнему интерфейсу виртуальной файловой системы.
Рисунок 1.18. Виртуальная файловая система

В мире стандартов UNIX определено, что корневой каталог единого дерева файловой системы должен иметь имя /, как и символ-разделитель при формировании полного имени файла. Тогда полное имя файла может быть, например, /usr/share/doc/bzip2/README. Задача VFS — по полному имени файла найти его местоположение в дереве файловой системы, определить её тип в этом месте дерева и «переключить», т. е. передать файл на дальнейшую обработку драйверу конктретной файловой системы. Такой подход позволяет использовать практически неограниченое количество различных файловых систем на одном компьютере под управлением одной операционной системы, а пользователь даже не будет знать, что файлы физически находятся на разных носителях информации.
Дерево каталогов
Особенностью операционных систем семейства UNIX является объединение файловой системы в единое дерево для любого количества носителей данных с одинаковыми или разными типами файловых систем на них. Это достигается путем операции монтирования — временной подстановкой вместо каталога одной файловой системы дерева другой файловой системы. В результате вместо нескольких, изначально никак не связанных друг с другом деревьев образуется большое разветвленное дерево с единым корневым каталогом.
Использование общепринятых имен основных файлов и структуры каталогов существенно облегчает работу в операционной системе, её администрирование и переносимость. Приведем краткое описание основных каталогов системы, формально описываемых специальным стандартом на иерархию файловой системы (Filesystem Hierarchy Standart). Стандарт регулирует не только и не столько имена основных каталогов системы, сколько типы размещаемых в них данных (исполняемые программы, библиотеки, файлы пользователя, временные системные данные и т. д.). Главный принцип, который соблюдается довольно последовательно — группировка однотипных данных в одной области файловой системы (каталоге верхнего уровня и его подкаталогах).
Рисунок 1.19. Монтирование файловых систем

Например, все каталоги можно разделить на две группы: для статических (редко меняющихся) данных — /bin, /usr и для динамических (часто меняющихся) данных — /var, /tmp. Исходя из этого администраторы могут разместить каждый из этих каталогов на собственном носителе, обладающем соответствующими характеристиками: скоростью доступа, объёмом, надёжностью и т. п.
Рисунок 1.20. Стандартные каталоги в файловой системе UNIX

Корневой каталог
Корневой каталог / является основой любой ФС UNIX. Все остальные каталоги и файлы располагаются в рамках струтуры (дерева), порождённой корневым каталогом, независимо от их физического местонахождения.
/bin
В этом каталоге находятся часто употребляемые команды и утилиты системы общего пользования. Сюда входят все базовые команды, доступные даже в том случае, если была примонтирована только корневая файловая система. Примерами таких утилит являются: ls, cp, sh и т. п.
/boot
Каталог содержит всё необходимое для процесса загрузки операционной системы: программу-загрузчик, образ ядра операционной системы и т. п.
/dev
Каталог содержит специальные файлы устройств, при помощи которых осуществляется доступ к периферийным устройствам. Наличие такого каталога не означает, что специальные файлы устройств нельзя создавать в другом месте, просто достаточно удобно иметь один каталог для всех файлов такого типа.
/etc
В этом каталоге находятся системные конфигурационные файлы. В качестве примеров можно привести файлы /etc/fstab, содержащий список монтируемых файловых систем, и /etc/resolv.conf, который задаёт правила составления локальных DNS-запросов. Среди наиболее важных файлов — скрипты инициализации и останова системы. В системах, наследующих особенности UNIX System V, для них отведены каталоги с /etc/rc0.d по /etc/rc6.d и общий для всех файл описания — /etc/inittab.
/home (необязательно)
Каталог содержит домашние каталоги пользователей. Его наличие в корневом каталоге не обязательно, а содержимое зависит от особенностей конкретной UNIX-подобной операционной системы.
/lib
Каталог для статических и динамических библиотек, необходимых для запуска программ, находящихся в каталогах /bin и /sbin.
/media
Стандартный каталог для временного монтирования файловых систем — например, гибких и флэш-дисков, компакт-дисков и т. п.
/opt
Каталог для дополнительного программного обеспечения, устанавливаемого в системе. Обычно в этот каталог устанавливаются программы, не входящие в основной дистрибутив.
/root (необязательно)
Домашний каталог суперпользователя. Его наличие в корневом каталоге не обязательно.
/sbin
В этом каталоге находятся команды и утилиты для системного администратора. Примерами таких команд являются: route, halt, init и т. п. Для аналогичных целей применяются каталоги /usr/sbin и /usr/local/sbin.
/usr
Этот каталог повторяет структуру корневого каталога — содержит каталоги /usr/bin, /usr/lib, /usr/sbin, служащие для аналогичных целей.
Каталог /usr/include содержит заголовочные файлы языка C для всевозможных библиотек, расположенных в системе.
Каталог /usr/local — ещё один уровень, в котором можно полностью воспроизвести структуру данных, содержащуюся в корневом каталоге. Обычно этот каталог служит для размещения программ, установленных администратором в дополнение к стандартной поставке операционной системы.
Каталог /usr/share хранит неизменяющиеся данные для установленных программ. Особый интерес представляет каталог /usr/share/doc, в который добавляется документация ко всем установленным программам.
/var, /tmp
Используются для хранения временных данных системных (/var) и пользовательских (/tmp) процессов. Каталог /var обычно содержит часто изменяемые системные файлы, например в каталоге /var/log размещаются системные журналы.
