Page 98 - 6571
P. 98

Перевага  симетричного  запису  полягає  в  тому,  що  тепер
                  алгоритм  поліклініки  для  двох  процесів  легко  узагальнити  на
                  випадок  n  процесів  (лістинг  13).  Кожен  з  процесів  спочатку
                  сигналізує,  що  він  збирається  увійти  в  критичну  секцію,

                  присвоюючи  своїм  змінним  turn  значення  1,  а  потім  він
                  знаходить максимальне значення з усіх turn[i] і додає до нього

                  1. Нарешті, процес запускає цикл for і, як і в крупномодульному
                  рішенні,  очікує  своєї  черги.  Дані  дії  не  є  неподільними,  тому
                  точний результат не гарантується. Однак, якщо декілька процесів
                  отримують одне і те ж саме значення, то вони упорядковуються

                  відповідно до правила визначеного вище.


                        Лістинг 13 – Алгоритм поліклініки (дрібномодульне рішення)
                        int turn[1: n] = ([n] 0);
                        process CS[i = 1 to n] {
                          while (true) {
                            turn[i] = 1;
                            turn[i] = max(turn[1: n])+1;
                            for [j = 1 to n st j != i]
                            while (turn[j] != 0 and (turn[i], i) > (turn[j], j))
                                skip;
                            критична секція;
                            turn[i] = 0;

                            некритична секція;
                          }
                        }

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


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

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

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



                                                              97
   93   94   95   96   97   98   99   100   101   102   103