ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ СТАВРОПОЛЬСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ

advertisement
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
СТАВРОПОЛЬСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ
УНИВЕРСИТЕТ
Экономический факультет
УТВЕРЖДАЮ
Заведующий кафедрой
______________________
«___»_____________2014 г.
ЛЕКЦИЯ №3
по дисциплине «Операционные системы и оболочки»
Тема №3
Архитектура операционной системы
для студентов специальности
технологии
230400.62 –Информационные системы и
ШИФР
наименование
Рассмотрено УМК
" " ___________ 2014 года
протокол N ______________
Ставрополь - 2014 г.
1
Учебные и воспитательные цели:
1. Сформировать информационно-наглядное представление об архитектуре
на базе ядра в привилегированном режиме.
2. Изучить микроядерную архитектуру, переносимость ОС .
Время:______________________________________________________________
_ 90 мин.
Учебно-материальное обеспечение:
1. Опорная лекция.
2. ГОС ВПО по направлению 230400.62 – Информационные системы и
технологии.
3. Рабочая программа дисциплины «Операционные системы и оболочки».
4. Основная и дополнительная литература.
5. Методические указания по изучению дисциплины «Операционные системы
и оболочки».
6. Комплект слайдов по Теме №3
Распределение времени
I. Вступительная часть
II. Учебные вопросы:
1. Архитектура на базе ядра в привилегированном режиме
2. Микроядерная архитектура
3. Переносимость ОС
II. Заключительная часть
2
СОДЕРЖАНИЕ ЗАНЯТИЯ
Первый учебный вопрос – Архитектура на базе ядра в привилегированном
режиме.
Концепция архитектуры
Наиболее общим подходом к структуризации операционной системы
является разделение всех ее модулей на две группы:
- Ядро:
- Вспомогательные модули.
Ядро выполняет все основные функции ОС и работает в особом –
привилегированном – режиме.
Приложения выполняются независимо, каждое – в своем собственном
адресном пространстве.
Преимущество такой архитектуры заключается в легкой расширяемости
ОС: для добавления новой высокоуровневой функции достаточно разработать
новое приложение, не касаясь ядра. В противовес этому, внесение изменений в
функции ядра может оказаться достаточно сложным – вплоть до полной его
перекомпиляции.
Архитектура ОС, основанная на привилегированном ядре и приложениях
пользователя, считается классической. Она используется, в частности, в
большинстве вариантов ОС Unix и с определенными модификациями (см. п.
2.2) – в ОС Windows NT.
Ядро и вспомогательные модули ОС
Ядро включает модули, выполняющие основные функции ОС:
 управление процессами;
 управление памятью;
 управление вводом-выводом и файловая система;
 интерфейс прикладного программирования API (Application Program
Interface) для поддержки обращений к ядру из приложений.
Для обеспечения высокой скорости работы ОС модули ядра (все или
большая часть), являются резидентными, т.е. постоянно находятся в
оперативной памяти.
Вспомогательные модули по выполняемым функциям обычно
подразделяются на следующие группы:
 утилиты – программы, решающие отдельные задачи управления и
сопровождения компьютерной системы (сжатие дисков, их проверка,
дефрагментация; архивирование, сбор статистики и т.д.);
 системные обрабатывающие программы (компиляторы, редакторы связей,
загрузчики, отладчики, текстовые или графические редакторы);
 библиотеки процедур различного назначения для разработки приложений
(математические функции, функции ввода-вывода и т.д.);
 программы, предоставляющие дополнительные услуги (калькулятор,
некоторые игры).
По способу оформления эти модули представляют собой либо
приложения, т.е. самостоятельные программы (утилиты, системные программы
3
и программы дополнительных услуг), либо процедуры библиотек, вызываемые
из приложений.
Вспомогательные модули ОС загружаются в оперативную память только
на время выполнения (транзитные модули).
Решение о том, является ли какая-либо программа частью ОС или нет,
принимает производитель ОС. Так, самостоятельное приложение, имеющее
спрос, может быть включено в состав ОС (например, Веб-браузер Internet
Explorer), или, наоборот, модуль ОС может превратиться в отдельное
приложение.
Все модули (как вспомогательные, так и пользовательские приложения)
обращаются к функциям ядра посредством системных вызовов (рис.1).
Системные
обрабатывающие
программы
Утилиты
Ядро ОС
Приложения
пользователей
Библиотеки
процедур
Рис. 1. Взаимодействие между ядром и другими модулями
Привилегированный режим ядра и пользовательский режим
Операционная система для осуществления своих управляющих функций
должна иметь по отношению к приложениям определенные привилегии.
Поэтому аппаратура компьютера поддерживает как минимум два режима:
 пользовательский режим (user mode) – для работы приложений;
 привилегированный режим, он же – режим ядра (kernel mode), или режим
супервизора (supervisor mode) – для работы ОС или ее частей.
В привилегированном режиме чаще всего работает именно ядро как
основная часть ОС. Понятия «ядро» и «привилегированный режим» тесно
связаны, поэтому ядро также можно характеризовать как часть ОС,
работающую в привилегированном режиме.
Привилегии обеспечиваются за счет запрета выполнения в
пользовательском режиме некоторых
критичных команд, связанных со
следующими операциями:
 переключением процессора с задачи на задачу;
 управлением устройствами ввода-вывода;
 доступом к механизмам распределения и защиты памяти.
В пользовательском режиме безусловно запрещено выполнение
инструкции перехода в привилегированный режим. Другие инструкции
4
запрещается
выполнять
при
определенных
условиях,
полностью
контролируемых ОС. Например, ввод-вывод данных или доступ к памяти
разрешены приложению, если соответствующие ресурсы выделены только
этому приложению, и запрещены, если данные (соответственно память)
являются общими для ОС и других приложений.
Если аппаратура (процессор) поддерживает хотя бы два уровня
привилегий, то ОС может на этой основе создать программным способом сколь
угодно развитую систему защиты и соответствующих прав доступа. Прямого
соответствия между числом аппаратно реализуемых и программно
реализуемых уровней привилегий нет. Так, на базе четырех уровней
процессоров архитектуры х86 OS/2 строит трехуровневую, а Windows NT и
Unix – двухуровневую систему привилегий.
Переключение
процессора
из
пользовательского
режима
в
привилегированный при системном вызове ядра, а затем
обратное
переключение повышает устойчивость ОС, но замедляет выполнение
системных вызовов.
Многослойная структура ОС
Многослойный подход – универсальный и эффективный способ
декомпозиции сложных систем, базирующийся на следующих положениях.
 Система представляется как иерархия слоев.
 Функции нижележащего слоя являются примитивами для построения
более сложных функций вышележащего слоя.
 Взаимодействие слоев осуществляется через посредство функций
межслойного интерфейса.
 Отдельный
модуль может либо выполнить свою работу
самостоятельно, либо обратиться к другому модулю своего слоя, либо
обратиться к нижележащему слою через межслойный интерфейс.
При таком подходе разработка системы осуществляется сверху вниз, от
целей системы к их реализации. Сначала определяются функции слоев и
межслойные интерфейсы, задающие общую структуру системы, а затем
разрабатываются модули внутри слоев. Этот подход годится и для анализа
сложных систем.
Многослойная структура ОС
Вычислительную систему, работающую под управлением ОС на базе
ядра, можно рассматривать как систему из трех иерархически упорядоченных
слоев (рис. 2).
5
Утилиты, системные
обрабатывающие программы,
библиотеки процедур
Ядро ОС
Аппаратур
а
Рис. 2. Трехслойная структура вычислительной системы
При такой организации ОС приложения могут взаимодействовать с
аппаратурой только через слой ядра.
Многослойная структура ядра
Многослойный подход применим и к структуре ядра как сложного
многофункционального комплекса. Обычно выделяют слои, приведенные на
рис. 3, однако это разбиение достаточно условно.
Базовые механизмы ядра
Машино-зависимые модули
Средства
аппаратной поддержки ОС
Ядро
Интерфейс системных
Менеджеры ресурсов
вызовов
Аппаратур
а
Рис. 3. Многослойная структура ядра ОС
Средства аппаратной поддержки ОС – аппаратные средства, прямо
участвующие в организации вычислительных процессов: средства поддержки
привилегированного режима, система прерываний, переключение контекстов
процессов, трансляция адресов, защита памяти и т.п.
Машино-зависимые модули – программные модули, в которых
отображается специфика аппаратной платформы компьютера. В идеале этот
слой полностью экранирует вышележащие слои от особенностей аппаратуры,
т.е. позволяет делать модули вышележащих слоев машинно-независимыми
(пригодными для всех типов платформ, поддерживаемых данной ОС).
Примером может служить слой HAL (Hardware Abstraction Layer) в Windows
NT/2000. На уровне HAL работа с устройством определенного типа
(накопитель, видеоплата, мышь и т.п.) всегда описывается при помощи одного
6
и того же заранее определенного набора функций. В случае, если устройство
имеет иной набор функций (например, устаревший 3d-ускоритель может не
поддерживать многих современных функций), драйвер обязан эмулировать
стандартные функции с тем, чтобы ОС могла не заботиться о том, какое
конкретно устройство установлено.
Базовые механизмы ядра. Модули этого слоя не принимают решений о
распределении ресурсов, а только отрабатывают принятые на более высоком
уровне решения. Выполняются наиболее примитивные операции ядра:
программное переключение контекстов процессов, перемещение страниц
между памятью и диском, диспетчеризация прерываний и т.п.
Менеджеры ресурсов. Модули этого уровня реализуют управление
основными ресурсами системы. Группировка модулей в менеджеры обычно
осуществляется по функциям основных подсистем ОС: выделяются менеджеры
процессов, ввода-вывода и файловой системы (могут быть объединены),
оперативной памяти.
Интерфейс системных вызовов. Взаимодействует непосредственно с
приложениями и системными утилитами, образуя прикладной программный
интерфейс ОС (API).
Второй учебный вопрос - Микроядерная архитектура
Концепция архитектуры
В привилегированном режиме работает только небольшая часть ОС –
микроядро, защищенное от остальных частей ОС приложений.
В состав функций микроядра включаются те функции ОС, которые
трудно или невозможно выполнить в пространстве пользователя. В
соответствии с рис. 5.3 это функции слоя базовых механизмов обычного ядра и
ниже. Остальные, высокоуровневые функции ядра оформляются в виде
приложений, работающих в пользовательском режиме. Соотношение
классической и микроядерной архитектур приведено на рис.4.
а
Утилиты ОС
б
Приложения
пользователей
Приложения
пользователей
Утилиты ОС
Серверы ОС
Пользовательский
режим
Привилегированный
режим
Пользовательский
режим
Привилегированный
режим
Микроядро
Ядро ОС
Рис. 4. Перенос функций ядра в пользовательское пространство:
а – классическая архитектура, б – микроядерная архитектура
7
Однозначного решения о переносе в пользовательский режим тех или
иных системных функций не существует. В общем случае как пользовательские
приложения оформляются многие менеджеры ресурсов.
По определению, основным назначением такого приложения является
обслуживание запросов других приложений (создание процесса, выделение
памяти, проверка прав доступа и т.д.). Поэтому менеджеры ресурсов,
вынесенные в пользовательский режим, называются серверами ОС. Одной из
главных задач микроядра является поддержка взаимодействия серверов.
Механизм обращения к функциям ОС с микроядерной архитектурой изображен
на рис. 5.
Сетевой
сервер
Приложения
пользователей
Файловый
сервер
Сервер
процессов
Пользовательский
режим
Привилегированный
режим
Сообщениезапрос
Сообщение-ответ
Сервер
безопасности
Микроядро
Рис. 5. Реализация системного вызова в ОС с микроядерной архитектурой
Клиент (прикладная программа либо другой компонент ОС) посылает
соответствующему серверу сообщение-запрос на выполнение некоторой
функции. Непосредственная передача этого сообщения серверу невозможна,
так как каждое приложение работает в своем адресном пространстве. В
качестве
посредника
выступает
микроядро,
выполняющееся
в
привилегированном режиме и имеющее доступ к адресным пространствам всех
приложений. Микроядро передает сообщение нужному серверу, сервер
выполняет запрошенную операцию и результат, снова через посредство
микроядра, возвращается клиенту с помощью другого сообщения.
Такая схема обработки запроса соответствует модели клиент-сервер, где
микроядро выполняет роль транспортных средств.
Микроядерная архитектура используется, в частности, в некоторых
вариантах ОС Unix и частично – в ОС Windows NT.
Преимущества и недостатки микроядерной архитектуры
ОС, основанные на концепции микроядра, в высокой степени
удовлетворяют большинству требований, предъявляемых к современным ОС:
обладают переносимостью, расширяемостью, надежностью, подходят для
поддержки распределенных вычислений.
Основным недостатком микроядерной архитектуры является снижение
производительности по сравнению с классическим вариантом. Так, при
8
классической организации выполнение системного вызова требует двух
переключений режимов «привилегированный – пользовательский», а при
микроядерной – четырех (см. рис. 5). При обращении к часто используемым
функциям работа приложений существенно замедляется. По этой причине
микроядерный подход не получил широкого распространения.
Основная проблема при использовании микроядерного подхода – что
включать в микроядро, а что – выносить в пользовательское пространство. В
результате ОС с такой архитектурой образуют некоторый спектр, на одном
краю которого находятся системы с минимально возможным микроядром,
состоящим только из средств передачи сообщений, а на другом – системы, в
которых микроядро выполняет достаточно большой объем функций. Примером
ОС второго типа является Windows NT, где с целью повышения
производительности разработчики отклонились от микроядерной архитектуры
и часто используемые функции графического интерфейса перенесли в ядро
(начиная с версии 4.0) .
Третий учебный вопрос. Переносимость ОС
Проблемы переносимости
Свойство переносимости (или мобильности) ОС состоит в возможности
переноса ее кода с процессора (в общем случае аппаратной платформы) одного
типа на процессор (в общем случае аппаратную платформу) другого типа.
Очевидно, что чем больше платформ поддерживает ОС, тем меньше проблем
создает она конечному пользователю.
В действительности понятие переносимости уточняется следующим
образом: возможен ли вообще перенос кода ОС с одной платформы на другую,
и если возможен, то насколько сложно это сделать. Иначе говоря, речь скорее
идет о степени переносимости.
Проблема переносимости тесно взаимосвязана со структуризацией
компонентов ОС и обеспечением максимально возможного разделения
аппаратно-зависимых и аппаратно-независимых компонентов и уменьшения
числа первых, т.е. с архитектурой ОС.
Объем машинно-зависимых компонентов ОС зависит от различий в
аппаратных платформах, для которых разрабатывается ОС. Чем сложнее
преодолимы различия (система команд процессора, разрядность процессора,
количество процессоров, наличие или отсутствие аппаратной поддержки
виртуальной памяти и др.), тем больше объем таких компонентов и вероятность
переписывания ОС практически заново.
Для
уменьшения
количества
машинно-зависимых
модулей
производители ОС обычно ограничивают универсальность машиннонезависимых модулей (например, в Windows NT число типов процессоров
ограничено четырьмя и для однопроцессорных и многопроцессорных платформ
существуют различные коды ядра).
В итоге реально говорить не о переносимости вообще, а о переносимости
в рамках нескольких аппаратных платформ.
9
Единый вариант машиннонезависимой части ОС
Принципы обеспечения переносимости
Большая часть кода ОС должна быть написана на языке, трансляторы с
которого имеются на всех машинах, куда предполагается переносить систему.
Такими языками являются стандартизованные языки высокого уровня.
Большинство современных переносимых ОС написано на языке Си.
Переносимость кода на ассемблере ограничена типами процессоров с
одной и той же системой команд. В общем случае ассемблер используется для
непереносимых частей системы, взаимодействующих с аппаратурой
(обработчик прерываний) или обязанных обеспечивать максимальную скорость
работы (арифметика повышенной точности).
Объем машинно-зависимых частей кода, взаимодействующих с
аппаратурой, должен быть минимизирован. Для управления аппаратурой
должен быть написан набор аппаратно-зависимых функций. Тогда при
переносе ОС должны быть изменены только эти функции и данные
(характеристики аппаратных средств), которыми они манипулируют.
Аппаратно-зависимый код должен быть сосредоточен (локализован) в
нескольких модулях, а не распределен по всей системе.
В идеале слой машинно-зависимых компонентов должен полностью
экранировать остальную часть ОС от аппаратной платформы, имитируя некую
виртуальную аппаратуру, и все вышележащие слои могут быть написаны для
управления этой виртуальной аппаратурой. Схема, иллюстрирующая идею
переносимости, приведена на рис. 6.
Машинно-независимая часть
на алгоритмическом языке
Операционная
система
для компьютера А
Операционная
система
для компьютера B
Операционная
система
для компьютера C
Машиннонезависимая
часть ОС
(на языке
компьютера А)
Машиннонезависимая
часть ОС
(на языке
компьютера B)
Машиннонезависимая
часть ОС
(на языке
компьютера C)
Машиннозависимая часть
компьютера А
Машиннозависимая часть
компьютера B
Машиннозависимая часть
компьютера C
Компьютер типа А
Компьютер типа B
Компьютер типа C
Рис. 6. Иллюстрация переносимости ОС
Аппаратная зависимость и переносимость операционных систем.
10
Многие операционные системы успешно работают на различных
аппаратных платформах благодаря тому, что в большинстве компьютеров
средства аппаратной поддержки операционной системы приобрели типовые
черты. В результате в операционных системах можно выделить достаточно
компактный слой машинно-зависимых компонентов ядра, а остальные слои
сделать общими для разных аппаратных платформ. Четкой границы между
программной и аппаратной реализацией функций операционной системы не
существует. Решение о том, какие функции операционной системы будут
выполняться программно, а какие – аппаратно, принимается разработчиками
аппаратного и программного обеспечения.
Практически все современные аппаратные платформы имеют
типичный набор средств аппаратной поддержки операционной системы.
1. Средства поддержки привилегированного режима обычно основаны на
системном регистре процессора, называемом «словом состояния» машины или
процессора. Регистр содержит признаки, определяющие режимы работы
процессора, в том числе признак текущего режима привилегий. Смена режима
привилегий выполняется за счет изменения слова-состояния машины в
результате прерывания или выполнения привилегированной команды.
2. Средства трансляции адресов выполняют операции преобразования
виртуальных адресов, которые содержатся в кодах процесса, в адреса
физической памяти. Таблицы, предназначенные для трансляции адресов, имеют
большой объем, поэтому для их хранения используются области оперативной
памяти, а аппаратура процессора содержит только указатели на эти области.
Средства трансляции адресов используют данные указатели для доступа к
элементам таблиц и аппаратного выполнения алгоритма преобразования
адреса, что значительно ускоряет процедуру трансляции по сравнению с ее
чисто программной реализацией.
3. Средства переключения процессов предназначены для быстрого
сохранения контекста приостанавливаемого процесса и восстановления
контекста процесса, который становится активным. Содержимое контекста
включает содержимое всех регистров общего назначения процессора, регистра
флагов операций (флагов нуля, переноса, переполнения и т. п.), системных
регистров и указателей, которые связаны с отдельным процессом, например,
указателя на таблицу трансляции адресов процесса. Для хранения контекстов
приостановленных процессов обычно используются области оперативной
памяти, которые поддерживаются указателями процессора. Переключение
контекста выполняется по определенным командам процессора, например, по
команде перехода на новую задачу, которая вызывает автоматическую загрузку
данных из сохраненного контекста в регистры процессора, после чего процесс
продолжается с прерванного ранее места.
4. Система прерываний позволяет компьютеру реагировать на внешние
события, синхронизировать выполнение процессов и работу устройств вводавывода, быстро переходить с одной программы на другую. Механизм
прерываний нужен для того, чтобы оповестить процессор о возникновении в
вычислительной системе некоторого непредсказуемого события или события,
11
которое не синхронизировано с циклом работы процессора. Например,
некорректное завершение арифметической операции, истечение интервала
времени. При возникновении условий прерывания его источник (контроллер
внешнего устройства, таймер, арифметический блок процессора и т. п.)
выставляет определенный электрический сигнал. Этот сигнал прерывает
выполнение
процессором
последовательности
команд,
задаваемой
исполняемым кодом, и вызывает автоматический переход на заранее
определенную процедуру обработки прерываний. В большинстве моделей
процессоров отрабатываемый аппаратурой переход на процедуру обработки
прерываний сопровождается заменой слова состояния машины (или даже всего
контекста процесса), что позволяет одновременно с переходом по нужному
адресу выполнить переход в привилегированный режим. После завершения
обработки прерывания происходит возврат к исполнению прерванного кода.
5. Системный таймер, часто реализуемый в виде быстродействующего
регистра-счетчика, необходим операционной системе для выдержки интервалов
времени. Для этого в регистр таймера программно загружается значение
требуемого интервала в условных единицах, из которого затем автоматически с
определенной частотой начинает вычитаться по единице. Частота «тиков»
таймера связана с частотой тактового генератора процессора. При достижении
нулевого значения счетчика таймер инициирует прерывание, которое
обрабатывается процедурой операционной системы. Операционная система
использует прерывания от системного таймера для отслеживания временных
затрат процессора на выполнение процессов. Например, в системе разделения
времени при обработке очередного прерывания от таймера планировщик
процессов может принудительно передать управление другому процессу, если
данный процесс исчерпал выделенный ему квант времени.
6. Средства защиты областей памяти обеспечивают на аппаратном уровне
проверку возможности программного кода осуществлять с данными
определенной области памяти операции: чтение, запись или выполнение (при
передачах управления). Если аппаратура компьютера поддерживает механизм
трансляции адресов, то средства защиты областей памяти встраиваются в этот
механизм. Функции аппаратуры по защите памяти обычно состоят в сравнении
уровней привилегий текущего кода процессора и сегмента памяти, к которому
производится обращение.
Для переносимости операционной системы с одной платформы на
другую (например, на компьютеры, отличающиеся типом процессора или
способом организации аппаратуры) ядро проектируется таким образом,
чтобы только часть модулей была машинно-зависимой. Опыт разработки
операционных систем показывает, что в хорошо структурированном ядре
машинно-зависимые модули локализованы и образуют программный слой,
примыкающий к слою аппаратуры, что существенно упрощает перенос
операционной системы на другую аппаратную платформу.
Для
уменьшения
количества
машинно-зависимых
модулей
производители операционных систем ограничивают универсальность машиннонезависимых модулей. Это означает, что их независимость носит условный
12
характер и распространяется только на несколько типов процессоров и
созданных на их основе аппаратных платформ. Например, разработчики
операционной системы Windows NTограничили количество типов процессоров
для своей системы четырьмя и поставляют различные варианты кодов ядра для
однопроцессорных и многопроцессорных компьютеров.
Особое место среди модулей ядра занимают низкоуровневые драйверы
внешних устройств. С одной стороны, они, как и высокоуровневые драйверы,
входят в состав менеджера ввода-вывода, т. е. принадлежат слою ядра. С
другой стороны – отражают все особенности управляемых внешних устройств,
поэтому их можно отнести и к слою машинно-зависимых модулей. Такая
двойственность низкоуровневых драйверов еще раз подтверждает
схематичность модели ядра со строгой иерархией слоев.
Для компьютеров на основе процессоров Intel x86/Pentium разработка
экранирующего машинно-зависимого слоя операционной системы несколько
упрощается за счет встроенной в постоянную память компьютера базовой
системы ввода-вывода – BIOS. BIOS содержит драйверы для всех устройств,
входящих в базовую конфигурацию компьютера (жестких и гибких дисков,
клавиатуры, дисплея и т. д.), которые выполняют примитивные операции с
управляемыми устройствами. За счет этих операций экранируются различия
аппаратных платформ компьютера и серверов на процессорах Intel разных
производителей. Разработчики операционных систем могут пользоваться слоем
драйверов BIOS как частью машинно-зависимого слоя операционной системы,
а могут заменить все или часть драйверов BIOSкомпонентами операционной
системы.
Если код операционной системы может быть сравнительно легко
перенесен с процессора одного типа на процессор другого типа и с аппаратной
платформы одного типа на аппаратную платформу другого типа, то такую
операционную систему называют переносимой(portable), или мобильной.
Для обеспечения свойства мобильности операционной системы,
разработчики должны следовать следующим правилам:
1) большая часть кода должна быть написана на стандартизированном
языке высокого уровня, трансляторы которого имеются на всех машинах.
Большинство переносимых операционных систем написано на языке С.
Операционная система, написанная на Ассемблере, является переносимой
только в тех случаях, когда перенос операционной системы планируется на
компьютер, обладающий той же системой команд. В остальных
случаях Ассемблер используется только для тех непереносимых частей
системы, которые должны непосредственно взаимодействовать с аппаратурой
(например, обработчик прерываний), или для частей, которые требуют
максимальной скорости (например, целочисленная арифметика повышенной
точности);
2) объем машинно-зависимых частей кода, которые непосредственно
взаимодействуют с аппаратными средствами, должен быть по возможности
минимизирован. Для уменьшения аппаратной зависимости разработчики
операционных систем должны исключить возможность использования по
13
умолчанию стандартных конфигураций аппаратуры или их характеристик. Для
осуществления действий по управлению аппаратурой должен быть написан
набор аппаратно-зависимых функций. Каждый раз, когда какому-либо модулю
операционной системы требуется выполнить некоторое действие, связанное с
аппаратурой, он манипулирует абстрактными данными, используя
соответствующую функцию из имеющегося набора. Когда операционная
система переносится, то изменяются только эти данные и функции, которые
ими манипулируют. Например, в операционной системе Windows NT диспетчер
прерываний преобразует аппаратные уровни прерываний конкретного типа
процессора в стандартный набор уровней прерываний IRQL, с которыми
работают остальные модули операционной системы. Поэтому при
переносе Windows NT на новую платформу нужно переписать коды диспетчера
прерываний, которые занимаются отображением уровней прерывания на
абстрактные уровни IRQL, а те модули операционной системы, которые
пользуются этими абстрактными уровнями, изменений не потребуют.
3) аппаратно-зависимый код должен быть надежно изолирован в
нескольких модулях. Изоляции подлежат все части операционной системы,
которые отражают специфику как процессора, так и аппаратной платформы в
целом. Низкоуровневые компоненты операционной системы, имеющие доступ
к процессорно-зависимым структурам данных и регистрам, должны быть
оформлены в виде компактных модулей, которые могут быть заменены
аналогичными модулями для других процессоров. Для снятия платформенной
зависимости, возникающей из-за различий между компьютерами разных
производителей, построенными на одном и том же процессоре
(например, MIPS R4000), должен быть введен хорошо локализованный
программный слой машинно-зависимых функций.
В идеале слой машинно-зависимых компонентов ядра полностью
экранирует остальную часть операционной системы от конкретных деталей
аппаратной платформы (кэши, контроллеры прерываний ввода-вывода и т. п.).
В результате происходит подмена реальной аппаратуры унифицированной
виртуальной машиной, одинаковой для всех вариантов аппаратной платформы.
Все слои операционной системы, лежащие выше слоя машинно-зависимых
компонентов, могут быть написаны для управления этой виртуальной
аппаратурой. Таким образом, у разработчиков появляется возможность
создавать один вариант машинно-независимой части операционной системы
(включая компоненты ядра, утилиты, системные обрабатывающие программы)
для всего набора поддерживаемых платформ.
Вопросы для самопроверки:
1.
Определите подход, который является эффективным
способом декомпозиции сложных систем любого вида
2.
Перечислите слои, из которых может состоять структура ядра
операционной системы в многослойной модели
3.
Что такое привилегированный режим?
14
4.
Из каких модулей состоит слой «менеджеры ресурсов» в
многослойной модели операционной системы?
5.
Как определяется термин «микроядерная архитектура»?
6.
Как определяется термин «сервер операционной системы»?
7.
Как определяется термин «переносимая ОС»?
Список литературы:
1. Сетевые операционные системы/ В.Г. Олифер, Н.А. Олифер. –
СПб.: Питер, 2009. - 672 с.: ил.
2. Операционные системы: Учебник для вузов. 2-е изд. /А.В. Гордеев.
– СПб.: Питер, 2006. - 416 с.: ил.
Лекцию разработал
Доцент кафедры «Информационных систем»
к.т.н.,
Д. Резеньков
«___»__________________2014 г
15
Download