Взаимные блокировки при обмене данными

 

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

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

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

Разумеется, если исходное сообщение не было утрачено, а ответ просто задер­жался, намеченный получатель может получить сообщение дважды или более раз, возможно, с нежелательными последствиями.

Не все взаимоблоки­ровки, случающиеся в системах обмена данными или в сетях, относятся к коммуни­кационным. Здесь могут встречаться и ресурсные взаимоблокировки. Рассмотрим, к примеру, сеть, показанную на рис. 6.12. Здесь изображен весьма упрощенный взгляд на Интернет. Согласно рисунку, Интернет состоит из двух видов компью­теров: хостов и маршрутизаторов. Хост (host)— это пользовательский компьютер, либо чей-то домашний персональный компьютер, либо компьютер в компании, либо корпоративный сервер. Маршрутизатор (роутер, router)является специализированным коммуникационным компьютером, пере­мещающим пакеты с данными от источника к приемнику. Каждый хост подключен к одному или нескольким маршрутизаторам либо по DSL-каналу, либо через под­ключение к кабельному телевидению, по локальной сети, по обычной телефонной линии, по беспроводной сети, по оптическому кабелю, либо по чему-нибудь еще.

Когда пакет поступает в маршрутизатор от одного из хостов, он помещается в буфер для последующей передачи другому маршрутизатору, а затем другому, до тех пор пока не будет передан по назначению. Эти буферы являются ресурсами, и их количество выражается конечным числом. На рис. 6.12 у каждого маршру­тизатора есть только восемь буферов (на практике у них имеются миллионы бу­феров, но это не меняет сути потенциальной взаимоблокировки, а только влияет на частоту ее возникновения). Предположим, что все пакеты с маршрутизатора А нужно передать маршрутизатору В, все пакеты с маршрутизатора В должны быть отправлены на маршрутизатор С, все пакеты с С должны уйти к Д, а все пакеты с D должны уйти к А. Но ни один пакет не может быть перемещен, поскольку на другом конце нет свободного буфера и мы имеем дело с классической ресурсной взаимоблокировкой, хотя и в центре коммуникационной системы.








Дата добавления: 2017-01-29; просмотров: 1564;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.