Основные различия между этими двумя режимами:
В режиме задачи процессы имеют доступ только к своим собственным инструк- циям и данным, но не к инструкциям и данным ядра (либо других процессов). Однако в режиме ядра процессам уже доступны адресные пространства ядра и пользователей. Например, виртуальное адресное пространство процесса может быть поделено на адреса, доступные только в режиме ядра, и на адреса, доступные в любом режиме.
Некоторые машинные команды являются привилегированными и вызывают возникновение ошибок при попытке их использования в режиме задачи. Например, в машинном языке может быть команда, управляющая регистром состояния
процессора; процессам, выполняющимся в режиме задачи, она недоступна.
Процессы
A B C D
Режим ядра | Я | Я |
Режим задачи | З | З |
Рисунок 1.5. Процессы и режимы их выполнения
Проще говоря, любое взаимодействие с аппаратурой описывается в терминах
режима ядра и режима задачи и протекает одинаково для всех пользовательских
программ, выполняющихся в этих режимах. Операционная система хранит внутренние записи о каждом процессе, выполняющемся в системе. На Рисунке 1.5 показано это разделение: ядро делит процессы A, B, C и D, расположенные вдоль
горизонтальной оси, аппаратные средства вводят различия между режимами выполнения, расположенными по вертикали.
Несмотря на то, что система функционирует в одном из двух режимов, ядро
действует от имени пользовательского процесса. Ядро не является какой-то
особой совокупностью процессов, выполняющихся параллельно с пользовательскими, оно само выступает составной частью любого пользовательского процесса.
Сделанный вывод будет скорее относиться к "ядру", распределяющему ресурсы,
или к "ядру", производящему различные операции, и это будет означать, что
процесс, выполняемый в режиме ядра, распределяет ресурсы и производит соответствующие операции. Например, командный процессор shell считывает вводной
поток с терминала с помощью запроса к операционной системе. Ядро операцион-ной системы, выступая от имени процессора shell, управляет функционированием
терминала и передает вводимые символы процессору shell. Shell переходит в
режим задачи, анализирует поток символов, введенных пользователем и выполняет заданную последовательность действий, которые могут потребовать выполнения и других системных операций.
5.1 Прерывания и особые ситуации
Система UNIX позволяет таким устройства, как внешние устройства ввода-вывода и системные часы, асинхронно прерывать работу центрального процессора. По получении сигнала прерывания ядро операционной системы сохраняет
свой текущий контекст (застывший образ выполняемого процесса), устанавливает
причину прерывания и обрабатывает прерывание. После того, как прерывание будет обработано ядром, прерванный контекст восстановится и работа продолжится
так, как будто ничего не случилось. Устройствам обычно приписываются приоритеты в соответствии с очередностью обработки прерываний. В процессе обработки прерываний ядро учитывает их приоритеты и блокирует обслуживание прерывания с низким приоритетом на время обработки прерывания с более высоким приорите-том.
Особые ситуации связаны с возникновением незапланированных событий, вызванных процессом, таких как недопустимая адресация, задание привилегированных команд, деление на ноль и т.д. Они отличаются от прерываний, которые вызываются событиями, внешними по отношению к процессу. Особые ситуации
возникают прямо "посредине" выполнения команды, и система, обработав особую ситуацию, пытается перезапустить команду; считается, что прерывания возникают
между выполнением двух команд, при этом система после обработки прерывания
продолжает выполнение процесса уже начиная со следующей команды. Для обработки прерываний и особых ситуаций в системе UNIX используется один и тот же
механизм.
5.2 Уровни прерывания процессора
Ядро иногда обязано предупреждать возникновение прерываний во время критических действий, могущих в случае прерывания запортить информацию. Например, во время обработки списка с указателями возникновение прерывания от
диска для ядра нежелательно, т.к. при обработке прерывания можно запортить
указатели, что можно увидеть на примере в следующей главе. Обычно имеется
ряд привилегированных команд, устанавливающих уровень прерывания процессора
в слове состояния процессора. Установка уровня прерывания на определенное
значение отсекает прерывания этого и более низких уровней, разрешая обработку только прерываний с более высоким приоритетом. На Рисунке 1.6 показана
последовательность уровней прерывания. Если ядро игнорирует прерывания от
диска, в этом случае игнорируются и все остальные прерывания, кроме прерываний от часов и машинных сбоев.
Рисунок 1.6. Стандартные уровни прерываний
5.3 Распределение памяти
Ядро постоянно располагается в оперативной памяти, наряду с выполняющимся в данный момент процессом (или частью его, по меньшей мере). В процессе
компиляции программа-компилятор генерирует последовательность адресов, являющихся адресами переменных и информационных структур, а также адресами инструкций и функций. Компилятор генерирует адреса для виртуальной машины так,
словно на физической машине не будет выполняться параллельно с транслируемой
ни одна другая программа.
Когда программа запускается на выполнение, ядро выделяет для нее место в
оперативной памяти, при этом совпадение виртуальных адресов, сгенерированных
компилятором, с физическими адресами совсем необязательно. Ядро, взаимодейс-твуя с аппаратными средствами, транслирует виртуальные адреса в физические,
т.е. отображает адреса, сгенерированные компилятором, в физические, машинные
адреса. Такое отображение опирается на возможности аппаратных средств, поэтому компоненты системы UNIX, занимающиеся им, являются машинно-зависимыми.
Например, отдельные вычислительные машины имеют специальное оборудование для подкачки выгруженных страниц памяти.
6. ВЫВОДЫ
В работе были описаны полная структура системы UNIX, взаимоотношения между процессами, выполняющимися в режиме задачи и в режиме ядра, а также аппаратная среда функционирования ядра операционной системы. Процессы выполняются в режиме задачи или в режиме ядра, в котором они пользуются услугами системы благодаря наличию набора обращений к операционной системе. Архитектура системы поддерживает такой стиль программирования, при котором из небольших программ, выполняющих только отдельные функции, но хорошо, составляются более сложные программы, использующие механизм каналов и переназначение ввода-вывода.
Обращения к операционной системе позволяют процессам производить операции, которые иначе не выполняются. В дополнение к обработке подобных обращений ядро операционной системы осуществляет общие учетные операции, управляет планированием процессов, распределением памяти и защитой процессов в оперативной памяти, обслуживает прерывания, управляет файлами и устройствами и обрабатывает особые ситуации, возникающие в системе. В функции ядра системы UNIX намеренно не включены многие функции, являющиеся частью других операционных систем, поскольку набор обращений к системе позволяет процессам выполнять все необходимые операции на пользовательском уровне.
Списоклитературы
THE DESIGN OF THE UNIX OPERATING SYSTEM by Maurice J. Bach («МорисДж. Бах. Архитектура операционной системы Unix»Перевод с английского к.т.н. Крюкова А.В.) Copyright c 1986 Корпорация Bell Telephone Laboratories. Изданокорпорацией Prentice-Hall. Отделение Simon & Schuster Энглвуд Клиффс, Нью-Джерси 07632
Кристиан К. Операционная система UNIX. - М., Финансы и статистика, 1985, 320 стр.
Баурн С. Операционная система UNIX. - М., Мир, 1986, 464 стр.
Aho A.V., Kernighan B.W., Weinberger P.J. Awk - A Pattern Scanning and Text Processing Language (2d Edition). - Bell Labs, Murray Hill, N.J.
Feldman S.I. Make - a program for maintaining computer programs. - Bell Labs, Murray Hill, N.J. (атакжевжурнале Software - Practice and Experience, vol.9).
(*) Организации, получившие права на перепродажу с надбавкой к цене за дополнительные услуги, оснащают вычислительную систему прикладными программами, касающимися конкретных областей применения, стремясь удовлетворить требования рынка. Такие организации чаще продают прикладные программы, нежели операционные системы, под управлением которых эти программы работают.
(** ) А что же версия IV ? Модификация внутреннего варианта системы получила название "версия V".
(***) В некоторых реализациях системы UNIX операционная система взаимодействует с обствен-ной операционной системой, которая, в свою очередь, взаимодействует с аппаратурой и выполняет необходимые функции по обслуживанию системы. В таких реализациях допускается инсталляция других операционных систем с загрузкой под их управлением прикладных программ параллельно с системой UNIX. Классическим примером подобной реализации явилась система MERT [Lycklama 78a]. Более новым примером могут служить реализации для компьютеров серии IBM 370 [Felton 84] и UNIVAC 100 [Bodenstab 84].
(****)Каталог "/bin" содержит большинство необходимых команд и обычно входит в число каталогов, в которых ведет поиск командный процессор shell.