Монитор процессов, обеспечивающий доступ к неразделяемым ресурсам. Подход к синхронизации двух... компьютерных задач, использующих общий ресурс, обычно

advertisement
МОДЕЛИРОВАНИЕ ВЗАИМОДЕЙСТВИЯ ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ
Монитор — в языках программирования, высокоуровневый механизм взаимодействия и синхронизации
процессов, обеспечивающий доступ к неразделяемым ресурсам. Подход к синхронизации двух или более
компьютерных задач, использующих общий ресурс, обычно
аппаратуру или набор переменных. При многозадачности, основанной на мониторах, компилятор или
интерпретатор прозрачно для программиста вставляет код блокиров-ки-разблокировки в соответствующим
образом оформленные процедуры, избавляя программиста от явного обращения к примитивам
синхронизации.
Монитор состоит из:
набора процедур, взаимодействующих с общим ресурсом
мьютекса
переменных, связанных с этим ресурсом
инварианта, который определяет условия, позволяющие избежать
состояние гонки.
Процедура монитора захватывает мьютекс перед началом работы и держит его или до выхода из процедуры,
или до момента ожидания условия. Если каждая процедура гарантирует, что перед освобождением мьютекса
инвариант истинен, то никакая задача не может получить
ресурс в состоянии, ведущем к гонке. Чтобы избегать состояния активного ожидания, процессы должны
сигнализировать друг другу об ожидаемых событиях. Мониторы обеспечивают эту возможность с помощью
условных переменных. Когда процедура монитора требует для дальнейшей работы выполнения
определенного условия, она ждет связанную с ним условную переменную. Во время ожидания она временно
отпускает мьютекс и выбывает из списка
исполняющихся процессов. Любой процесс, который в дальнейшем приводит к выполнению этого условия,
использует условную переменную для оповещения ждущего ее процесса. Оповещенный процесс
захватывает мьютекс обратно и может продолжаться. Поскольку ожидание условия
отпускает блокировку, ожидающий процесс должен гарантировать соблюдение инварианта, перед тем как
начать ожидание.
Задание:
Выполнить задачу «Голодные птицы» с помощью механизма синхронизации Монитор на языке
Си+комментарии
“Голодные птицы”
Есть N птенцов и их мать. Птенцы едят из общей миски, в которой сначала находятся F порций пищи.
Каждый птенец съедает порцию еды, спит некоторое время, затем снова ест. Когда кончается еда, птенец,
питавшийся последним, зовет мать. Птица наполняет миску F порциями еды и снова ждет, пока миска
опустеет. Эти действия повторяются без конца. Представьте птиц процессами и разработайте код,
моделирующий их действия. Для синхронизации используйте
указанный в варианте механизм.
Download