В. Столлингс - Операционные системы (1114679), страница 141
Текст из файла (страница 141)
йй !ГОЕеп Ье1б) -с КОЛ ББКЛГОЧИТЕЛЬНОЙ ЧаСТИ>; 6,) Вторая часть с ~ри7 сача Ииа сагс~ ( 1 аС~ ЕББ ГОКЕП) Отправляет процессом ~ сообшения ассеББ с маркером рассылает сгенерированное процессом т сообпянне с запросом и БреыеннОЙ меткОЙ всем другиМ проиессам принимает От процесса сообпение с запросом и временной меткОЙ Ох ОассаБс ( тес(наес, с1ос):, 1) 1Й ';!ьОКеп ргеэеп):) с1ос К++; ЬхоассаБ~ (РОЯыеБС, С1ос)', наус (ассеББ, ~Скип); 1:ОКеп ргезепб =- ~гни; ГОКеп Ье16 =- (.гое; <критический раздел>; т> г~папеленн ' ~Метем й в каждый момент времени е — это объект, которы ~ в ка о ится менарду процессами.
Маркер— се. П оцесс, в котором находите ько в одном процессе. Роц ешения. ожет содержаться толь . без дополнительного разре мо итический раздел ез марке -ер может войти в кр й аздел, процесс передает и р а кер другому процессу. П идая свой критический Раздел, оки на из наиболее зФФек ~ Ффе тивных схем. Впервые она В этом разделе описана одн ентное ей предложение можно У'21)821; логически эквивалентное е в ~ алго итму нужны две структуры данных. У Р найти в ', я от одного процесса другому, на са М ер который передается от одно арке, которого записана времени ная метка, соответствую- ся масси сивом в В-м элементе которо о ессе Р~.
роме Р . К ме того каждый процесс щая времени, когда м р - Р а ке побывал в пр ц Р. ме те которого записана врем синая метассив запросов, в 1'-м элементе ко поддерживает массив получения зап уч проса от процесса Рг о ка, сао тветствующая моменту уч е ющем. Первоначально мар кер присваивается одн му из процессов, сов кот рый выбир е я произвольным разо ., ж аз ел, может это сделать, использовать свой критический раздел, им процессам запрос с времене цесс рассылает всем другим к итим; в противном случае про му маркер.
Покинув свой кр ро ) о (ин из них не пришлет е есс . Вы- ной меткой и ждет, пока од а ке какому-то другому пРоцессу. Р олжен передать маркер к ма ивает ческий раздел, процесс; д е щим образом. Процесс Р, просматр бор этого 2 1 не айд т '+2, ...,1,, ....у— массив запросов в следую щем порядке: 3 + 1, ( оследнего запроса больш, е чем я-е м в менная метка по 1 3 ро ре 1Ц ~ маркерЩ). Это означает, что значение маркера (запрос после и последнего пребывания в нем маркера. н алто итм, состоящии из дв з вух частей. Первая свя- ' зана с использованием кр итического раздела и состоит ая часть касается действий, ре -, ий и д-, ~ ельной части.
Вторая час ьный ского р . го раздела и заключите . ая час ре зап оса. Переменная с с; принимае мых после получения за р в менных меток. ы В полнение Функции'. счеч кинг используемый для времени о ит к ожиданию процесса до тех пор, пока не будет' жа1С ас (ассеББ, госдеп) приводит к ож " которое затем помещае щается в массив го)«.еп. получено сообщение т ипа "доступ, т б ется следуюгцее ко .
личество сообщений: Для работы алгоритма тре у б ений для рассылки запроса и 1 соо щение ° Ж сообщений (М - 1 соо ще о есс не содержит маркера; получения маркера), есл и запрашивающий процесс хо ится в этом пропессе е ни одного соо бщения если маркер наход 1 ~: я процесса Р;) Листинг 14.1. Алгоритм с передачеи маркер 1Е (ге~оеБГ (~) .> ~оьеп ( ) ) йа "о)сеп ргсзепс) 1ОЕеп ргеаепг = та1БС; БЕГО (ассяББ, ~О):Еп (~)); 144 РАСПРЯдклкннля Ф веб "В , "Взаимо"локировка и голодание", взаимоблокировка была оп$ делена как постоянно оянное блокирование ряда процессов, которые либо конкуриГ пытаясь пол чить учить доступ к системным ресурсам, либо обмениваются инФс акацией д г с гом. Ру другом. Это определение справедливо как для изолированной.
т и Лля асп ел Р ред ленной системы. Проблема взаимоблокировки, как и пробле азаимоисключения в а д леннон системе является более сложн~й системе с об ей памя щ П„инами этого усложнения является то что Глава 1 „ . е РабпРеделенпыми проц е1 Ооеобождепие перед попуппениеи запросе Рис. 14,11. Фиктивная взаимоблокировка б~ Запря: поо~упеет перед ооеобохееиием Чаешь 6. Распределенные еистемы ан узел не обладает точными сведениями о текущем состоянии всей системы, .акже то, что передача сообщения от одного процесса другому сопровождается зредсказуемой по длительности временной задержкой.
В литературе рассматриваются два вида распределенных взаимоблохировок; еникающие в связи с распределением ресурсов и возникающие при обмене сощениями. Взаимоблокировка, связанная с ресурсами, возникает тогда, когда опесс пытается получить доступ к ресурсам, например объектам данных из баданных нли ресурсам ввода-вывода, которые находятся на сервере; при этом разуется группа процессов, каждый нз которых запрашивает ресурс, которым падает другой процесс из этой группы. Взаимоблокировка, связанная с обмем сообщениями, возникает в том случае, когда требующимися процессу ресурмп являются сообщения; при этом образуется группа процессов, каждый из торых ожидает сообщения от другого процесса из этой группы и ни один просо не может отправить свое сообщение. заимоблокировка, связанная с распределением ресурсов В главе б, "Взаимоблокировка и голодание", сказано, что взаимоблоки1вка в распределении ресурсов возникает только при соблюдении всех пере~сленных условий.
° Взаимоисключение. Одновременно использовать ресурс может только один процесс. е Удержание и ожидание. Процесс может удерживать выделенные ресурсы во время ожидания других ресурсов. е Отсутствие перераспределения. Ресурс не может быть принудительно отобран у удерживающего его процесса. е Циклическое ожидание. Существует замкнутая цепь процессов, каждый из которых удерживает как минимум один ресурс, необходимый процессу, следующему в цепи после него.
Цель алгоритма обработки взаимоблокировок состоит в том, чтобы либо релотвратить образование циклического ожидания, либо обнаружить, что оно озникло или может возникнуть. В распределенной системе ресурсы распределеы по разным узлам. Доступ к ресурсам регулируется управляющими процесса- и на этих узлах.
Любой отдельный управляющий процесс не обладает полными свежими сведениями о глобальном состоянии системы и должен принимать ешение, основываясь на локальной информации. Таким образом, в распредеенной системе требуется новый алгоритм защиты от взаимоблокировок. Одной из сложностей, возникающих при управлении распределенными заимоблокировками, является явление фиктивной взаимоблокировки (рЬапЬпп еа61оск).
Пример такой взаимоблокировки проиллюстрирован на рнс. 14.11. апись Р1-~Ре — «Р» означает, что процесс Р, приостановлен в ожидании ресурса, оторым владеет процесс Ре, а процесс Ре приостановлен в ожидании ресурса, оторым владеет процесс Ре. Пусть вначале процесс Ре обладает ресурсом В„а роцесс Р, — ресурсом Ве. Предположим, что процесс Ре сначала генерирует собщение, освобождающее ресурс В„а затем — сообщение с запросом ресурса Ве. 'ели процесс выявления циклов сначала получит первое сообщение, а затем втоое, возникнет цепочка, изображенная на рис. 14.11,а.
В противном случае бу- дет зарегистрирована взаимоблокировка (рис. 14.11,б). На самом деле никакой взаимоблокпровкн не возникает; будет зарегистрирована ложная взаимоблоки ровка, вызванная отсутствием информации о глобальном состоянии. Предотвращение взаимоблокировок В распределенной среде можно использовать два метода предотвращения взаимоблокировок из тех, что обсуждались в главе б, "Взаимоблокировка и голодание".
1. Возникновения циклического ожидания можно избежать, линейно упорядочив типы ресурсов. Если процессу выделены ресурсы типа В, то он может последовательно запрашивать только те ресурсы, номер типа которых следует после В. Основной недостаток этого метода состоит в том, что не всегда ресурсы можно запрашивать в том порядке, в котором они используются, поэтому ресурсы могут удерживаться процессом дольше, чем необходимо. 2. Условий удержания и ожидания можно избежать, потребовав, чтобы sроцесс запрашивал все необходимые ресурсы одновременно, и блокируя процесс до тех пор, пока такой запрос не сможет быть полностью выполнен в один момент времени. Такой подход неэффективен по двум причинам. Вопервых, процесс может длительное время ожидать одновременной доступности всех затребованных ресурсов, в то время как реально он мог бы работать и только с частью из них.
Во-вторых, затребованные процессом ресурсы могут значительное время оставаться неиспользованными, и в течение этого времени они оказываются недоступными другим процессам. При использовании обоих методов нужно, чтобы процесс заранее мог указать свои требования к ресурсам. Это не всегда возможно; примером является приложение типа базы данных, в которую можно динамйчески добавлять новые элементы.