Многослойная структура ОС
Вычислительную систему, работающую под управлением ОС на основе ядра, можно рассматривать как систему, состоящую из трех иерархически расположенных слоев:
· нижний слой – образуется аппаратурой;
· промежуточный — ядро;
· верхний слой – модули, реализующие вспомогательные функции.
Слоистую структуру, изображенную на рисунке, удобно представлять для иллюстрации того факта, что каждый слой может взаимодействовать только с соседним слоем. При такой организации приложения не могут непосредственно взаимодействовать с аппаратурой, а только через слой ядра.
Многослойный подход является универсальным и эффективным способом декомпозиции сложных систем. В соответствии с ним система состоит из иерархии слоев. Каждый слой обслуживает вышележащий слой, выполняя для него некоторый набор функций, которые образуют межслойный интерфейс.
На основе функций нижележащего слоя следующий слой строит свои функции — более сложные и более мощные, которые, в свою очередь, становятся примитивами для создания еще более мощных функций вышележащего слоя.
Строгие правила взаимодействия оговариваются только между слоям. Внутри слоя связи между модулями могут быть произвольными.
Отдельный модуль может выполнить свою работу как самостоятельно, как и обратиться к другому модулю своего слоя, либо к нижележащему слою через межслойный интерфейс.
Достоинства такой системы организации:
· упрощается разработка системы;
· при модернизации системы легко производить изменения внутри каждого слоя, не заботясь о других слоях.
Поскольку ядро представляет собой сложный многофункциональный комплекс, этот подход распространяют и на структуру ядра.
Например:
· Средства аппаратной поддержки ОС. Сюда относят не все аппаратные средства, а только те, которые прямо участвуют в организации вычислительных процессов: средства поддержки привилегированного режима, систему прерываний, средства переключения контекстов процессов, средства защиты областей памяти.
· Машинно-зависимые компоненты ОС. Слой образуют программные модули, в которых отражается специфика аппаратной платформы компьютера. В идеале этот слой полностью экранирует вышележащие слои ядра от особенностей аппаратуры. Это позволяет разрабатывать вышележащие слои на основе машинно-независимых модулей для всех типов аппаратных платформ, поддерживаемых данной ОС.
· Базовые механизмы ядра.Выполняет наиболее примитивные операции ядра, такие как переключение контекстов процессов, диспетчеризацию прерываний, перемещение страниц памяти на диск и обратно и т. п. Модули данного слоя не принимают решений о распределении ресурсов — исполнительные механизмами для модулей верхних слоев.
· Менеджеры ресурсов. Слой состоит из мощных функциональных модулей, реализующих стратегические задачи по управлению основными ресурсами вычислительной системы. Здесь работают менеджеры (диспетчеры) процессов, ввода-вывода, файловой системы и оперативной памяти. Разбиение на менеджеры может быть различным. например менеджер файловой системы иногда объединяют с менеджером ввода-вывода, а функции управления доступом пользователей к системе в целом и ее отдельным объектам поручают отдельному менеджеру безопасности.
Каждый из менеджеров ведет учет свободных и используемых ресурсов определенного типа и планирует их распределение в соответствии с запросами приложений.
Для исполнения принятых решений менеджер обращается к нижележащему слою. Внутри слоя менеджеров существуют тесные взаимосвязи, отражающие тот факт, что для выполнения процессу нужен доступ одновременно к нескольким ресурсам — например, процессору, памяти, вводу-выводу и т.п.
· Интерфейс системных вызовов.Это самый верхний слой ядра. Он взаимодействует непосредственно с приложениями и системными утилитами, образуя прикладной программный интерфейс ОС. Функции обслуживающие системные вызовы, предоставляют доступ к ресурсам системы в удобной и компактной форме, без указания деталей их физического расположения. Для осуществления таких действий системные вызовы обычно обращаются за помощью к функциям слоя менеджеров ресурсов и т.д.
Приведенное разбиение ядра ОС на слои – достаточно условно. Такое разбиение и распределение функций может быть иным.
Также может быть иным способ взаимодействия слоев. Для ускорения работы ядра в ряде случаях происходит обращение с верхнего слоя к функциям слоев нижнего уровня, минуя промежуточные.
Выбор количества слоев ядра является ответственным и сложным делом: увеличение числа слоев ведет к замедлению работы ядра, а уменьшение – ухудшает расширяемость и логичность системы.
Независимо от того, какие функции выполняет ОС, она должна удовлетворять эксплуатационным требованиям. Она, в частности, должна обладать следующими качествами:
1. Надежностью. В случае ошибки в программном или аппаратном оборудовании система должна обнаружить ошибку и либо попытаться исправить положения. Либо сообщить об этом пользователю и постараться свести к минимуму ущерб.
2. Защитой. Пользователь не хочет, чтобы другие пользователи (если он, например, работает в сети) ему мешали. Поэтому ОС должна защищать пользователя от воздействия чужих ошибок и от попыток злоумышленного вмешательства.
3. Эффективностью. ОС – довольно сложная программа, которая использует значительную часть ресурсов для своих собственных надобностей. Ресурсы, которые потребляют ОС, не поступают в распоряжение пользователя. Следовательно ОС должна быть, как можно более экономной. Кроме того, она должна управлять ресурсами пользователей так, что бы свести к минимуму время задержки и простоев.
4. Предсказуемостью. Требование, которое пользователь может предъявлять к системе, в большинстве случаев, непредсказуемы. Но пользователь предпочитает, что бы обслуживание не очень сильно менялось в течении продолжительного времени. В частности, ввода программы в машину пользователь должен иметь основанные на предыдущем опыте приблизительное представление о том, когда ему следует ожидать выдачи результатов.
5. Удобством. Все ясно, как и то, что универсальных удобств не существует. Здесь может идти речь об определенном классе задач.
Пару слов о выполняемых функциях:
Распределение процессора.В случае незамысловатой системы вся она распределяется как единый ресурс. Пользователь либо распоряжается машиной, либо ждет, когда она будет предоставлена в его распоряжение. Такую стратегию очень легко организовать, но она не будет эффективно использовать оборудование. Для того чтобы работать параллельно с процессором, можно сделать так, чтобы одна программа выполняла операции ввода-вывода, пока другая занимает главный процессор. Хотя реализация такого подхода – более сложна, налицо преимущество – каждое устройство используется более интенсивно.
Управление памятью. Управление памятью тесно связанно с распределением процессора. Программы могут работать только тогда, когда они находятся в оперативной памяти, но не обязательно их держать там, если надежда получить процессор – невелика. В этом случае окажется, что память, которую они занимают – пропадает зря.
Оперативная память – это тоже распределяемый ресурс. Поэтому система расходует время для того чтобы расположить информацию рационально, стараясь держать полезные программы в оперативной памяти и уничтожать “свободные промежутки” между программами. Для этого система может использовать перемещение программ. Это делается для того, чтобы уменьшить объем бесполезно используемой памяти. Перемещение легче осуществить, если использовать специальные стратеги организации памяти. Эти стратегии позволяют ОС весьма гибко регулировать обмен информацией между оперативной и вспомогательной памятью.
Внешние устройства.Методы распределения устройств ввода-вывода и каналов связи различны. Задача пользуется периферийным устройством столько времени, сколько ей нужно, а затем отказывается от него. Устройство с быстрым произвольным доступом, такие как, накопители на дисках, можно совместно использовать в нескольких задачах по принципу “операция за операцией”, т.е. нескольким задачам разрешается использовать устройство попеременно. Если, скажем, две задачи попытаются выполнить операцию ввода-вывода на одном устройстве одновременно, то возникают очередь и задержка.
Подход к распределению устройств оказывает существенное влияние как на правильность, так и на эффективность работы.
Стратегия распределения влияет и на эффективность использования устройств, например, того же диска.
Эффективное распределение периферийных устройств трудно реализовать по двум причинам:
Во-первых. с помощью существующих математических методов нельзя провести необходимые исследования и отыскать оптимальные способы распределения нескольких различных типов устройств для общего случая решения задач.
Во-вторых, эффективность стратегии распределения очень трудно измерить.
Можно оценить только общее внешнее проявление неправильного распределения. Если же при оценке учитывать и влияние взаимодействия с оперативной памятью и центральным процессором, то аналитические и эмпирические методы оказываются еще менее перспективными.
Методы распределения устройств ввода-вывода, контроллеров и каналов сильно зависит от устройств.
Программные ресурсы. Часто в операционных системах имеются системы прикладных программ и библиотеки программ пользователей. Будучи ресурсами, подлежащими распределению, эти библиотеки имеют много общего с аппаратными ресурсами.
Совместное использование интерпретаторов, редакторов текстов и т.п. можно организовать, если эти программы допускают параллельное использование.
Если у них рабочая часть полностью отделена от данных и операций записи в память применяются только к разделу данных, то такие программы допускают параллельное использование. Если же программа не допускает параллельного использования, то каждый ее экземпляр может быть в данный момент только одному пользователю, так же, как и любое аппаратное устройство.
При параллельном использовании каждому пользователю выделяется личный экземпляр раздела данных, а с единственным экземпляром рабочей части все пользователи могут работать в режиме разделения.
Супервизор.
Традиционный подход при проектировании ОС состоит в том, что множество процессов, выполняющих основные функции системы, подчиняются главной программе, которая называется супервизором. Осуществляя централизованное управление, супервизор связывает воедино остальные части системы. Он организует совместную работу программ, устанавливая привилегии или назначая наказание. Он обеспечивает средства связи и синхронизации между процессами и физическими устройствами. Обычно и сообщения, передаваемые от процесса к процессу, и запуск и окончание работы устройств и сигнала от оборудования обрабатываются супервизором.
Супервизор, обычно, управляет разделением всех ресурсов у услуг системы междк пользователем.
Функции супервизора. Функции супервизора можно грубо разделить на четыре области:
· контроль и управление;
· организация связей;
· защита и ограничения;
· обслуживающие программы;
Контроль и управление. В обязанности супервизора входит установление последовательности и контроль управления заданий в системе. Для обработки заданий служат планирование порядка выполнения заданий, учет потребления или ресурсов и интерпретация языка управления заданиями. Эти функции можно реализовать независимо от супервизора или подчинить ему.
Пользователь описывает свои требования на некотором языке управления заданиями. Супервизор интерпретирует эти требования и сообщает различным программам, распределяющим ресурсы, какие ресурсы и задачи запрошены заданиями. Распределители ресурсов обслуживают запросы, возможно, в порядке их приоритетов. Программа учета запоминает количество потребленных ресурсов.
Организация связи.В супервизоре предусмотрены средства связи между различными программами, когда две независимые программы такие, как файловая система и программы управления памятью хотят связаться друг с другом, они должны просить супервизор установить контакт. После установления первоначального контакта программам разрешается передавать друг другу сообщения, принятым в данной системе способом, скажем, с помощью “писем” и общего “почтового ящика”. Первоначальна связь устанавливается через супервизор. Доступная только супервизору информация позволяет ему также устанавливать контакты между системными программами и программами пользователей.
Защита и ограничения.Для обеспечения гарантий выполнения работы супервизор должен наложить некоторые ограничения, как на систему, так и на пользователей. Имеется ряд программ, обрабатывающих сигналы аппаратуры, особенно отклонения от нормальных условий. Например, во время работы программы копирования может возникнуть несколько десятков различных особых ситуаций, например, сбой при чтении или записи, неготовность дисководов к чтению или записи, отсутствие места на дискете для копированного файла и т.д.
Когда поступает сигнал об ошибке (обычно это прерывание), супервизор должен принять решение задержать, повторить или даже выбросить задание. Для всех этих ситуаций необходимо предусмотреть соответствующие сообщения и корректирующие действия.
Ограничения должны налагаться на время работы программы и количество выдаваемых ею результатов.
Супервизор может также организовать систему защиты с помощью специальных “паролей”.
Доступ к защищенным ресурсам разрешается только по соответствующему паролю.
С целью защиты супервизора в некоторых системах существуют два типа режима работы:
· режим супервизора;
· рабочий режим.
Благодаря такой предосторожности супервизор обладает особой властью над привилегированными частями системы и программами пользователей. Супервизор может защищать себя, храня жизненно важную информацию в защищенной области памяти, доступной только в режиме супервизора.
Обслуживание программы. Помимо распределения ресурсов супервизорам выполняет некоторые из функций системы. В нем имеется набор обслуживающих программ для аварийных сборов, для доступа к библиотекам программ, для обработки сообщений от программ, работающих в оперативном режиме. Внутри супервизора часто находятся область памяти, предназначенная для организации связей и таблицы системы защиты. В ряде случаев, когда требуется выполнить сложные действия, супервизор вызывает специальные обрабатывающие программы.
Использование супервизора – это пример построения ОС на принципе централизованного управления.
Идеология централизации ключевых функций системы под контролем супервизора имеет свои преимущества и недостатки. Одно из преимуществ – простая реализация защиты. Второе преимущество – простота реализации.
С точки зрения разработки легче сосредоточить важнейшие системные функции в подчинении супервизора, чем распределять их по всей системе. Лучше всего такой подход оправдывает себя, когда супервизор делают сравнительно небольшим. К сожалению, велико искушение передать супервизору очень много функций, превращая его тем самым собственно в ОС.
У централизованного супервизора есть и существенные недостатки. Так программам не разрешается устанавливать связи друг с другом самостоятельно.
Дата добавления: 2016-06-15; просмотров: 11748;