Условные переменные в мониторах Хора обычно используются:
В функциях-методах мониторов Хора обычно реализовываются
Какие из перечисленных механизмов синхронизации могут быть реализованы в вычислительной системе с помощью специальных системных вызовов?
Рассмотрим механизм синхронизации, называемый бинарными семафорами. Бинарный семафор — это семафор, который может принимать всего два значения:0
и1
. ОперацияP
для этого семафора выглядит так же, как и для семафора Дейкстры, а операцияV
заключается в простом присваивании семафору значения1
. Бинарные семафоры
Для чего нужен синхронизирующий процесс при реализации семафоров через очереди сообщений?
P
и V
 
Отладка программ, содержащих очень большое количество семафоров, затруднена, так как:
В вычислительной системе моделируется движение самосвалов от карьера к заводу и обратно по дороге со стареньким мостом. Движение по мосту может осуществляться в обоих направлениях, но на нем не может быть одновременно более трех машин, иначе он рухнет. Каждый самосвал представлен программистом процессом следующей структуры:
Semaphore mutex = 1; Semaphore not_full = 0; Shared int n_on_bridge = 0; Процесс i-й самосвал: While (1) { <доехать до моста> P(mutex); if(n_on_bridge == 3) P(not_full); else n_on_bridge = n_on_bridge+1; V(mutex); <проехать по мосту> P(mutex); if(n_on_bridge == 3) V(not_full); n_on_bridge = n_on_bridge-1; V(mutex); <доехать до места назначения> } Что может произойти в результате такого моделирования?
В вычислительной системе моделируется движение самосвалов от карьера к заводу и обратно по дороге со стареньким мостом. Движение по мосту может осуществляться в обоих направлениях, но на нем не может быть одновременно более трех машин, иначе он рухнет. Каждый самосвал представлен программистом процессом следующей структуры:
Процесс i-й самосвал (i=0,1,2,…): if(i == 0){ <создать очередь сообщений A> send(A, msg); send(A, msg); send(A, msg); } While (1) { <доехать до моста> receive(A, msg); <проехать по мосту> send(A, msg); <доехать до места назначения> } Что может произойти в результате такого моделирования?
В маленьком ресторанчике, где готовят пиццу, работают отец и три его дочери. Приготовление пиццы требует трех ингредиентов: теста, соуса и сыра. Одна дочь должна непрерывно поставлять тесто, вторая - соус, третья - тертый сыр. Приготовление пиццы происходит следующим образом: первая дочь формирует из теста основу пиццы, после чего вторая дочь намазывает лепешку соусом, а третья - посыпает сыром. Отец берет подготовленную дочерьми пиццу и помещает ее в печь. Используя классические мониторы Хора, программист предложил следующую модель приготовления пиццы с помощью четырех процессов: для отца и для каждой из дочерей.
monitor make_pizza { condition c[3]; make_item(int i){ if(i != 0 )c[i-1].wait; <выполнить свою работу> if(i != 3)c[i].signal; else <выставить на продажу> } } Процесс i-й работник i = 0,1,2,3; i=3 — соответствует отцу While (1) { make_pizza.make_item(i); } Что может произойти в результате такого моделирования?