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

До сих пор вся наша работа сосредотачивалась на взаимоблокировках, связанных с использованием ресурсов. Один процесс нуждается в том, чем обладает другой процесс, и должен ждать, пока тот не высвободит то, что он удерживает.
Иногда в качестве ресурсов выступают аппаратные или программные объекты, к примеру приводы Blu- гау-дисков или записи базы данных, а иногда они имеют более абстрактную форму. Ресурсная взаимоблокировка является проблемой синхронизации соперничества. Независимые процессы завершат обслуживание, если их выполнение не будет чередоваться с соперничающими процессами. Процесс блокирует ресурсы с целью предотвращения их непоследовательного состояния, вызываемого чередующимся доступом к ресурсам. В листинге 6.2 показана ресурсная взаимоблокировка, где в качестве ресурсов выступают семафоры. Это намного более абстрактное понятие, чем привод Blu-ray-дисков, но в этом примере каждый процесс успешно получает ресурс (один из семафоров) и попадает во взаимоблокировку, пытаясь получить еще один ресурс (другой семафор). Эта ситуация представляет собой классическую взаимоблокировку, связанную с использованием ресурсов.

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

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

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

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

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

Читатели, заинтересовавшиеся сетевыми протоколами, могут обратиться к другой книге автора — «Computer Networks»[39] (Tanenbaum and Wetherall, 2010). Не все взаимоблокировки, случающиеся в системах обмена данными или в сетях, относятся к коммуникационным. Здесь могут встречаться и ресурсные взаимоблокировки. Рассмотрим, к примеру, сеть, показанную на рис. 6.12. Здесь изображен весьма упрощенный взгляд на Интернет. Согласно рисунку, Интернет состоит из двух видов компьютеров: хостов и маршрутизаторов. Хост (host) — это пользовательский компьютер, либо чей-то домашний планшетный или персональный компьютер, либо компьютер в компании, либо корпоративный сервер. Хосты работают на людей. Маршрутизатор (роутер, router) является специализированным коммуникационным компьютером, перемещающим пакеты с данными от источника к приемнику. Каждый хост подключен к одному или нескольким маршрутизаторам по DSL-каналу, телевизионному кабелю, локальной сети, обычной телефонной линии, беспроводной сети, оптическому кабелю либо по чему-нибудь еще.

Рис. 6.12. Ресурсная взаимоблокировка в сети


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

6.7.3.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

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

  1. § 74 Взаимное соответствие распоряжений завещателя. – Оставление законного в силе при уничтожении того, что незаконно. – Толкование завещаний. – Примеры из практики.
  2. 18.6. Государственное регулирование работы с персональными данными
  3. 18.3. Правовые основы работы с персональными данными
  4. § 65 Компания на акциях. – Первоначальное управление. Выбор правления. – Общее собрание акционеров. – Состав его, созыв, предметы обсуждения, порядок решения. – Отчетность и контроль. – Прекращение компании и ликвидация. – Ограничение в устройстве компаний для банковых операций. – Предполагаемые преобразования. – Иностранные компании. – Товарищество взаимного кредита и другие союзы взаимного содействия.
  5. ТУННЕЛЬ ЗАПЯСТНЫЙ (БЛОКИРОВКА) См. статью ЗАПЯСТЬЕ.
  6. Физическая блокировка
  7. Эмоциональная блокировка
  8. Духовная блокировка
  9. Ментальная блокировка
  10. Блокировка привязанности и интимности
  11. Статья 707. Обмен товара
  12. Биотоки и обмен веществ
  13. 8.5. Документированная информация в международном информационном обмене
  14. Обмен энергией
  15. П.К. Мораль и обмен Нежностью
  16. Разведение понятий “психотерапия” и “обмен опытом”