Ядро и вспомогательные модули ОС
Принципы построения ОС.
Операционная система – это чрезвычайно сложный комплекс программ, объемом от нескольких десятков тысяч до многих миллионов команд. Особенности построения ОС определяются рядом принципов (рис.1):
1) принцип модульности;
2) принцип параметрической настраиваемости;
3) принцип функциональной избирательности;
4) принцип функциональной избыточности.
Принцип модульности состоит в том, что ОС создается из отдельных модулей. Модулем называется функционально завершенная составная часть ОС. Принцип модульности позволяет создавать различные конфигурации ОС в зависимости от конкретных структурных характеристик ЭВМ, областей их применения и потребностей пользователей.
Принцип параметрической настраиваемости: одна и та же ОС обеспечивает управление вычислительным процессом в ЭВМ одного семейства. Так как ЭВМ одного семейства может быть скомплектована в различных конфигурациях (например, различные типы процессоров, объем ОП и внешней памяти), то этот принцип позволяет настроить ОС на определенные параметры конфигурации ЭВМ.
Принцип функциональной избирательности – ОС может комплектоваться модулями, которые в наибольшей степени отвечают требованиям конкретного применения ЭВМ. На базе этого принципа создаются ОС с учетом целей, для которых используется вычислительная ЭВМ (пакетный режим, режим разделения времени, режим РМВ).
Принцип функциональной избыточности: предполагает наличие в составе ОС модулей, выполняющих одни и те же функции, но обладающих различными характеристиками (например, с одного и того же языка программирования могут транслировать разные трансляторы – с большой скоростью и малой скоростью (оптимизирующий), который дает более лучшую по структуре и объему памяти программу).
Примечание: при создании специализированных ОС (например, для АСУ РМВ ПВО) от принципов функциональной избыточности и избирательности иногда отказываются.
Для того, чтобы ОС ввести в ЭВМ и настроить по заданным параметрам, необходима специальная программа, которая называется «Генератором ОС».
Ядро и вспомогательные модули ОС
Наиболее общим подходом к структуризации ОС является разделение всех ее модулей на две группы:
· ядро – модули, выполняющие основные функции ОС;
· модули, выполняющие вспомогательные функции ОС.
Модули ядра выполняют такие базовые функции ОС, как управление процессами, памятью, устройствами ввода-вывода и т.п. Ядро составляет основу ОС, без него ОС является полностью неработоспособной и не сможет выполнить ни одну из своих функций.
В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка страниц, обработка прерываний. Эти функции недоступны для приложений.
Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами – системными вызовами – для выполнения тех или иных действий, например, для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т.д. Функции, которые могут вызываться приложениями, образуют интерфейс прикладного программирования – АРI.
Функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями ОС, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы ОС все модули ядра или большая их часть постоянно находятся в ОП, т.е. являются резидентными.
Остальные модули ОС выполняют весьма полезные, но менее обязательные функции. Например, к таким вспомогательным модулям могут быть отнесены программы архивирования данных на магнитной ленте (диске), дефрагментации диска, текстового редактора. Вспомогательные модули ОС оформляются либо в виде приложений, либо в виде библиотек процедур.
Поскольку некоторые компоненты ОС оформлены как обычные приложения, т.е. в виде исполняемых модулей стандартного для данной ОС формата, то часто бывает очень сложно провести четкую грань между ОС и приложениями.
Решение о том, является какая-либо программа частью ОС или нет, принимает производитель ОС. Среди многих факторов, способных повлиять на это решение, немаловажными являются перспективы того, будет ли программа иметь массовый спрос у потенциальных пользователей данной ОС. Некоторая программа может существовать определенное время как пользовательское приложение, а потом стать частью ОС, или наоборот.
Вспомогательные модули ОС обычно подразделяются на следующие группы:
· утилиты – программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования данных на магнитную ленту;
· системные обрабатывающие программы – текстовые или графические редакторы, компиляторы, компоновщики, отладчики;
· программы предоставления пользователю дополнительных услуг – специальный вариант пользовательского интерфейса, калькулятор, игры и др.;
· библиотеки процедур различного назначения, упрощающие разработку приложений, например, библиотека математических функций, функций ввода-вывода и т.д.
Как и обычные приложения, для выполнения своих задач утилиты, обрабатывающие программы и библиотеки ОС, обращаются к функциям ядра посредством системных вызовов (рис.2).
Рис. 2. Взаимодействие между ядром и вспомогательными модулями ОС
Разделение ОС на ядро и модули-приложения обеспечивает легкую расширяемость ОС. Чтобы добавить новую высокоуровневую функцию, достаточно разработать новое приложение, и при этом не требуется модифицировать ответственные функции, образующие ядро системы. Однако внесение изменений в функции ядра может оказаться гораздо сложнее, и сложность эта зависит от структурной организации самого ядра. В некоторых случаях каждое исправление ядра может потребовать его полной перекомпиляции.
Модули ОС, оформленные в виде утилит, системных обрабатывающих программ и библиотек, обычно загружаются в ОП только на время выполнения своих функций, т.е. являются транзитными.
Постоянно в ОП располагаются только самые необходимые коды ОС, составляющие ее ядро. Такая организация ОС экономит ОП компьютера.
Важным свойством архитектуры ОС, основанной на ядре, является возможность защиты кодов и данных ОС за счет выполнения функций ядра в привилегированном режиме.
Привилегированный режим работы ОС
Для надежного управления ходом выполнения приложений ОС должна иметь по отношению к приложениям определенные привилегии. Иначе некорректно работающее приложение может вмешаться в работу ОС и, например, разрушить часть ее кодов.
Кроме того ОС должна обладать исключительными полномочиями также и для того, чтобы играть роль арбитра в споре приложений за ресурсы компьютера в мультипрограммном режиме. Ни одно из приложений не должно иметь возможности без ведома ОС получать дополнительную область памяти, занимать процессор дольше разрешенного ОС периода времени, непосредственно управлять совместно используемыми внешними устройствами.
Обеспечить привилегии ОС невозможно без специальных средств аппаратной поддержки. Аппаратура компьютера должна поддерживать как минимум два режима работы – пользовательский режим (user mode) и привилегированный режим, который также называют режимом ядра (kernel mode), или режим супервизора (supervisor mode). Подразумевается, что ОС или некоторые ее части работают в привилегированном режиме, а приложения – в пользовательском режиме.
Поскольку ядро выполняет все основные функции ОС, то чаще всего именно ядро становится той частью ОС, которая работает в привилегированном режиме. Приложения ставятся в подчиненное положение за счет запрета выполнения в пользовательском режиме некоторых критичных команд, связанных с переключением процессора с задачи на задачу, управлением устройствами ввода-вывода, доступом к механизмам распределения и защиты памяти.
Выполнение некоторых инструкций в пользовательском режиме запрещается безусловно (очевидно, что к таким инструкциям относится инструкция перехода в привилегированный режим), тогда как другие запрещается выполнять только при определенных условиях. Например, инструкции ввода-вывода могут быть запрещены приложениям при доступе к контроллеру жесткого диска, который хранит данные, общие для ОС и всех приложений, но разрешены при доступе к последовательному порту, который выделен в монопольное владение для определенного приложения. Важно, что условия разрешения выполнения критичных инструкций находятся под полным контролем ОС и этот контроль обеспечивается за счет набора инструкций, безусловно запрещенных для пользовательского режима.
Аналогичным образом обеспечиваются привилегии ОС при доступе к памяти. Например, выполнение инструкции доступа к памяти для приложения разрешается, если инструкция обращается к области памяти, отведенной данному приложению ОС, и запрещается при обращении к областям памяти, занимаемым ОС или другими приложениями. Полный контроль ОС над доступом к памяти достигается за счет того, что инструкция или инструкции конфигурирования механизмов защиты памяти (например, изменения ключей защиты памяти в мэйнфреймах IBM или указателя таблицы дескрипторов памяти в процессорах Pentium) разрешается выполнять только в привилегированном режиме.
Очень важно, что механизмы защиты памяти используются ОС не только для защиты своих областей памяти от приложений, но и для защиты областей памяти, выделенных ОС какому-либо приложению, от остальных приложений. Говорят, что каждое приложение работает в своем адресном пространстве. Это свойство позволяет локализовать некорректно работающее приложение в собственной области памяти, так что его ошибки не оказывают влияния на остальные приложения и ОС.
Рис. 7. Смена режимов при выполнении вызова к привилегированному ядру
Повышение устойчивости ОС, обеспечиваемое переходом ядра в привилегированный режим, достигается за счет некоторого замедления выполнения системных вызовов. Системный вызов привилегированного ядра инициирует переключение процессора из пользовательского режима в привилегированный, а при возврате к приложению – обратно в пользовательский (рис.7).
Архитектура ОС, основанная на привилегированном ядре и приложениях пользовательского режима, стала по существу, классической. Ее используют многие популярные ОС, в том числе многочисленные версии UNIX, VAX VMS, IBM OS/390, OS/2, и с определенными модификациями - Windows NT.
Дата добавления: 2017-01-29; просмотров: 5757;