19/03/96 12:49
u_vved.lek
Морис Дж. Бах (Maurice J. Bach) "THE DESIGN OF THE
UNIX OPERATING SYSTEM" Copyright c 1986 Корпорация
Bell Telephone Laboratories. Перевод с
английского к.т.н. Крюкова А.В.
Архитектура операционной системы UNIX
ВВЕДНИЕ
UNIX - зарегистрированная торговая марка корпорации AT&T.
Впервые система UNIX была описана в 1974 году в статье Кена Томпсона и Дэнниса Ричи в журнале "Communications of the ACM". Системное описание базируется на особенностях операционной системы UNIX версия V редакция 2, распространением которой занимается корпорация AT&T, с учетом отдельных особенностей редакции 3.
Характерные особенности системы:
Система написана на языке высокого уровня, благодаря чему ее легко читать, понимать, изменять и переносить на другие машины. По оценкам, сделанным Ричи, первый вариант системы на Си имел на 20-40 % больший объем и работал медленнее по сравнению с вариантом на ассемблере, однако преимущества использования языка высокого уровня намного перевешивают недостатки.
Наличие довольно простого пользовательского интерфейса, в котором имеется возможность предоставлять все необходимые пользователю услуги.
Наличие элементарных средств, позволяющих создавать сложные программы из более простых.
Наличие иерархической файловой системы, легкой в сопровождении и эффективной в работе.
Обеспечение согласования форматов в файлах, работа с последовательным потоком байтов, благодаря чему облегчается чтение прикладных программ.
Наличие простого, последовательного интерфейса с периферийными устройствами.
Система является многопользовательской, многозадачной; каждый пользователь может одновременно выполнять несколько процессов.
Архитектура машины скрыта от пользователя, благодаря этому облегчен процесс написания программ, работающих на различных конфигурациях аппаратных средств.
СТРУКТУРА СИСТЕМЫ
Система делится на две части:
Одну часть составляют программы и сервисные функции; эта часть легко доступна пользователям, она включает такие программы, как командный процессор, обмен сообщениями, пакеты обработ ки текстов и системы обработки исходных текстов программ.
Другая часть включает в себя собственно операционную систему, поддерживающую эти программы и функции.
Далее рассматривается только собственно операционная система.
Рисунок Архитектура системы UNIX
Технические средства, показанные в центре диаграммы, выполняют функции, обеспечивающие функционирование операционной системы.
Операционная система (ее ядро) взаимодействует с аппаратурой непосредственно, обеспечивая обслуживание программ и их независимость от деталей аппаратной конфигурации.
Пользовательские и прикладные программы не зависят от аппаратуры и их легко переносить из одной системы UNIX в другую, функционирующую на другом комплексе технических средств, если только в этих программах не подразумевается работа с конкретным оборудованием.Хотя на рисунке приведена двухуровневая иерархия прикладных программ, пользователь может расширить иерархическую структуру на столько уровней, сколько необходимо.
ПРИМЕЧАНИЕ: В некоторых реализациях системы UNIX операционная система взаимодействует с собственной операционной системой, которая, в свою очередь, взаимодействует с аппаратурой и выполняет необходимые функции по обслуживанию системы. В таких реализацияхдопускается инсталляция других операционных систем с загрузкой под их управлением прикладных программ параллельно с системой UNIX.
В версии V принято 64 типа обращений к операционной системе, из которых немногим меньше половины используются часто. Они имеют несложные параметры, что облегчает их использование, предоставляя при этом большие возможности пользователю. Набор обращений к операционной системе вместе с реализующими их внутренними алгоритмами составляют "тело" ядра.
Файловая система
Файловая система UNIX характеризуется:
иерархической структурой,
согласованной обработкой массивов данных,
возможностью создания и удаления файлов,
динамическим расширением файлов,
защитой информации в файлах,
трактовкой периферийных устройств (таких как терминалы и ленточные устройства) как файлов.
Файловая система организована в виде дерева с одной исходной вершиной, которая называется корнем (записывается: "/"); каждая вершина в древовидной структуре файловой системы, кроме листьев, является каталогом файлов, а файлы, соответствующие дочерним вершинам, являются либо каталогами, либо обычными файлами, либо файлами устройств.
Рисунок. Пример древовидной структуры файловой системы
Имени файла предшествует указание пути поиска, который описывает место расположения файла в иерархической структуре файловой системы. Имя пути поиска состоит из компонент, разделенных между собой наклонной чертой (/); каждая компонента представляет собой набор символов, составляющих имя вершины (файла), которое является уникальным для каталога (предыдущей компоненты), в котором оно содержится. Полное имя пути поиска начинается с указания наклонной черты и идентифицирует файл (вершину), поиск которого ведется от корневой вершины дерева файловой системы с обходом тех ветвей дерева файлов, которые соответствуют именам отдельных компонент.
Имя пути поиска необязательно должно начинаться с корня, в нем следует указывать маршрут относительно текущего для выполняемого процесса каталога, при этом предыдущие символы "наклонная черта" в имени пути опускаются.
Программы,
выполняемые под управлением
системы UNIX, не содержат
никакойинформации относительно
внутреннего формата, в котором ядро
хранит файлыданных, данные в
программах представляются как
бесформатный поток байтов.
Программы могут интерпретировать
поток байтов по своему желанию, при
этомлюбая интерпретация никак не
будет связана с фактическим
способом хранения данных в
операционной системе.
Права доступа к файлу регулируются установкой специальных битов разрешения доступа, связанных с файлом. Устанавливая биты разрешения доступа, можно независимо управлять выдачей разрешений на чтение, запись и выполнение для трех категорий пользователей: владельца файла, группового пользователя и прочих.
Для
пользователя система UNIX трактует
устройства так, как если бы они были
файлами.
Устройства, для которых назначены
специальные файлы устройств,
становятся вершинами в структуре
файловой системы. Обращение
программ к устройствам имеет тот же
самый синтаксис, что и обращение к
обычным файлам; семантика операций
чтения и записи по отношению к
устройствам в большой степени
совпадает с семантикой операций
чтения и записи обычных файлов.
Способ защиты устройств совпадает со способом защиты обычных файлов.
Среда выполнения процессов
Программой называется исполняемый файл, а процессом называется последовательность операций программы или часть программы при ее выполнении. В системе UNIX может одновременно выполняться множество процессов (многозадачный режим), при чем их число логически не ограничивается, и множество частей программы может одновременно находиться в системе. Различные системные операции позволяют процессам порождать новые процессы, завершают процессы, синхронизируют выполнение этапов процесса и управляют реакцией на наступление различных событий.
ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ
Выполняя различные элементарныеоперации по запросам пользовательских процессов, ядро обеспечивает функционирование пользовательского интерфейса.
Среди функций ядра можно отметить:
Управление выполнением процессов посредством их создания, завершения или приостановки и организации взаимодействия между ними.
Планирование
очередности предоставления
выполняющимся процессам
времени центрального
процессора (диспетчеризация).
Процессы работают с
центральным процессором в
режиме разделения времени:
центральный процессор
выполняет процесс, по
завершении отсчитываемого
ядром кванта времени процесс
приостанавливается и ядро
активизирует выполнение
другого процесса.
Позднее ядро запускает
приостановленный процесс.
Выделение выполняемому процессу оперативной памяти. Ядро операционной системы дает процессам возможность совместно использовать участки адресного пространства на определенных условиях, защищая при этом адресное пространство, выделенное процессу, от вмешательства извне. Если системе требуется свободная память, ядро освобождает память, временно выгружая процесс на внешние запоминающие устройства, которые называют устройствами выгрузки. Если ядро выгружает процессы на устройства выгрузки целиком, такая реализация системы UNIX называется системой СО СВОПИНГОМ (подкачкой); если же на устройство выгрузки выводятся страницы памяти, такая система называется системой С ЗАМЕЩЕНИЕМ СТРАНИЦ.
Выделение внешней памяти с целью обеспечения эффективного хранения информации и выборка данных пользователя. Именно в процессе реализации этой функции создается файловая система. Ядро выделяет внешнюю память под пользовательские файлы, мобилизует неиспользуемую память, структурирует файловую систему в форме, доступной для понимания, и защищает пользовательские файлы от несанкционированного доступа.
Управление доступом процессов к периферийным устройствам, таким как терминалы, ленточные устройства, дисководы и сетевое оборудование.
ПРЕДПОЛАГАЕМАЯ АППАРАТНАЯ СРЕДА
Выполнение пользовательских процессов в системе UNIX осуществляется на двух уровнях: уровне пользователя и уровне ядра. Когда процесс производит обращение к операционной системе, режим выполнения процесса переключается с режима задачи (пользовательского) на режим ядра: операционная система пытается обслужить запрос пользователя, возвращая код ошибки в случае неудачного завершения операции. Даже если пользователь не нуждается в каких-либо определенных услугах операционной системы и не обращается к ней с запросами, система еще выполняет учетные операции, связанные с пользовательским процессом, обрабатывает прерывания, планирует процессы, управляет распределением памяти и т.д.
Основные различия между режимами:
В режиме задачи процессы имеют доступ только к своим собственным инструкциям и данным, но не к инструкциям и данным ядра (либо других процессов). Однако в режиме ядра процессам уже доступны адресные пространства ядра и пользователей.
Некоторые машинные команды являются привилегированными и вызывают возникновение ошибок при попытке их использования в режиме задачи.
Рисунок. Процессы и режимы их выполнения
Проще говоря,
любое взаимодействие с аппаратурой
описывается в терминах режима ядра
и режима задачи и протекает
одинаково для всех
пользовательских программ,
выполняющихся в этих режимах.
Операционная система хранит
внутренние записи о каждом
процессе, выполняющемся в системе.
Несмотря на то, что система
функционирует в одном из двух
режимов, ядро действует от имени
пользовательского процесса. Ядро
не является какой-то особой
совокупностью процессов,
выполняющихся параллельно с
пользовательскими, оно само
выступает составной частью любого
пользовательского процесса.
Прерывания и особые ситуации
Система UNIX позволяет таким устройства, как внешние устройства ввода-вывода и системные часы, асинхронно прерывать работу центрального процессора. По получении сигнала прерывания ядро операционной системы сохраняет свой текущий контекст (застывший образ выполняемого процесса), устанавливает причину прерывания и обрабатывает прерывание. После того, как прерывание будет обработано ядром, прерванный контекст восстановится и работа продолжится так, как будто ничего не случилось. Устройствам обычно приписываются приоритеты в соответствии с очередностью обработки прерываний.
Особые ситуации связаны с возникновением незапланированных событий,вызванных процессом, таких как недопустимая адресация, задание привилегированных команд, деление на ноль и т.д. Они отличаются от прерываний, которые вызываются событиями, внешними по отношению к процессу. Особые ситуации возникают прямо "посредине" выполнения команды, и система, обработав особую ситуацию, пытается перезапустить команду; считается, что прерывания возникают между выполнением двух команд, при этом система после обработки прерывания продолжает выполнение процесса уже начиная со следующей команды.
Для обработки прерываний и особых ситуаций в системе UNIX используется один и тот же механизм.
Уровни прерывания процессора
Ядро иногда
обязано предупреждать
возникновение прерываний во время
критических действий, могущих в
случае прерывания запортить
информацию.
Обычно имеется ряд
привилегированных команд,
устанавливающих уровень
прерывания процессора в слове
состояния процессора. Установка
уровня прерывания на определенное
значение отсекает прерывания этого
и более низких уровней, разрешая
обработку только прерываний с
более высоким приоритетом. На
Рисунке показана
последовательность уровней
прерывания. Если ядро игнорирует
прерывания от диска, в этом случае
игнорируются и все остальные
прерывания, кроме прерываний от
часов и машинных сбоев.
Рисунок. Стандартные уровни прерываний
Распределение памяти
Ядро постоянно располагается в оперативной памяти, наряду с выполняющимся в данный момент процессом (или частью его, по меньшей мере). В процессе компиляции программа-компилятор генерирует последовательность адресов, являющихся адресами переменных и информационных структур, а также адресами инструкций и функций. Компилятор генерирует адреса для виртуальной машины так, словно на физической машине не будет выполняться параллельно с транслируемой ни одна другая программа. Когда программа запускается на выполнение, ядро выделяет для нее место в оперативной памяти, при этом совпадение виртуальных адресов, сгенерированных компилятором, с физическими адресами совсем необязательно. Ядро, взаимодействуя с аппаратными средствами, транслирует виртуальные адреса в физические, т.е. отображает адреса, сгенерированные компилятором, в физические, машинные адреса. Такое отображение опирается на возможности аппаратных средств, поэтому компоненты системы UNIX, занимающиеся им, являются машинно-зависимыми.