Page 151 - 6571
P. 151

while (open == 0) wait(door_open);
                      open = open-1;
                      signal(customer_left);
                    }

                    procedure get_next_customer() {
                      barber = barber+1;
                      signal(barber_available);
                      while (chair == 0) wait(chair_occupied);
                      chair = chair-1;
                    }
                    procedure finished_cut() {
                      open = open+1;
                      signal(door_open);
                      while (open > 0) wait(customer_left);
                    }
                  }

                  У наведеній реалізації монітора використовується процедура
            get_haircut, що містить два оператори wait, оскільки відвіду-

            вач проходить через два етапи: спочатку він чекає, поки не звіль-
            ниться перукар, а потім – поки не закінчиться стрижка.


                  Запитання для самоперевірки

                  1. Яку роль відіграє програмний монітор у задачі про читачів
            та письменників?

                  2. Яким  чином  виконується  синхронізація  процесів  у  задачі
            про читачів та письменників із використанням моніторів?
                  3. Яке основне призначення інтервального таймера?
                  4. У чому полягає принцип роботи інтервального таймера?

                  5. Що виступає ресурсом у моніторі який реалізує інтерваль-
            ний таймер?
                  6. Який принцип роботи інтервального таймера з покриваю-

            чою умовою?
                  7. Який  принцип  роботи  інтервального  таймера  з  пріоритет-
            ним очікуванням?
                  8. Яке формулювання задачі про сплячого перукаря?

                  9. У чому полягає суть синхронізації під назвою «рандеву»?
                  10. Який  алгоритм  рішення  задачі  про  сплячого  перукаря  з
            використанням програмних моніторів?






                                                        150
   146   147   148   149   150   151   152   153   154   155   156