Стили и методы программирования


Взаимодействие процессов и распараллеливание - часть 2


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

Когда общий ресурс один, все более или менее ясно. Но вот когда их много, и могут потребоваться сразу несколько из них...

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

Если все пять философов одновременно сядут за стол и возьмут по вилке в правую руку, то они так за этим столом и умрут с голоду.

Этот пример - классическая задача параллельного программирования. Все теоретические дисциплины управления параллельными процессами проверяются на ней.




Начало  Назад  Вперед