Основы организации операционной системы Unix
UNIX — семейство переносимых, многозадачных и многопользовательских операционных систем. Некоторые отличительные признаки UNIX-систем включают в себя: -использование простых текстовых файлов для настройки и управления системой; -широкое применение утилит, запускаемых в командной строке; -взаимодействие с пользователем посредством виртуального устройства — терминала; -представление физических и виртуальных устройств и некоторых средств межпроцессового взаимодействия как файлов; -использование конвейеров из нескольких программ, каждая из которых выполняет одну задачу. В настоящее время UNIX используются в основном на серверах, а также как встроенные системы для различного оборудования. На рынке ОС для рабочих станций и домашнего применения лидером является Microsoft Windows, UNIX занимает только второе (Mac OS X), третье (GNU/Linux) и многие последующие места. UNIX-системы имеют большую историческую важность, поскольку благодаря им распространились некоторые популярные сегодня концепции и подходы в области ОС и программного обеспечения. Также, в ходе разработки Unix-систем был создан язык Си. Особенности UNIX, отличающие данное семейство от других ОС приведены ниже. - Файловая система древовидная, чувствительная к регистру символов в именах, очень слабые ограничения на длину имён и пути. - Нет поддержки структурированных файлов ядром ОС, на уровне системных вызовов файл есть поток байт. - Командная строка находится в адресном пространстве запускаемого процесса, а не извлекается системным вызовом из процесса интерпретатора команд (как это происходит, например, в RSX-11). - Понятие «переменных окружения». - Запуск процессов вызовом fork(), то есть возможность клонирования текущего процесса со всем состоянием. - Понятия stdin/stdout/stderr. - Ввод/вывод только через дескрипторы файлов. - Традиционно крайне слабая поддержка асинхронного ввода/вывода, по сравнению с VMS и Windows NT. - Интерпретатор команд есть обыкновенное приложение, общающееся с ядром обыкновенными системными вызовами (в RSX-11 и VMS интерпретатор команд выполнялся как специальное приложение, специальным образом размещенное в памяти, пользующееся специальными системными вызовами, поддерживались также системные вызовы, дающие возможность приложению обращаться к своему родительскому интерпретатору команд). - Команда командной строки есть не более чем имя файла программы, не требуется специальная регистрация и специальная разработка программ как команд (что являлось обычной практикой в RSX-11, RT-11). - Не принят подход с программой, задающей пользователю вопросы о режимах своей работы, вместо этого используются параметры командной строки (в VMS, RSX-11, RT-11 программы работали также с командной строкой, но при её отсутствии выдавали запрос на ввод параметров). - Пространство имён устройств на диске в каталоге /dev, поддающееся управлению администратором, в отличие от подхода Windows, где это пространство имен размещается в памяти ядра, и администрирование этого пространства (например, задание прав доступа) крайне затруднено из-за отсутствия его постоянного хранения на дисках (строится каждый раз при загрузке). - Широкое использование текстовых файлов для хранения настроек, в отличие от двоичной базы данных настроек, как, например, в Windows Широкое использование утилит обработки текста для выполнения повседневных задач под управлением скриптов. - «Раскрутка» ОС после загрузки ядра путём исполнения скриптов стандартным интерпретатором команд. - Широкое использование конвейеров (pipe). - Все процессы, кроме init, равны между собой, не бывает «специальных процессов». - Адресное пространство делится на глобальное для всех процессов ядро и на локальную для процесса части, нет «групповой» части адресного пространства, как в VMS и Windows NT, как и возможности загрузки туда кода и его исполнения там. - Использование двух уровней привилегий процессора вместо четырёх в VMS. - Отказ от использования оверлеев в пользу деления программы на несколько программ поменьше, общающихся через конвейеры или временные файлы. - Отсутствие APC и аналогов, то есть произвольных (а не жестко перечисленных в стандартном множестве) сигналов, не доставляемых до явного пожелания процесса их получить (Windows, VMS). - Концепция сигнала уникальна для UNIX, и крайне сложна в переносе на другие ОС, такие, как Windows. 44) Базовая файловая системы System V. Основные элементы структуры s5fs. Ф.с. систем5 можно разделить на: 1. системную часть 2. область данных(разбита на блоки по 512б)
Системная часть: 1. Суперблок (superblock). Содержит общую информацию о файловой системе, например, об ее архитектуре, общем числе блоков и индексных дескрипторов, или метаданных (inode).
2. Массив индексных дескрипторов (ilist). Содержит метаданные всех наборов данных файловой системы. Файловая система s5fs имеет ограничение по числу файлов, которые могут храниться в ней, независимо от размера этих файлов.
3. Блоки хранения данных. Данные обычных файлов и каталогов хранятся в блоках. Блоки хранения данных занимают большую часть дискового раздела, и их число определяет максимальный суммарный объем файлов данной файловой системы. Размер блока кратен 512 байтам
Суперблок содержит следующую информацию: 1. Тип файловой системы (s_type) 2. Размер файловой системы в логических блоках, включая сам суперблок, ilist и блоки хранения данных (s_fsize) 3. Размер массива индексных дескрипторов (s_isize) 4. Число свободных блоков, доступных для размещения (s_tfree) 5. Число свободных inode, доступных для размещения (s_tinode) 6. Флаги (флаг модификации sfmod, флаг режима монтирования s_fronly) 7. Размер логического блока (512, 1024, 2048) 8. Список номеров свободных inode 9. Список адресов свободных блоков
4. Индексный дескриптор. Основные поля дискового inode следующие:
1 Тип файла, дополнительные атрибуты выполнения и права доступа. 2 Число ссылок на файл, т. е. количество имен, которые имеет файл в файловой системе. 3 Идентификаторы владельца-пользователя и владельца- группы. 4 Размер файла в байтах. Для специальных файлов это поле содержит старший и младший номера устройства. 4 Время последнего доступа к файлу. 6 Время последней модификации. 7 Время последней модификации inode (кроме модификации полей di_atime, di_mtime). 8 Массив адресов дисковых блоков хранения данных.
|