рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Мониторы Хоара

Мониторы Хоара - раздел Информатика, Программное обеспечение можно разделить на две группы: системное программное обеспечение СПО и прикладное программное обеспечение ППО Анализ Рассмотренных Задач Показывает, Что, Несмотря На Очевидные Достоинст­в...

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

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

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

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

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

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

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

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

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

В листинге 6.16 в качестве примера приведен простейший монитор для выделе­ния одного ресурса.

 

Листинг 6.16. Пример монитора Хоара

monitor Resourse;

condition free; { условие - свободный }

var busy : Boolean; { busy - занят }

 

procedure REQUEST; { запрос }

begin

if busy then WAIT ( free );

busy:=true;

TakeOff; { ВЫДАТЬ РЕСУРС }

end;

 

procedure RELEASE;

begin

TakeOn; { ВЗЯТЬ РЕСУРС }

busy:=false;

SIGNAL ( free )

end;

 

begin

busy:=false;

end

 

Единственный ресурс динамически запрашивается и освобождается процессами, которые обращаются к процедурам REQUEST (запрос) и RELEASE (освободить). Если процесс обращается к процедуре REQUEST в тот момент, когда ресурс использует­ся, значение переменной busy (занято) будет равно true, и процедура REQUEST выполнит операцию монитора WAIT(free). Эта операция блокирует не процедуру REQUEST, а обратившийся к ней процесс. Процесс помещается в конец очереди процессов, ожидающих, пока не будет выполнено условие free (свободный).

Когда процесс, использующий ресурс, обращается к процедуре RELEASE, операция монитора SIGNAL деблокирует процесс, находящийся в начале очереди, не позво­ляя исполняться никакой другой процедуре внутри того же монитора. Этот деблокированный процесс готов возобновить исполнение процедуры REQUEST сра­зу же после операции WAIT(free), которая его и блокировала. Если операция SIGNAL(free) выполняется в то время, когда нет процесса, ожидающего условия free, то никакие действия не выполняются.

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

Монитор является пассивным объектом в том смысле, что это не процесс; его процедуры выполняются только по требованию процесса.

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

 

– Конец работы –

Эта тема принадлежит разделу:

Программное обеспечение можно разделить на две группы: системное программное обеспечение СПО и прикладное программное обеспечение ППО

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

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Мониторы Хоара

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Системное программное обеспечение
В англоязычной технической литературе термин System Software (системное про­граммное обеспечение) означает программы и комплексы программ, являющие­ся общими для всех, кто совместно использует техн

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

Понятия вычислительного процесса и ресурса
Понятие «вычислительный процесс» (или просто — «процесс») является одним из основных при рассмотрении операционных систем. Последовательный процесс (иногда называемый «задачей») — это выполнение от

Диаграмма состояний процесса
Необходимо различать системные управляющие процессы, представляющие ра­боту супервизора операционной системы и занимающиеся распределением и управ­лением ресурсов, от всех других процессов: системн

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

Процессы и треды
Понятие процесса было введено для реализации идей мультипрограммирования. Напомним, в свое время различали термины «мультизадачность» и «мультипро­граммирование». Таким образом, для реализации «мул

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

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

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

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

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

Вытесняющие и не вытесняющие алгоритмы диспетчеризации
Диспетчеризация без перераспределения процессорного времени, то есть не вы­тесняющая многозадачность (non-preemptive multitasking) — это такой способ диспетчеризации процессов, при котором активный

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

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

Управление вводом/выводом
Необходимость обеспечить программам возможность осуществлять обмен дан­ными с внешними устройствами и при этом не включать в каждую двоичную программу соответствующий двоичный код, осуществляющий с

Режимы управления вводом/выводом
Как известно, имеются два основных режима ввода/вывода: режим обмена с опро­сом готовности устройства ввода/вывода и режим обмена с прерываниями. Рас­смотрим рис. 4.1.

Закрепление устройств, общие устройства ввода/вывода
Как известно, многие устройства не допускают совместного использования. Пре­жде всего, это устройства с последовательным доступом. Такие устройства могут стать закрепленными, то есть быть предостав

Основные системные таблицы ввода/вывода
Каждая ОС имеет свои таблицы ввода/вывода, их состав (количество и назначе­ние каждой таблицы) может сильно отличаться. В некоторых ОС вместо таблиц создаются списки, хотя использование статических

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

Кэширование операций ввода/вывода при работе с накопителями на магнитных дисках
Как известно, накопители на магнитных дисках обладают крайне низкой скоро­стью по сравнению с быстродействием центральной части компьютера. Разница в быстродействии отличается на несколько порядков

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

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

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

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

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

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

Общая модель файловой системы
Функционирование любой файловой системы можно представить многоуровневой моделью, в которой каждый уровень предоставляет некоторый интерфейс (набор функций) вышележащему уровню, а сам, в с

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

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

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

Интерфейс прикладного программирования
Прежде всего необходимо однозначно разделить общий термин API (application program interface, интерфейс прикладного программирования) на следующие направления: API как интерфейс высо

Реализация функций API на уровне ОС
При реализации функций API на уровне ОC за их выполнение ответственность несет ОС. Объектный код, выполняющий функции, либо непосредственно входит в состав ОС (или даже ядра ОС), либо поставляется

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

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

Платформенно-независимый интерфейс POSIX
POSIX (Portable Operating System Interface for Computer Environments) — платформенно независимый системный интерфейс для компьютерного окружения. Это стандарт IEEE, описывающий системные интерфейсы

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

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

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

Использование блокировки памяти при синхронизации параллельных процессов
Все вычислительные машины и системы имеют такое средство для организации взаимного ис­ключения, как блокировка памяти. Это средство запрещает одновременное ис­полнение двух (и более) команд, которы

Алгоритм Деккера
Алгоритм Деккера основан на использовании трех переменных (листинг 6.4): перекл1, перекл2 и ОЧЕРЕДЬ. Пусть по-прежнему переменная перекл1=true тогда, ког­да процесс ПР1 хочет войти в свой критическ

Семафорные примитивы Дейкстры
Понятие семафорных механизмов было введено Дейкстрой. Семафор — пе­ременная специального типа, которая доступна параллельным процессам для проведения над ней только двух операций: «закрытия» и «отк

Мьютексы
Одним из вариантов семафорных механизмов для организации взаимного ис­ключения являются так называемые мъютексы (mutex). Термин mutex произо­шел от английского словосочетания mutual exclusion semap

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

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги