Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Answers.docx
Скачиваний:
16
Добавлен:
16.09.2019
Размер:
393.72 Кб
Скачать

Монолитные системы

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

Многоуровневые системы

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

Модель клиент-сервер и микроядра

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

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

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

3.8. Монопольные ресурсы. Проблема тупиков. Дисциплины распределения ресурсов. Поиск тупиков и их уничтожение

3.8. МОНОПОЛЬНІ РЕСУРСИ. ПРОБЛЕМА ТУПИКІВ. ДИСЦИПЛІНИ РОЗПОДІЛУ РЕСУРСІВ. ПОШУК ТУПИКІВ ТА ЇХ ЗНИЩЕННЯ.

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

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

Проблема тупиков включает в себя следующие задачи:

предотвращение тупиков, распознавание тупиков, восстановление системы после тупиков.

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

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

«Голодание» - Процессы, ожидающие ресурсов, встают в очереди к этим ресурсам.  Такая очередь может обслуживаться любой невытесняющей стратегией планирования.  Моментом,  когда менеджер ресурса принимает решение об обслуживании, является освобождение ресурса.

Алгоритм «Банкира».

1.Клиент делает заем для совершения сделки, которая будет завершена за конечный промежуток времени. 2.Клиент должен заранее указать максимальную "потребность" во флоринах для этой сделки. 3.Пока "заем" не превышает заранее установленную "потребность", клиент может увеличивать или уменьшать свой заем флорин за флорином. 4.Клиент, который просит увеличить его текущий заем, обязуется принимать без недовольства следующий ответ: "Если бы я дал вам запрашиваемый флорин, вы еще не превысили бы свою установленную потребность, и поэтому вы имеете право на следующий флорин. Однако в настоящий момент мне, по некоторым причинам, неудобно его дать, но я обещаю вам флорин в должное время". 5.Гарантия для клиента в том, что этот момент действительно наступит, основана на предусмотрительности банкира и на том факте, что остальные клиенты подчиняются тем же условиям, что и он сам: как только клиент получает флорин, он приступает к своей сделке с ненулевой скоростью, т. е. в конечный промежуток времени он или запросит новый флорин, или возвратит флорин, или закончит сделку, что означает возвращение всего займа (флорин за флорином).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]