Многослойная структура ос кратко

Обновлено: 02.07.2024

Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы: ядро и вспомогательные модули . Ядро выполняет все основные функции ОС и работает в особом – привилегированном – режиме.

Приложения выполняются независимо, каждое – в своем собственном адресном пространстве.

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

Архитектура ОС, основанная на привилегированном ядре и приложениях пользователя, считается классической. Она используется, в частности, в большинстве вариантов ОС Unix и с определенными модификациями (см. п. 2.2) – в ОС Windows NT.

1.2. Ядро и вспомогательные модули ОС

 Ядро включает модули, выполняющие основные функции ОС:

управление вводом-выводом и файловая система;

интерфейс прикладного программирования API (Application Program Interface) для поддержки обращений к ядру из приложений.

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

 Вспомогательные модули по выполняемым функциям обычно подразделяются на следующие группы:

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

системные обрабатывающие программы (компиляторы, редакторы связей, загрузчики, отладчики, текстовые или графические редакторы);

библиотеки процедур различного назначения для разработки приложений (математические функции, функции ввода-вывода и т.д.);

программы, предоставляющие дополнительные услуги (калькулятор, некоторые игры).

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

Вспомогательные модули ОС загружаются в оперативную память только на время выполнения ( транзитные модули).

 Решение о том, является ли какая-либо программа частью ОС или нет, принимает производитель ОС. Так, самостоятельное приложение, имеющее спрос, может быть включено в состав ОС (например, Веб-браузер Internet Explorer), или, наоборот, модуль ОС может превратиться в отдельное приложение.

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

Рис. 5.1. Взаимодействие между ядром и другими модулями

1.3. Привилегированный режим ядра и пользовательский режим

Операционная система для осуществления своих управляющих функций должна иметь по отношению к приложениям определенные привилегии. Поэтому аппаратура компьютера поддерживает как минимум два режима:

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

привилегированный режим , он же – режим ядра ( kernel mode ), или режим супервизора ( supervisor mode ) – для работы ОС или ее частей.

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

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

управлением устройствами ввода-вывода;

доступом к механизмам распределения и защиты памяти.

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

Если аппаратура (процессор) поддерживает хотя бы два уровня привилегий, то ОС может на этой основе создать программным способом сколь угодно развитую систему защиты и соответствующих прав доступа. Прямого соответствия между числом аппаратно реализуемых и программно реализуемых уровней привилегий нет. Так, на базе четырех уровней процессоров архитектуры х86 OS/2 строит трехуровневую, а Windows NT и Unix – двухуровневую систему привилегий.

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

1.4. Многослойная структура ОС

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

Система представляется как иерархия слоев.

Функции нижележащего слоя являются примитивами для построения более сложных функций вышележащего слоя.

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

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

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

 Многослойная структура ОС

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

Рис. 5.2. Трехслойная структура вычислительной системы

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

 Многослойная структура ядра

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

Рис. 5.3. Многослойная структура ядра ОС

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

Машино-зависимые модули – программные модули, в которых отображается специфика аппаратной платформы компьютера. В идеале этот слой полностью экранирует вышележащие слои от особенностей аппаратуры, т.е. позволяет делать модули вышележащих слоев машинно-независимыми (пригодными для всех типов платформ, поддерживаемых данной ОС). Примером может служить слой HAL (Hardware Abstraction Layer) в Windows NT/2000. На уровне HAL работа с устройством определенного типа (накопитель, видеоплата, мышь и т.п.) всегда описывается при помощи одного и того же заранее определенного набора функций. В случае, если устройство имеет иной набор функций (например, устаревший 3d-ускоритель может не поддерживать многих современных функций), драйвер обязан эмулировать стандартные функции с тем, чтобы ОС могла не заботиться о том, какое конкретно устройство установлено.

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

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

Интерфейс системных вызовов . Взаимодействует непосредственно с приложениями и систем-ными утилитами, образуя прикладной программный интерфейс ОС (API).

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

2.1. Концепция архитектуры

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

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

Рис. 5.4. Перенос функций ядра в пользовательское пространство:
а – классическая архитектура, б – микроядерная архитектура

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

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

Рис. 5.5. Реализация системного вызова в ОС с микроядерной архитектурой

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

Микроядерная архитектура используется, в частности, в некоторых вариантах ОС Unix и частично – в ОС Windows NT.

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

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

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

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

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

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

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

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

В итоге реально говорить не о переносимости вообще, а о переносимости в рамках нескольких аппаратных платформ.

 Принципы обеспечения переносимости

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

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

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

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

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

Рис. 5.6. Иллюстрация переносимости ОС

Похожие документы:

Тема: Архитектура компьютеров. Основные характеристики компьютеров

"Архитектура эвм"

Тема: "Архитектура ЭВМ" Разделы учебника: § 7, 8, 9. Основные цели: . устройстве, о функциях основных узлов. Заложить ос­нову для будущего более подробного . дисков, закрепленных на об­щей оси. Соответственно, число магнитных поверхно­стей .

Архитектура аппаратно-программных средств распределенной обработки информации для интранет-технологии

. по предмету системное программное обеспечение Тема: Архитектура аппаратно-программных средств распределенной обработки . UNIX. Фирмам-поставщикам различных вариантов ОС UNIX в результате длительной работы удалось .

Лабораторная работа №4. Системная архитектура и строение ядра ос windows 9 X и Windows nt. Ядро Windows 9 X

. всей сис­темы;  Вытесняющий режим многозадачности отличается тем, что ОС может получить контроль . исчезают различия между платформами и архитектурами. Поэтому ОС может функционировать на разных платформах .

2. Классификация ос эволюция ос

. ОС (как защитник и ядро). ОС как система управления ресурсами. Тема 2. Классификация ОС Эволюция ОС. Классификация ОС . времени. 5. Многопроцессорный режим работы 7. Модульная архитектура ОС Windows и Linux 1. Модульная структура построения .

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

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

Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:

ядро — модули, выполняющие основные функции ОС;

модули, выполняющие вспомогательные функции ОС.

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

Ядро операционной системы (Kernel) - часть операционной системы:

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

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

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

  • обработка прерываний;
  • создание и уничтожение процессов;
  • переключение процессов из состояния в состояние;
  • диспетчирование ;
  • приостановка и активизация процессов ;
  • синхронизация процессов ;
  • организация взаимодействия между процессами;
  • манипулирование блоками управления процессами;
  • поддержка операций ввода-вывода;
  • поддержка распределения и перераспределения памяти;
  • поддержка работы файловой системы ;
  • поддержка механизма вызова-возврата при обращении к процедурам;
  • поддержка определенных функций по ведению учета работы
  • машины.

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

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

Вспомогательные модули ОС обычно подразделяются на следующие группы:

утилиты— программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования данных на магнитную ленту;

системные обрабатывающие программы — текстовые или графические редакторы, компиляторы, компоновщики, отладчики;

программы предоставления пользователю дополнительных услуг — специальный вариант пользовательского интерфейса, калькулятор и даже игры;

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

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

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

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

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

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

Многослойная структура ОС

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


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


Рис. Концепция многослойного взаимодействия

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

Ядро может состоять из следующих слоев:


Рис. Многослойная структура ОС

В данной схеме выделены следующие слои.

Средства аппаратной поддержки ОС. Значительная часть функций ОС может выполняться аппаратными средствами [10]. Чисто программные ОС сейчас не существуют. Как правило, в современных системах всегда есть средства аппаратной поддержки ОС, которые прямо участвуют в организации вычислительных процессов. К ним относятся: система прерываний, средства поддержки привилегированного режима, средства поддержки виртуальной памяти, системный таймер, средства переключения контекстов процессов (информация о состоянии процесса в момент его приостановки), средства защиты памяти и др.

Машинно-зависимые модули ОС. Этот слой образует модули, в которых отражается специфика аппаратной платформы компьютера. Назначение этого слоя – "экранирование" вышележащих слоев ОС от особенностей аппаратуры (например, Windows 2000 – это слой HAL (Hardware Abstraction Layer), уровень аппаратных абстракций).

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

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

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

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


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

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

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

Шины можно разделить на однонаправленные и двунаправленные. Однонаправленные шины позволяют передавать данные лишь в одном направлении – от источника к приёмнику. Двунаправленные шины позволяют источнику и приёмнику меняться местами.

Основными на магистрали являются шины адреса, данных, управления, команд и прерываний.

Шина адреса предназначена для выбора модуля, установленного в крейт, а также для адресации внутри модуля (выбора субадреса). Адресация может выполняться различными способами: двоичное кодирование, географическая адресация и т. д. В системах PXIe, применяющихся в практикуме, используется географическая (позиционная) адресация – каждому месту в крейте отводится отдельная сигнальная линия, служащая для выбора блока, к которому производится обращение. Другие шины, общие для всех модулей, используются для задания субадреса (см. прил. 2).

Шина данных предназначена для передачи данных. Чаще всего разрядность шины (количество проводников, сгруппированных в шину) кратна байту: 8, 16, 24, 32 разряда. Значит, за один такт по шине могут быть переданы соответственно 1, 2, 3, 4 байта.

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

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

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

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

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

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

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


Рисунок 2 - Концепция многослойного взаимодействия

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


Рисунок 3 - Многослойная структура ядра ОС

Ядро может состоять из следующих слоев.

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

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

Linux, Mac OS, Windows NT – имеют четко определенный слой программных модулей (HAL, Hardware Abstraction Layer), экранирующих особенности аппаратуры.

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

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




5. Интерфейс системных вызовов. Это самый верхний слой ядра и взаимодействует непосредственно с приложениями и системными утилитами, образуя прикладной программный интерфейс операционной системы (read(fd, buffer, count)). Системные вызовы обычно обращаются за помощью к функциям слоя менеджеров ресурсов, причем для выполнения одного системного вызова может понадобиться несколько таких обращений.

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

И наоборот, ядро может состоять из большего количества слоев. Менеджеры ресурсов могут обладать многослойной структурой.

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

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

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

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

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


Рисунок 2 - Концепция многослойного взаимодействия

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


Рисунок 3 - Многослойная структура ядра ОС

Ядро может состоять из следующих слоев.

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

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

Linux, Mac OS, Windows NT – имеют четко определенный слой программных модулей (HAL, Hardware Abstraction Layer), экранирующих особенности аппаратуры.

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

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

5. Интерфейс системных вызовов. Это самый верхний слой ядра и взаимодействует непосредственно с приложениями и системными утилитами, образуя прикладной программный интерфейс операционной системы (read(fd, buffer, count)). Системные вызовы обычно обращаются за помощью к функциям слоя менеджеров ресурсов, причем для выполнения одного системного вызова может понадобиться несколько таких обращений.

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

И наоборот, ядро может состоять из большего количества слоев. Менеджеры ресурсов могут обладать многослойной структурой.

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

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

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


Рис. 5 Трехслойная схема вычислительной системы

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

Такая организация системы имеет много достоинств:

– упрощается разработка системы, так как сначала ("сверху вниз") можно определить функции слоев и межслойные интерфейсы, а затем при детальной реализации постепенно наращивать мощность функций слоев, двигаясь "снизу вверх";

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

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

Ядро может состоять из следующих слоев (рис. 6):

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

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

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

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

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


Рис. 6 Многослойная структура ядра ОС

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

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

Четкой границы между программной и аппаратной реализацией функций ОС не существует.

Практически все современные аппаратные платформы имеют типичный набор средств аппаратной поддержки ОС, в который входят следующие компоненты:

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

– средства трансляции адресов;

– средства переключения процессов;

– средства защиты областей памяти.

Средства поддержки привилегированного режима обычно основаны на системном регистре процессора, часто называемом "словом состояния" машины или процессора.

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

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

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

Системный таймер [4] , необходим операционной системе для выдержки интервалов времени.

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

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

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

Основная идея, заложенная в технологию микроядра, заключается в том, чтобы создать необходимую среду верхнего уровня иерархии, из которой можно легко получить доступ ко всем функциональным возможностям уровня аппаратного обеспечения. При этом микроядро является стартовой точкой для создания всех остальных модулей системы. Все эти остальные модули, реализующие необходимые системе функции, вызываются из микроядра и выполняют сервисную роль. При этом они получают статус обычного процесса или задачи. Можно сказать, что микроядерная архитектура соответствует технологии "клиент – сервер" [5] . Именно эта технология позволяет в большей мере и с меньшими трудозатратами реализовать принципы проектирования операционных систем.

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

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

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

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


Рис. 2.1.5. Трехслойная схема вычислительной системы

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


Рис. 2.1.6. Концепция многослойного взаимодействия

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

Ядро может состоять из следующих слоев:

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

Машинно-зависимые компоненты ОС. Этот слой образуют программные модули, в которых отражается специфика аппаратной платформы компьютера. В идеале этот слой полностью экранирует вышележащие слои ядра от особенностей аппаратуры. Это позволяет разрабатывать вышележащие слои на основе машинно-независимых модулей, существующих в единственном экземпляре для всех типов аппаратных платформ, поддерживаемых данной ОС. Примером экранирующего слоя может служить слой HAL операционной системы Windows NT.

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


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

Рис. 2.1.7. Многослойная структура ядра ОС

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

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

Аппаратная зависимость и переносимость ОС. Типовые средства аппаратной поддержки ОС. Машинно-зависимые компоненты ОС. Переносимость операционной системы. Двоичная совместимость и совместимость исходных текстов. Совместимость и множественные прикладные среды.

Аппаратная зависимость и переносимость ОС

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

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

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

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

средства трансляции адресов;

средства переключения процессов;

средства защиты областей памяти.

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

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

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

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

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

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

Читайте также: