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

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

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

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

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

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

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

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

Концепция

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

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

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

Приложения Утилиты Приложения Утилиты


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

Привилегированный

режим


Рис.3. 5. Перенос основного объема функций ядра в пользовательское
место

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

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

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

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

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

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

3. 6. 2. Достоинства и недочеты микроядерной архитектуры

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

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

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

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

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

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

Приложение Приложение


а) Ядро

t t


Приложение Сервер ОС Приложение


Микроядро Микроядро

б) t t t t


Рис. 3. 7. Смена режимов при выполнении системного вызова

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


peremena-lic-v-obyazatelstve-oznachaet-zamenu-odnih-uchastnikov-lic-obyazatelstva-na-drugih-perehod-prav-i-obyazannostej-uchastnikov-obyazatelstva.html
peremena-otnosheniya-k-partneru.html
peremeni-i-prevratnosti-vojni.html