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

Обновлено: 04.07.2024

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

Содержание

Введние. 3
1. Ядро и вспомогательные модули ОС 3
2. Ядро в привилегированном режиме 5
3. Многослойная структура ОС 9
4. Аппаратная зависимость и переносимость ОС 13
5. Типовые средства аппаратной поддержки ОС 13
6. Машинно-зависимые компоненты ОС 15
7. Переносимость операционной системы 16
Выводы 18
Список литературы. 19

Работа содержит 1 файл

ОС23.docx

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

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

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

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

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

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

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

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

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

Рис. 5. Упрощенная архитектура операционной системы NetWare

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

другому процессу, если данный процесс исчерпал выделенный ему квант вре­мени.

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


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

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

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

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

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

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

Для компьютеров на основе процессоров Intel x86/Pentium разработка экрани­рующего машинно-зависимого слоя ОС несколько упрощается за счет встроен­ной в постоянную память компьютера базовой системы ввода-вывода — BIOS. BIOS содержит драйверы для всех устройств, входящих в базовую конфигура­цию компьютера: жестких и гибких дисков, клавиатуры, дисплея и т. д. Эти драйверы выполняют весьма примитивные операции с управляемыми устройст­вами, например чтение группы секторов данных с определенной дорожки диска, но за счет этих операций экранируются различия аппаратных платформ персо­нальных компьютеров и серверов на процессорах Intel разных производителей. Разработчики операционной системы могут пользоваться слоем драйверов BIOS как частью машинно-зависимого слоя ОС, а могут и заменить все или часть драйверов BIOS компонентами ОС.


^ Переносимость операционной системы

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

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

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

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

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



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

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


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

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

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



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

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

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

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

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

Производительность. При классической организации ОС (рис. 3.12, а) выполне­ние системного вызова сопровождается двумя переключениями режимов, а при микроядерной организации (рис. 3.12, 6) — четырьмя. Таким образом, операци­онная система на основе микроядра при прочих равных условиях всегда будет менее производительной, чем ОС с классическим ядром. Именно по этой причи­не микроядерный подход ие получил такого широкого распространения, которое ему предрекали.


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

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

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

Обычно в состав операционной системы входит:

а) исполняемые и объектные модули стандартных для данной операционной системы форматов;

б) библиотеки разных типов;

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

г) программные модули специального формата (например, загрузчик ОС, драйверы ввода – вывода);

д) конфигурационные формулы;

е) файлы документации;

ж) модули справочной системы и т.д.

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

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


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

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

    • управление процессами;

    • управление памятью;

    • управление устройствами ввода – вывода и т.п.

В состав ядра входят функции, решающие внутрисистемные задачи организации ВП:


  • загрузка/выгрузка страниц,

  • обработка прерываний.

  • создание прикладной программной среды.

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

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

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

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

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


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

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

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

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

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

2. Привилегированный режим

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

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

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

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

Иногда это свойство служит основным понятием ядра.

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

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


  • нижний слой образует аппаратура;

  • промежуточный – ядро;

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

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


  1. Интерфейс системных вызовов

  1. Менеджеры ресурсов

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

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


  1. Базовые механизмы ядра

      • диспетчеризацию прерываний;

      • перемещение страниц памяти на диск и обратно и т.п.

  1. Машинно–зависимые компоненты ОС

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

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

    • система прерываний;

    • средства поддержки виртуальной памяти;

    • системный таймер;

    • средства переключения контекстов, процессов (информация о состоянии процесса в момент его приостановки);

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

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

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

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

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

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

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

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

защиты областей памяти;

Средства поддержки привилегированного режимаобычно основаны на системном регистре процессора, часто называемом “ словом состояния” машины и процессора. Этот регистр содержит некоторые признаки, определяющие режимы работы процессора, в том числе и признак текущего режима привилегий. Смена режима привилегий выполняется за счет изменения слова состояния машины в результате прерывания или выполнения привилегированной команды. Число градаций привилегированности может быть разным у разных типов процессоров, наиболее часто используются два уровня (ядро-пользователь) или четыре (например, ядро-супервизор-пользователь у платформыVAXили 0-1-2-3 у процессоровIntelx86/Pentium). В обязанности средств поддержки привилегированного режима входит выполнение проверки доступности выполнения активной программой инструкций процессора при текущем уроне привилегированности.

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

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

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

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

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

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

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