Ядро в привилегированном режиме

Для надежного управления ходом выполнения приложений операционная система должна иметь по отношению к приложениям определенные привилегии. Иначе некорректно работающее приложение может вмешаться в работу ОС и, например, разрушить часть ее кодов. Все усилия разработчиков операционной системы окажутся напрасными, если их решения воплощены в незащищенные приложений модули системы, какими бы элегантными и эффективными эти решения ни были. Операционная система должна обладать исключительными полномочиями также для того, чтобы играть роль арбитра в споре приложений за ресурсы компьютера в мультипрограммном режиме. Ни одно приложение не должно иметь возможности без ведома ОС получать дополнительную область памяти, занимать процессор дольше разрешенного операционной системой периода времени, непосредственно управлять совместно используемыми внешними устройствами.

Обеспечить привилегии операционной системе невозможно без специальных средств аппаратной поддержки. Аппаратура компьютера должна поддерживать как минимум два режима работы — пользовательский режим (user mode) и привилегированный режим, который также называют режимом ядра (kernel mode), или режимом супервизора (supervisor mode). Подразумевается, что операционная система или некоторые ее части работают в привилегированном режиме, а приложения — в пользовательском режиме.

Так как ядро выполняет все основные функции ОС, то чаще всего именно ядро становится той частью ОС, которая работает в привилегированном режиме (рис. 3.3). Иногда это свойство — работа в привилегированном режиме — служит основным определением понятия «ядро».

Приложения ставятся в подчиненное положение за счет запрета выполнения в пользовательском режиме некоторых критичных команд, связанных с переключением процессора с задачи на задачу, управлением устройствами ввода-вывода, доступом к механизмам распределения и защиты памяти. Выполнение некоторых инструкций в пользовательском режиме запрещается безусловно (очевидно, что к таким инструкциям относится инструкция перехода в привилегированный режим), тогда как другие запрещается выполнять только при определенных условиях. Например, инструкции ввода-вывода могут быть запрещены приложениям при доступе к контроллеру жесткого диска, который хранит данные, общие для ОС и всех приложений, но разрешены при доступе к последовательному порту, который выделен в монопольное владение для определенного приложения. Важно, что условия разрешения выполнения критичных инструкций находятся под полным контролем ОС и этот контроль обеспечивается за счет набора инструкций, безусловно запрещенных для пользовательского режима.

Аналогичным образом обеспечиваются привилегии ОС при доступе к памяти. Например, выполнение инструкции доступа к памяти для приложения разрешается, если инструкция обращается к области памяти, отведенной данному приложению операционной системой, и запрещается при обращении к областям памяти, занимаемым ОС или другими приложениями. Полный контроль ОС над доступом к памяти достигается за счет того, что инструкция или инструкции конфигурирования механизмов защиты памяти (например, изменения ключей защиты памяти в мэйнфреймах IBM или указателя таблицы дескрипторов памяти в процессорах Pentium) разрешается выполнять только в привилегированном режиме.

Очень важно, что механизмы защиты памяти используются операционной системой не только для защиты своих областей памяти от приложений, но и для защиты областей памяти, выделенных ОС какому-либо приложению, от остальных приложений. Говорят, что каждое приложение работает в своем адресном пространстве. Это свойство позволяет локализовать некорректно работающее приложение в собственной области памяти, так что его ошибки не оказывают влияния на остальные приложения и операционную систему. Между количеством уровней привилегий, реализуемых аппаратно, и количеством уровней привилегий, поддерживаемых ОС, нет прямого соответствия. Так, на базе четырех уровней, обеспечиваемых процессорами компании Intel, операционная система OS/2 строит трехуровневую систему привилегий, а операционные системы Windows NT, UNIX и некоторые другие ограничиваются двухуровневой системой.

С другой стороны, если аппаратура поддерживает хотя бы два уровня привилегий, то ОС может на этой основе создать программным способом сколь угодно развитую систему защиты.

Эта система может, например, поддерживать несколько уровней привилегий, образующих иерархию. Наличие нескольких уровней привилегий позволяет более тонко распределять полномочия как между модулями операционной системы, так и между самими приложениями. Появление внутри операционной системы более привилегированных и менее привилегированных частей позволяет повысить устойчивость ОС к внутренним ошибкам программных кодов, так как такие ошибки будут распространяться только внутри модулей с определенным уровнем привилегий. Дифференциация привилегий в среде прикладных модулей позволяет строить сложные прикладные комплексы, в которых часть более привилегированных модулей может, например, получать доступ к данным менее привилегированных модулей и управлять их выполнением. На основе двух режимов привилегий процессора ОС может построить сложную систему индивидуальной защиты ресурсов, примером которой является типичная система защиты файлов и каталогов. Такая система позволяет задать для любого пользователя определенные права доступа к каждому из файлов и каталогов.

Повышение устойчивости операционной системы, обеспечиваемое переходом ядра в привилегированный режим, достигается за счет некоторого замедления выполнения системных вызовов. Системный вызов привилегированного ядра инициирует переключение процессора из пользовательского режима в привилегированный, а при возврате к приложению — переключение из привилегированного режимав пользовательский (рис. 3.4). Во всех типах процессоров из-за дополнительной двукратной задержки переключения переход на процедуру со сменой режима выполняется медленнее, чем вызов процедуры без смены режима.

Архитектура ОС, основанная на привилегированном ядре и приложениях пользовательского режима, стала, по существу, классической. Ее используют многие популярные операционные системы, в том числе многочисленные версии UNIX, VAX VMS, IBM OS/390, OS/2, и с определенными модификациями — Windows NT.

В некоторых случаях разработчики ОС отступают от этого классического варианта архитектуры, организуя работу ядра и приложений в одном и том же режиме. Так, известная специализированная операционная система NetWare компании Novell использует привилегированный режим процессоров Intel x86/ Pentium как для работы ядра, так и для работы своих специфических приложений — загружаемых модулей NLM (рис. 3.5). При таком построении ОС обращения приложений к ядру выполняются быстрее, так как нет переключения режимов, однако при этом отсутствует надежная аппаратная защита памяти, занимаемой модулями ОС, от некорректно работающего приложения. Разработчики NetWare пошли на такое потенциальное снижение надежности своей операционной системы, поскольку ограниченный набор ее специализированных приложений позволяет компенсировать этот архитектурный недостаток за счет тщательной отладки каждого приложения.

В одном режиме работают также ядро и приложения тех операционных систем, которые разработаны для процессоров, вообще не поддерживающих привилегированного режима работы. Наиболее популярным процессором такого типа был процессор Intel 8088/86, послуживший основой для персональных компьютеров компании IBM. Операционная система MS-DOS, разработанная компанией Microsoft для этих компьютеров, состояла из двух модулей msdos.sys и io.sys, составлявших ядро системы (хотя название «ядро» для этих модулей не употреблялось, по своей сути они им являлись), к которым с системными вызовами обращались командный интерпретатор command.com, системные утилиты и приложения. Архитектура MS-DOS соответствует архитектуре ОС, приведенной на рис. 3.2. Некорректно написанные приложения вполне могли разрушить основные модули MS-DOS, что иногда и происходило, но область использования MS-DOS (и многих подобных ей ранних операционных систем для персональных компьютеров, таких как MSX, СР/М) и не предъявляла высоких требований к надежности ОС.

Суть микроядерной архитектуры состоит в том, что в привилегированном режиме работает только микроядро, в состав которого входят машинно-зависимые модули и часть базовых функций ядра. Утилиты и обрабатывающие программы вызываются в основном пользователем. Исключительные ситуации обслуживания приложением запросов других приложений обрабатываются специальными модулями, называемыми серверами ОС, поэтому необходимым условием реализации микроядерной архитектуры является наличие эффективного способа вызова процедур одного процесса из другого процесса. Поддержка этого механизма – главная задача микроядра. Реализация системного вызова в микроядерной архитектуре изображена на рис. 6.

Клиент, которым может быть любая прикладная программа (1) либо другой компонент ОС (2), запрашивает выполнение некоторой функции у соответствующего сервера. Непосредственная передача сообщений между приложениями невозможна, так как их адресные пространства изолированы друг от друга. Микроядро, работающее в привилегированном режиме, имеет доступ к адресным пространствам каждого из приложений, поэтому выступает в роли проводника (архитектура клиент-сервер).

Преимущества микроядерной архитектуры:

1. Высокая мобильность;

2. Высокая степень расширяемости (конфигурируемость ОС упрощается);

3. Повышение надёжности – каждый сервер выполняется в виде отдельного процесса в своей собственной области памяти, и, таким образом, защищён от других серверов; так как код микроядра меньше, чем код ядра, то и отлаживать его легче.

Недостаток микроядерной архитектуры состоит в снижении производительности примерно на 40% по сравнению с классической архитектурой.

Многие современные операционные системы совмещают в себе свойства систем разных типов. Например, часть задач исполняется в режиме разделе­ния времени, а часть — в режиме реального времени.

При классификации по типу ядра основываются на разновидностях архитектуры ядра, приведенных ниже:

· Монолитное ядро. Такое ядро компонуется как одна программа, работаю­щая в привилегированном режиме и использующая быстрые переходы с одной процедуры на другую (рис. 4, а).

· Слоистое ядро. В этом случае компоненты операционной системы обра­зуют уровни с хорошо продуманной функциональностью и интерфейсом. Как и в предыдущем случае, компоненты работают в привилегированном режиме (рис. 4, б).

· Микроядро. Микроядро выполняет минимум функций по управлению ап­паратурой. Обычно в него включаются машинно-зависимые программы, некоторые функции управления процессами и обработка прерываний. Функции более высокого уровня выполняют специализированные ком­поненты операционной системы — сервер процессора, файловый сервер и т. п. Эти компоненты работают в пользовательском, непривилегиро­ванном режиме. Данная архитектура основана на подходе «клиент-сер­вер» и характеризуется переносимостью, расширяемостью и надежностью (рис. 4, в).

· Экзоядро. Основная идея данной архитектуры заключается в том, что операционную систему можно собрать, подобно сборке программы, с ис­пользованием большой библиотеки функций. В результате она будет включать лишь минимально необходимый набор для некоторой совокуп­ности приложений. Этот тип архитектуры ядра сейчас набирает популяр­ность.

Отметим, что архитектура ядра в значительной степени влияетна всю архи­тектуру операционной системы.

Контрольные вопросы: Может ли компьютер работать без ОС? 1. Дайте сравнительный анализ двух типов архитектуры ОС. 2. Какие из приведенных ниже терминов являются синонимами?
  1. привилегированный режим;
  2. защищенный режим;
  3. режим супервизора;
  4. пользовательский режим;
  5. реальный режим;
  6. режим ядра.

Ответ: «привилегированный режим», «режим супервизора», «режим ядра». 3. В чем состоят отличия в работе процессора в привилегированном и пользовательском режимах? 4. В идеале микроядерная архитектура ОС требует размещения в микроядре только тех компонентов ОС, которые не могут выполняться в пользовательском режиме. Что заставляет разработчиков операционных систем отходить от этого принципа и расширять ядро за счет перенесения в него функций, которые могли бы быть реализованы в виде процессов-серверов? Ответ: 7. Стремление повысить производительность системы.

Рис. 4. Классификация по типу архитектуры ядра

Домашнее задание:
  1. Конспект лекций
  2. Подготовиться к итоговой работе

Лекция 5 (2/10)

Проверка Д/З: 1). У 3 чел. Проверить конспекты 2). Итоговая письменная работа

Раздел 2. МАШИННО-ЗАВИСИМЫЕ СВОЙСТВА

Дата добавления: 2013-12-12 ; Просмотров: 2063 ; Нарушение авторских прав?

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

ЯДРО В ПРИВИЛЕГИРОВАННОМ РЕЖИМЕ

ЯДРО. МОДУЛИ ОС

Некоторые ОС выполнены так, что ядро содержит лишь 1 модуль, в этом случае изменение свойств ядра весьма сложно (Linux). Другие ядра содержат несколько модулей, они называются микроядерными (напр.Word 2000).

Функции ядра

В состав ядра входят функции, выполняющие внутрисистемные задачи организации вычислительных процессов: переключение контекстов, загрузка-выгрузка страниц, обработка прерываний. Эти функции недопустимы для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них прикладную программную среду. Приложения могут обращаться к ядру с запросами, т.е. системными вызовами для выполнения тех или иных задач, напр. Чтение – открытие файлов; вывод графической информации на дисплей. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программинга. Функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями ОС, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы ОС все модули ядра (их большая часть) постоянно находятся в оперативной памяти, т.е. являются резидентными. Ядро является движущей силой всего вычислительного процесса, поэтому особенно важно обеспечить его надежность (защищенность). Часто ядро оформлено в виде модуля специального формата, отличающегося от формата пользовательских приложений. Ядро вычислительной системы– это аппаратные средства, в которые входят процессор и память. Современные ОС состоят не только из программ, а содержат аппаратные средства самого процессора.

Вспомогательные модули

1) Утилиты – это программы, решающие отдельные задачи управления и сопровождения компьютерной сист, такие как: программа сжатия дисков, архивации данных и т.д.

2) Системные обрабатывающие программы: текстовые и графические редакторы, компиляторы, компоновщики и т.д.

3) Программы, предоставляющие пользователю дополнительные услуги: специальные программы пользовательского интерфейса, игры и т.д.

4) Библиотеки процедур различного назначения, упрощающие разработку приложений.

Как и обычные приложения, для выполнения своих задач утилиты и обрабатывающие программы и библиотеки ОС обращаются к функциям ядра посредством системных вызовов. Разделение ОС на ядро и приложение обеспечивает легкую расширяемость ОС. Например, чтобы добавить новую высокоуровневую функцию достаточно разработать новое приложение, при этом не требуется модифицировать ответственные функции, образующие ядро системы. Внесение изменений в функции ядра может оказаться гораздо сложнее. В некоторых случаях такое изменение может потребовать его полной перекомпиляции. Модули ОС, которые оформлены в виде утилит, системных обработчиков программ и библиотек, обычно загружаются в оперативную память только для выполнения своих функций, т.е. являются транзитными. Постоянно в оперативной памяти находятся только самые необходимые коды ОС, составляющие ее ядро. Такая организация экономит оперативную память компьютера. Важным свойством архитектуры ОС, построенной на ядре, является возможность защиты кодов и данных ОС за счет использования ядра в привилегированном режиме.

ЯДРО В ПРИВИЛЕГИРОВАННОМ РЕЖИМЕ

Для надежного выполнения кода вычислительного процесса ОС должна иметь по отношению к приложениям привелегии, иначе некорректно работающее приложение может разрушить часть кода. Поэтому ОС должна обладать полномочиями, а так же для того, чтобы играть роль «арбитра в споре» приложений за ресурсы системы. Ни одно из приложений не должно иметь возможность без ведома ОС получить дополнительную область памяти, занимать процессор дольше разрешенного времени, управлять совместно используемыми внешними устройствами. Также привелегии можно обеспечить без специальных средств аппаратной поддержки. Аппаратура ПК должна поддерживать как минимум 2 режима работы: Пользовательский режим и Привилегированный режим (режим ядра). Приложение ставится в подготовительное положение за счет запрета воспроизведения в привилегированном режиме некоторых критических команд, связанных с переключением процессора с задачи на задачу, управлением устройства ввода-вывода, доступа к механизмам распределения и защиты памяти. Выполнение некоторых команд в пользовательском режиме запрещается (например команда перехода из польз. режима в привилегированный и обратно). Тогда как другие программы могут быть запрещены для выполнения в определенных условиях. Например, команды вв-выв могут быть запрещены при доступе к контроллеру жесткого диска, который хранит данные, общие для ОС и приложений. Если какому-то приложению требуется последовательный порт, то ОС может разрешить его. Условие выполнения критической команды находится под полным контролем ОС. Контроль обеспечивается за счет набора команд, защищенных в пользовательском режиме. Аналогичным способом обеспечиваются привелегии ОС при доступе к памяти. Например, выполнение команды доступа к памяти для приложения разрешается, если команда обращается к области, отведенной для данного приложения; и запрещается, если такое обращение происходит в области, где расписаны коды самой ОС. Полный контроль ОС над доступом к памяти достигается за счет того, что команды конфигурирования механизма защиты памяти (напр., команды, управляющие указателем таблицы дескриптеров памяти) разрешается выполнять только в привилегированном режиме. Важно, что ОС ограничивает обращение не только к своим областям, но и к областям, используемым другими приложениями. В этом случае говорят, что каждая программа выполняется в своем адресном пространстве. Это свойство позволяет локализовать некорректно работающее приложение и обеспечить т.о. общую стабильность работы ОС.

СТРУКТУРА ЯДРА

Состоит из следующих слоев:

1) Средства аппаратной поддержки ОС. К ОС относят не все аппаратные средства компьютера, а только средства ее аппаратной поддержки, т.е. те, которые прямо участвуют в организации вычислительного процесса: — средства поддержки привилегированного режима; — система прерываний; — средства переключения контекстов процессов; — средства защиты области памяти.

2) Машинно-зависимые компоненты ОС (интегрированная схема, выполняющая определенные функции), низкоуровневый код (непосредственно с микросхемами), микрокод. Слоистая структура ядра делает всю ОС расширяемой (открытой), сл-но изменение какого либо из слоев ядра не затрагивает другие ее части.

3) Слой базовые механизмы – выполняет основные функции ядра (низкоуровневые: переключение контекстов процессора; загрузка-выгрузка страниц памяти; низкоуровневые операции вв-вывода), ведет осн. таблицы. В этом слое не принимаются никакие решения относительно действий ядра в какой-либо ситуации; а выполняет лишь те директивы, которые приняты на более высоких слоях.

4) Менеджеры ресурсов (диспетчеры ресурсов) – состоят из модулей, решающих задачи по управлению основными ресурсами ОС.

— процессор, а точнее время, которое выделяется на определенные задачи;

Обычно на данном слое работают диспетчеры процессов, основной задачей которых является учет имеющихся ресурсов, освобождение и их распределение между потребителями (процессами). Каждый из менеджеров ведет учет ресурсов строго определенного типа и планирует их распределение в соответствии с запросами приложений. Напр., менеджер виртуальной памяти управляет перемещениями страниц из оперативной памяти на диск и обратно. Этот менеджер должен отслеживать интенсивность обращения к страницам, время пребывания в памяти, состояния процессов, использующих данные и многие другие параметры, на основании которых он время от времени принимает решения о том, какие страницы выгрузить, а какие загрузить. Все менеджеры используют табличную структуру. Для исполнения принятых решений менеджер обращается к нижестоящему слою базовых механизмов с запросами о загрузке-выгрузке конкретной страницы. Внутри слоя существуют тесные взаимные связи, отображающие тот факт, что для выполнения процессу нужен доступ единовременно к нескольким ресурсам, а именно: процессору, области памяти, к определенному файлу или устройству вв-выв. Напр., при создании процесса менеджер процессов обращается к менеджеру памяти, который должен выделить процессу определенную область памяти для его кодов и данных.

5) Интерфейс системных вызовов – является самым верхним слоем ядра, он взаимодействует непосредственно с приложениями, системными утилитами и образует прикладной программный интерфейс (API). Функции API (обслуживание системных вызовов) предоставляют доступ к ресурсам системе в удобной и компактной форме. Для осуществления таких действий системные вызовы обычно обращаются за помощью к функциям менеджеров ресурсов, причем для выполнения одного системного вызова может потребоваться несколько таких обращений.

Ядро в привилегированном режиме

Компоненты ОС д.им. некоторые привилегии по отношению к приложениям. ОС должна обладать исключительными полномочиями в борьбе приложений за ресурсы. Ни одно приложение не должно, без ведома ОС, получать дополнительную память, занимать процессор, непосредственно управлять всеми устройствами.

Аппаратура компа должна поддерживать не менее двух режимов (пользовательский и режим ядра).

Выполнение некоторых инструкций запрещено в пользовательском режиме (переключиться в режим привилегированный или пользовательский). Полный контроль ОС над доступом к памяти достигается за счет конфигурирования механизмов защиты памяти и выполняется только в привилегированном режиме. Количество уровней привилегий для аппаратуры и ОС м.б. различно.

На основе двух привилегий процессора строится система индивидуальной защиты ресурсов. Системный вызов привилегированного ядра инициирует переключение процессора из пользовательского режима в привилегированный, а при возврате в приложение переключение обратное.

Структура ОС.

Вычислительная система, работающая под управлением ОС на основе ядра, рассматривается как многослойная структура. Пример 3 слойная: 3-утилиты и обрабатывающие программы; 2-ядро; 1 аппаратура. Отдельный модуль может выполнить свою работу самостоятельно или обратиться к другому модулю своего слоя или обратиться за помощью к ниже лежащему слою через межслойный интерфейс. Ядро можно рассмотреть как несколько слоев

1. Средства аппаратной поддержки. Самый распространенный вид-это система прерываний, средства защиты памяти.

2. Машинно-зависимые компоненты. Этот слой экранирует вышележащие слои от особенности аппаратуры, т.е. вышележащие слои должны быть аппаратно-независимыми.

3. Базовые механизмы ядра. Пример: программное переключение процесса, диспетчеризация прерываний, перемещение страниц (из памяти ни диск и обратно). Модули этого слоя не принимают решений о распределении ресурсов, они образуют принятые на веру решения.

4. Менеджеры ресурсов.Этот слой образован модулями, которые реализуют стратегические задачи управления основными ресурсами. Пример: менеджер или диспетчер процесса, ввод/вывод файловой системы, оперативная память.

5. Интерфейс системных вызовов.Этот верхний слой ядра непосредственно взаимодействует с приложениями и системными утилитами, образуя прикладной программный интерфейс операционной системы. Пример: операционная система ”Юникс” имеет не упорядоченное ядро с небольшим количеством четко выделенных слоев. Операционная система Windows NT ядро разделено на большое количество слоев и взаимодействие формализовано в большей степени.

Разбиение ядра на слои условное. Ос прошли долгий путь эволюционного развития. Слои выделены нечетко и ядро является неупорядоченным. Ядро разделено на большое число слоев. Их взаимодействие жестко формализовано (Windows NT).

Аппаратная зависимость и переносимость операционной системы.

Многие операционные системы работают на различных аппаратных платформах без существенных изменений в своем составе.

Средства аппаратной поддержки ОС

Вопрос о границе между ПО и АО устанавливают разработчики. Современные аппаратные платформы имеют типовой набор средств аппаратной поддержки ОС:

1* средства поддержки привилегированного режима

Основан на системном регистре процессора: словосостояние процессора PSW. Регистр содержит , определяющий режим работы процессора. В том числе текущий режим привилегий.

2* средства трансляции адресов. Это средства преобразования виртуального адреса в физический.

3* средства переключения процессов. Предназначены для быстрого сохранения контекста переключаемого процесса и восстановление процесса.

4* система прерываний. Позволяет ПК реагировать на внешние события, синхронизировать выполнение процессов и работу устройств вв/выв, а так же быстро переключаться с одного процесса на другой.

Переход на процедуру обработки прерываний сопровождается заменой словосостояния процессора. Это позволяет одновременно с переходом на обработку прерываний изменять режим работы процессора (пользоват, привелег).

5* системный таймер. Прерывания от таймера используются ОС для слежения за расходом времени отдельными процессами.

6* Средства защиты областей памяти. Обеспечивают на аппаратном уровне проверку защиты областей памяти.

Машинно-зависимые компоненты.

Одной и той же ОС без изменений не может устанавливаться на компьютерах с различным типом процессора или различной архитектурой. Операционную систему можно спроектировать так, что часть модулей будут машинозависисимыми, а остальные не будут зависеть от аппаратуры.

Если код операционной системы легко переносится с процессора одного типа на другой, то такую операционную систему называют переносимой или мобильной. Для обеспечения переносимости разработчики операционных систем должны придерживаться следующих правил:

1. Большая часть кода должна быть написана на языке трансляторы с которого имеется на всех машинах.

2. Должна исключаться возможность по умолчанию использовать стандартные конфигурации аппаратуры. Для осуществления действий по управлению аппаратурой должен быть написан набор аппаратно-зависимых функций. Пример:Windows NT диспетчер прерываний, преобразует аппаратные уровни прерываний конкретного процессора в стандартный набор прерываний с которым работают модули операционной системы.

3. Аппаратнозависимый код должен быть надежно изолирован в нескольких модулях, а не распределен по всей системе. У разработчика появляется возможность создать вариант машинно независимой части операционной системы.

Переносимость ОС

Если код ОС легко может быть перенесен на другую аппаратную платформу, такую ОС называют переносимой (мобильной).

Для обеспечения ОС разработчики ОС должны следовать определенным правилам:

  1. большая часть кода должна быть написана на языке, транслятор из которого имеется на всех ПК.
  2. по возможности исключать принцип умолчания стандартной конфигурации клавиатуры.

Например, диспетчер прерываний приобретает аппар уровни прерываний контрольная точка процессора . в стандартный набор прерываний, с которым работают ост модули ОС.

Вывод: при переносе Windows NT на другую аппаратную платформу необходимо изменить один модуль, который преобразует аппаратные прерывания в стандартный набор прерываний.

  1. аппаратно-зависимый код должен быть надежно изолирован в нескольких модулях. Не допускается распределение машинно-зависимого кода по всей системе.

Слой машинно-зависимых компонентов ядра должен полностью экранировать оставшуюся часть ОС от копирования деталей аппаратной платформы. Т.о. у разработчиков появляется возможность создавать один вариант машинно-независимой части ОС для всего набора аппаратных платформ.

Микроядерная архитектура.

Является альтернативой классической архитектуры. В классической архитектуре ядро многослойное. Ядро функционирует в привилегированном режиме.

Сущность: в привилегированном режиме работает небольшая часть ОС, которая называется микроядро. Микроядро – защищено от основной части ОС и приложений. В его состав входит:

  1. машинозависимые модули
  2. модули выполняющие некоторые базовые функции (управление процессами, обработка прерываний, управление виртуальной памятью, пересылка сообщений, управление устройствами вв/выв).

Остальные функции ядра (классические) формируются в виде приложений, работающих в пользовательском режиме. Работающие в пользовательском режиме менеджеры ресурсов имеют принципиальное отличие от традиционных утилит и обработок программ ОС.

В ситуации, когда одному приложению требуется функции другого, в классической архитектуре практически не встречаются. В микроядерной архитектуре это используется часто.

Менеджеры ресурсов, вынесенные в пользовательский режим, называются серверами приложений.

Для реализации микроядерной архитектуры необходим эффективный способ вызова процедур одного процесса из другого. Поддержка этого механизма – главная задача микроядра.

Механизм обращения к функциям ОС, оформленным в виде серверов, выглядит следующим образом:

Клиент, которым может быть либо компонент ОС, прикладная программа, запрашивает выполнение некоторой функции у соответствующего сервера, посылая ему сообщения. Непосредственная передача сообщений между приложениями невозможна. Микроядро является посредником.

Достоинства и недостатки микроядерной архитектуры:

(+)ОС построенные на концепции микроядерной архитектуры, удовлетворяют большинству современных требований.

-поддержка распределенных приложений.

(+) высокая степень расширяемости. Добавление новых функций требует разработки нового приложения и не затрагивает микроядро.

Каждый сервер выполняется в виде отдельного процесса в собственной области памяти и поэтому защищен от других серверов — надежность.

Операционная система с микроядром подходит для поддержки механизма распределенных вычислений, т.к. использует механизмы аналогичные сетевым.

Серверы микроядерной операционной системы могут работать как на одном, так и на различных компьютерах.

При выполнении системного вызова: в классической два переключения, в микроядерной — четыре.

Совместимость и множественные прикладные среды.

Архитектурные особенности операционных систем касаются разработчика операционной системы и системного программиста, концепция множественных прикладных сред связана с конечными пользователями. Множественность – возможность выполнить приложения, написанные для других операционных систем или совместимость. Двоичная совместимость машинный код программы выполняется под управлением другой операционной системы. Совместимость на уровне исходного текста – важна для разработчиков приложений. Двойственная совместимость зависит от архитектуры процессора и набора команд, если процессор использует тот же набор команд, то двоичная совместимость достигается при следующих условиях:

  1. вызов функции API прикладных программ интерфейса, которая содержит данное приложение, должно поддерживаться операционной системой.
  2. внутренняя структура исполняемого файла приложения должна соответствовать структуре исполняемых файлов данной операционной системы.

Команды одной ЭВМ могут эмулироваться компонентами ОС других ЭВМ. Для повышения производительности используют трансляцию библиотек. Эффективность этого подхода связана с использованием графического интерфейса пользователя во многих операционных системах.

Тщательно спроектированная прикладная программная среда имеет в своем составе библиотеки реализующие функции графического интерфейса, замена эмуляции на непосредственное выполнение программ значительно повышает производительность, совместимость на уровне API недостаточна для полной совместимости приложений.

Способы реализации прикладных программных средств.

Создание полноценной прикладной среды полностью совместимой со средой другой операционной системы – сложная задача, тесно связанная со структурой операционных систем. Создание множественной прикладной среды обеспечивается особенностями архитектуры решений и функциональными возможностями.

При микроядерной архитектуре все функции операционных систем реализуются микроядром и серверами пользовательского режима. Прикладная среда оформляется в виде отдельного сервера пользовательского режима и не включает базовых механизмов. Приложения, используя API, обращаются с системными вызовами к соответствующей прикладной среде через микроядро. Прикладная среда обрабатывает запрос, выполняет его, обращаясь к базовым функциям микроядра, и отправляет результат приложению. При выполнении запроса возможно обращение к базовым механизмам, которые реализуются другими серверами операционных систем.

Достоинства и недостатки микроядерной архитектуры при конструировании множественных прикладных сред.

  1. просто исключать и добавлять прикладные среды
  2. надежность и стабильность
  3. низкая производительность микроядерных операционных систем, поэтому она уменьшает производительность прикладной среды.

Ядро в привилегированном режиме

Для надежного управления ходом выполнения приложений операционная система должна иметь по отношению к приложениям определенные привилегии. Иначе некорректно работающее приложение может вмешаться в работу операционной системы и, например, разрушить часть ее кодов. Операционная система должна обладать исключительными полномочиями также для того, чтобы играть роль арбитра в споре приложений за ресурсы компьютера в мультипрограммном режиме. Ни одно приложение не должно иметь возможности без ведома операционной системы получить дополнительную область памяти, занимать процессор дольше разрешенного операционной системой периода времени, непосредственно управлять совместно используемыми внешними устройствами.

Обеспечить привилегии операционной системы невозможно без специальных средств аппаратной поддержки. Аппаратура компьютера должна поддерживать как минимум два режима работы — пользовательский режим (user mode) и привилегированный режим, который также называют режимом ядра (kernel mode) или режим супервизора (.supervisor mode). Подразумевается, что операционная система или некоторая ее часть работает в привилегированном режиме, а приложения — в пользовательском режиме. Так как ядро выполняет все основные функции операционной системы, то чаще всего именно ядро становится той частью операционной системы, которая работает в привилегированном режиме (рис. 3.2).

Рис. 3.2. Архитектура ОС с ядром в привилегированном режиме

Приложения становятся в подчиненное положение за счет запрета выполнения в пользовательском режиме некоторых критичных команд, связанных с переключением процессора с задачи на задачу, управлением устройствами ввода-вывода, доступом к механизму распределения и защиты памяти. Выполнение некоторых команд в пользовательском режиме запрещается безусловно (очевидно, что к таким командам относится команда перехода в привилегированный режим), тогда как другие запрещается выполнять только при определенных условиях. Важно, что условия разрешения выполнения критичных команд находятся под полным контролем операционной системы и этот контроль обеспечивается за счет набора команд, безусловно запрещенных для пользовательского режима. Например, выполнение команды доступа к памяти для приложения разрешается, если команда обращается к области памяти, отведенной данному приложению операционной системой, и запрещается при обращении к областям памяти, занимаемым операционной системой или другими приложениями.

Повышение устойчивости операционной системы, обеспечиваемое переходом ядра в привилегированный режим, достигается за счет некоторого замедления выполнения системных вызовов. Системный вызов привилегированного ядра инициирует переключение процессора из пользовательского режима в привилегированный, а при возврате к приложению — переключение из привилегированного режима в пользовательский (рис. 3.3). Во всех типах процессоров из-за дополнительной двукратной задержки переключения переход на процедуру со сменой режима выполняется медленнее, чем вызов процедуры без смены режима.

Рис. 3.3. Смена режимов при выполнении системного вызова к привилегированному ядру

Архитектура операционной системы, основанная на привилегированном ядре и приложениях, работающих в пользовательском режиме, стала, по существу, классической. Ее используют многие популярные операционные системы, например UNIX, OS/2, Windows NT и т.д.

В некоторых случаях для повышения быстродействия разработчики операционной системы отступают от этого классического варианта архитектуры, организуя работу ядра и приложений в одном и том же режиме. Так, например, сетевая операционная система NetWare компании «Novell» использует привилегированный режим процессора как для работы ядра, так и для работы своих специфических приложений. В этом случае повышается быстродействие, но снижается надежность операционной системы, которая компенсируется за счет тщательной отладки каждого приложения.

В одном режиме работают также ядро и приложения тех операционных систем, которые разработаны для процессоров, вообще не поддерживающих привилегированного режима работы. Наиболее популярным процессором такого типа был процессор Intel 8088/86, послуживший основой для персональных компьютеров компании «1ВМ». Операционная система MS DOS, разработанная компанией «Microsoft» для этих компьютеров, состояла из двух модулей msdos.sys и io.sys, составляющих ядро системы, к которым с системными вызовами обращались командный интерпретатор command.com, системные утилиты и приложения. Некорректно написанные приложения вполне могли разрушить основные модули MS DOS, что иногда и происходило. Аналогичными операционными системами являются системы MSX, СР/М, PC DOS ит.п.

Появление в более поздних версиях процессоров фирмы «Intel» (начиная с 80286) возможности работать в привилегированном режиме не было использовано разработчиками MS DOS. Эта операционная система всегда работала на процессорах данного типа в так называемом реальном режиме, в котором эмулируется процессор 8088/86. Не следует считать, что реальный режим является синонимом пользовательского режима, а привилегированный режим — его альтернативой. Реальный режим был реализован только для совместимости поздних моделей процессоров с ранней моделью 8088/86 и альтернативой ему является защищенный режим работы процессора, в котором становятся доступны все особенности процессоров поздних моделей.

Режим ядра — kernel mode или привилегированный режим для работы операционной системы.

Пользовательский режим (user mode) для работы пользовательских приложений.

Архитектура ОС, основанная на привилегированном ядре и пользовательском режиме считается классической.

В классической архитектуре все функции ядра ОС выполняются в

привилегированном режиме, а некоторые вспомогательные функции

ОС выполняются в виде приложений (системных утилит или

обрабатывающих программ) в пользовательском режиме.

Ее использует Windows NT, Uniх / Linux, Mac OS X.

Аналогичный подход используется в популярной ОС маршрутизато-

ров – Cisco IOS ( internetwork operating system).

В ОС MS DOS модули ядра msdos.sys и io.sys, командный

интерпретатор command.com, системные утилиты и

приложения работают в одном режиме, что не соответст-

вует условиям надежной работы системы.

Режим ядра

Модули ОС работают в режиме ядра в привилегированном режиме и резидентны в ОЗУ.

В режиме ядра доступны все команды процессора, вся имеющаяся память и любые регистры.

Код ядра имеет доступ к областям памяти всех приложений, но сам от них полностью защищен.

Для поддержки режима ядра процессор должен иметь команды

переключения задач, управления ввода — вывода, управления

механизмами распределения и защиты памяти (управления адресны-

ми пространствами), прерываний.

Код ОС выполняется в этом режиме.

При выполнении кода операционной системы процессор переключается в режим ядра.

Пользовательский режим

Все приложения выполняются в пользовательском режиме иставятся в подчиненное положение по отношению к ОС за счет запрета выполнения в пользовательском режиме некоторых команд, связанных с переходом в привилегированный режим ( переключение процессора с задачи на задачу, управление вводом – выводом, доступ к механизмам распределения и защиты памяти и др.).

Пользовательский режим ограничен безвредными функциями для ОС.

В пользовательском режиме доступ к регистрам и памяти ограничен.

Приложение не сможет работать с памятью за пределами набора адресов, установленного для него операционной системой, или обращаться напрямую к регистрам устройств.

В нем нет и непосредственного доступа к аппаратуре, доступа к виртуальной памяти другой программы, нет разрешения на аппаратные операции ввода – вывода, IN, OUT и др.

Они выполняются только вызовами ОС.

Операции функций ядра приложениямпользователей непосредственно недоступны.

Приложение может к ним обратиться только через системные вызовы (типа Create, Open,…) по технологии клиент – сервер.

При создании объектов ядра(Create)вызовы возвращают программе дескрипторы объекта – это адрес (или индекс) в таблице описателей.

Пустая таблица дескрипторов создается при инициализации процессов.

Используется объектами ядра.

Но как только поток вызывает функцию создания объекта ядра, происходит заполнение таблицы.

Функция ищет в таблице дескрипторов процесса и считывает адрес нужного объекта ядра.

При вызове функции с аргументом дескриптора объекта ей передается значение, возвращенное вызовом Create.

Совместно используемый объект ядра удаляется после отказа от него всех процессов (при счетчике числа процессов равном 0).

Системный вызов переводит процессор в привилегированный режим и при возврате – обратный процесс.

Таким образом, для переключения из пользовательского режима в режим ядра существует единственный способ – с помощью системных вызовов, реализуемых операционной системой.

Первоначально в привилегированном режиме ядра выполнялся весь код ОС.

Такой монолитный подход имел недостатки с точки зрения открытости, разработки программ, надежности или легкости обслуживания.

Более удобен вариант построения операционной системы, называемый микроядерным.

Это альтернатива классической архитектуре построенияОС.

Микроядерная архитектура операционной системы делит ее на две части:

1. Одна часть операционной системы содержит небольшое микроядро (micro-kernel), код которого выполняется в привилегированном режиме ядра.

Оно защищено от остальных частей ОС и приложений и выполняет базовые (основные) функции ОС.

Базовые функции ядра современных многозадачных ОС обычно включают:

— управление процессами (процессорным временем);

— управлению виртуальной памятью;

— управление прерываниями.

— управление задачами и переключением контекстов задач;

— управлению УВВ (аппаратным вводом — выводом );

— загрузка/выгрузка страниц и др.

— пересылке сообщений;

— создание объектов ядра.

Обслуживание аппаратного ввода – вывода в защищенном режиме выполняется в привилегированном режиме ядра.

Для получения возможностей выполнения операций ввода-вывода текущий процесс должен иметь уровень привилегийRPLне ниже уровня привилегий, указанного в поле IOPL(input output privilege level) регистра флагов FLAGS.

Если это условие не соблюдено, то возможности доступа к порту устройства ввода – вывода определяются соответствующим битом битовой карты разрешения ввода / вывода, хранимой в сегменте состояния задачи TSS.

Карта ввода-вывода TSS состоит из 64 кбит (8 кбайт ) для описания доступа к 65536 портам.

Значение бита, равное нулю, разрешает операцию ввода-вывода с соответствующим портом.

Для них используется область памяти, называемая отображением ввода — вывода на память. Для этой области запрещено кэширование.

В режиме ядра работают и диспетчер ввода – вывода и драйверы, к которым может обращаться диспетчер ввода – вывода.

Практически микроядро должно содержатьтолько код:

Дата добавления: 2018-08-06 ; просмотров: 484 ;

Adblock
detector