Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Эволюция операционных систем. Функции и механизмы программ-диспетчеров, функции и механизмы мультипрограммных операционных систем





Этапы становления ОС:

Программы-диспетчеры.

Решает задачу повторного использования кода, его загрузки и линковки.

SPOOL – simultaneous periphery operation on line – операцииввода, вывода.Появление прерываний - в первичном смысле – прерывания вычислительного блока для сообщения о выводе/вводе данных.

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

Мультипрограммные обработки.

Появление механизмов смены регистров вычисления (смена контекста).

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

Появление механизмов защиты адресного пространства. Появление привилегированного режима ОС. Термин ОС был впервые применен к система MCP (1963).

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

Появляется механизм System call – обращение программы к ОС с требованием выдать ресурсы/права/etc.

Появление структурированного хранения данных.

Многотерминальность (многопользовательские работы).

Появление прав доступа, механизмов аутентификации.

Появление сетевых ОС.

Открытые (мобильные) операционные системы

Томпсон, Керниган, Ритчи создают unix и C (1969, в основе был проект maltex).

Персональные ОС (спорные уровень)

 

3. -4 -5 – 6 Виды архитектур ядер операционных систем. Монолитная, многослойная и микроядерная архитектура ядра ОС. Другие виды ядер ОС.

 

Немного дополнительной информации для освежения в памяти:

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

Основное отличие состоит в том, что при системном вызове задача переходит в привилегированный режим или режим ядра (kernel mode). Поэтому системные вызовы иногда еще называют программными прерываниями, в отличие от аппаратных прерываний, которые чаще называют просто прерываниями.

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

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

Архитектуры операционных систем:

Монолитная;

Многослойная;

Микроядерная;

Наноядерная

Экзоядерная;

Клиент-серверные системы;

Смешанные системы.

 

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

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

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

Рисунок 1 - Простая структура монолитной архитектуры

Структура:

главная программа, вызывающая требуемую служебную процедуру (system call);

набор служебных процедур, выполняющих системные вызовы;

набор утилит, обслуживающих служебные процедуры.

 

Многослойная система:

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

 

Рисунок 2 - Многослойная архитектура

Описание слоев:

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

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

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

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

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

 

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

 

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

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

 

Рисунок 3 - микроядерная архитектура

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

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

 

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

-умеет обрабатывать только прерывания

-минимальное количество операций

-все остальное работает в пользовательском режиме

-используется, когда даем полное равноправие процессам

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

В некотором смысле концепция наноядра близка к концепции HAL — Hardware Abstraction Layer, предоставляя вышележащему ПО удобные механизмы абстракции от конкретных устройств и способов обработки их прерываний.

Наиболее часто в современных компьютерах наноядра используются для виртуализации аппаратного обеспечения реальных компьютеров или для реализации механизма гипервизора, с целью позволить нескольким или многим различным операционным системам работать одновременно и параллельно на одном и том же компьютере. Например, VMware ESX Server реализует собственное наноядро, не зависимое от ОС и устанавливаемое на «голое железо». Поверх этого наноядра работают пользовательские и административные утилиты VMware и сами операционные системы, виртуализируемые в ESX Server

 

Экзоядерная архитектура:

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

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

 

Клиент-серверная архитектура:

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

 

Рисунок 4 - клиент-серверная архитектура

 

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

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

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

 

Смешанные системы:

-архитектура позволяет включать или не включать некоторые слои в зависимости от ситуации

-баланс проблемы эффективность/безопасность

-только на экспериментальных ОС, промышленных нет

Все рассмотренные подходы к построению операционных систем имеют свои достоинства и недостатки. В большинстве случаев современные операционные системы используют различные комбинации этих подходов. Ниже приведены три примера.

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

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

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

Date: 2015-07-17; view: 1085; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию