Главная » Просмотр файлов » Гордеев А.В. Операционные системы (2-е изд., 2004)

Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 62

Файл №1186250 Гордеев А.В. Операционные системы (2-е изд., 2004) (Гордеев А.В. Операционные системы (2-е изд., 2004)) 62 страницаГордеев А.В. Операционные системы (2-е изд., 2004) (1186250) страница 622020-08-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 62)

Перед записью порции новых данных процесс «писатель» уве­личивает на 1 значение переменной VI, а после записи — переменной V2. Читательобращается к V2 перед чтением данных, а к VI — после. Если при этом переменныеVI и V2 равны, то очевидно, что получена правильная версия данных. Если же дан­ные обновлялись за время чтения, то операция повторяется.

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

Однако необходимо иметь в виду не­нулевую вероятность зацикливания чтения при высокой интенсивности операциизаписи. Наконец, если само чтение представляет собой достаточно длительнуюоперацию, то оператор V := V2 для процесса «читатель» может быть заменен следу­ющим оператором:Repeat V := V2 Until VI = VЭто предотвратит выполнение читателем операции чтения, если писатель уже на­чал запись.Мониторы ХоараАнализ рассмотренных задач показывает, что, несмотря на очевидные достоинст(простота, независимость от количества процессов, отсутствие активного ожйДния), семафорные механизмы имеют и ряд недостатков. Эти механизмы являютслишком примитивными, так как семафор не указывает непосредственно на син(^тниторы Хоара*±Lонизирующее условие, с которым он связан, или на критический ресурс.

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

К таким решениям можно отнеститак называемые мониторы, предложенные Хоаром [52].В параллельном программировании монитор — это пассивный набор разделяемыхпеременных и повторно входимых процедур доступа к ним, которым процессыпользуются в режиме разделения, причем в каждый момент им может пользовать­ся только один процесс.Рассмотрим, например, некоторый ресурс, который разделяется между процесса­ми каким-либо планировщиком [17]. Каждый раз, когда процесс желает получитьв свое распоряжение какие-то ресурсы, он должен обратиться к программе-плани­ровщику.

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

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

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

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

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

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

Для систем реального времени можно допустить использование дис­циплины обслуживания на основе абсолютных или динамически изменяемых при­оритетов.В качестве примера рассмотрим простейший монитор для выделения одного ре­сурса (листинг 7.16).Листинг 7.16. Пример монитора Хоараmonitor Resourse;condition free: { условие - свободный }var busy : boolean: { занят }procedure REQUEST: { запрос }beginif busy then WAIT ( free ):busy :=t rue:TakeOff: { выдать ресурс }end:fi/jnHMjopbi Xoapa<£.з»procedure RELEASE:beginTakeOn; { взять ресурс }busy:=fa1se;SIGNAL ( free )end;beginbusy:=false;endЕдинственный ресурс динамически запрашивается и освобождается процессами,которые обращаются к процедурам REQUEST (запрос) и RELEASE (освободить). Еслипроцесс обращается к процедуре REQUEST в тот момент, когда ресурс используется,значение переменной busy (занято) будет равно true, и процедура REQUEST выпол­нит операцию монитора WAIT(free).

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

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

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

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6551
Авторов
на СтудИзбе
299
Средний доход
с одного платного файла
Обучение Подробнее