Очередной процесс S, желающий распечатать
Очередной процесс S, желающий распечатать сообщение, прочитал то же самое значение переменной N, поместил в четвертую позицию свое сообщение и нарастил значение переменной на единицу. Когда в очередной раз управление будет передано процессу R, то он, продолжая свое выполнение, в полном соответствии со значением текущей свободной позиции, полученным во время предыдущей итерации, запишет сообщение также в позицию 4, поверх сообщения процесса S.
Таким образом, процесс S никогда не увидит свое сообщение распечатанным.
Особенности взаимодействия:
1.
Процессы автономны, но должны кооперироваться во время выполнения работы (писать - читать). Проблема: очередь пустая / буфер заполнен.
2. Для правильной работы процессы должны быть синхронизированы друг с другом. На участке работ с общим ресурсом онидолжны взаимоисключать друг друга (блокировать друг друга), иначе результат может быть неверным и непредсказуемым.
Рис. 4.1. Кооперация программ при работе с общим ресурсом.
В связи с рассмотренной ситуацией важным понятием процессов является понятие "критическая секция" программы. Критическая секция - это часть программы, в которой осуществляется доступ к разделяемым данным синхронизации. Чтобы исключить ситуацию, когда два или более процессов обрабатывают разделяемые данные, необходимо сделать так, чтобы в каждый момент в критической секции, связанной с этим ресурсом, находился максимум один процесс. Этот прием называют взаимным исключением.
Пример 2. Распределение ресурсов между параллельными процессами
Простая тупиковая ситуация возникает для группы общих ресурсов (тупик - "смертельное объятие"). Программа 1, захватив ресурс 1, для продолжения работы нуждается в ресурсе 2, который захватила и удерживает программа 2, для завершения работы которой, в свою очередь, требуется ресурс 1, удерживаемый программой 1 (рис.4.2).
Рис.4.2. Тупиковая ситуация
Таким образом, подсистема УП асинхронными параллельными процессами должна обеспечить решение двух следующих задач:
Содержание Назад Вперед