Page 79 - 6571
P. 79

критична секція;
                      протокол виходу;
                      некритична секція;
                    }

                  }
                  Кожна критична секція є послідовністю операторів, що мають

            доступ до деякого спільного об’єкту. Кожна некритична секція –
            це ще одна послідовність операторів. Передбачається, що процес,
            який увійшов в критичну секцію, обов’язково коли-небудь із неї

            вийде. Таким чином, процес може завершитися тільки поза кри-
            тичною секцією. Розробимо відповідні протоколи входу і виходу,
            які задовольняють наступним чотирьом властивостям.

                  1. Взаємне виключення. У будь-який момент часу тільки один
            процес може виконувати свою критичну секцію.
                  2. Відсутність взаємного блокування (живе блокування). Як-

            що декілька процесів намагаються увійти в свої критичні секції,
            то хоча б одному це обов’язково вдасться.
                  3. Відсутність зайвих затримок. Якщо один процес намага-
            ється увійти в свою критичну секцію, а інші виконують свої не-

            критичні  секції  або  уже  завершили  своє  виконання,  першому
            процесу дозволяється вхід в критичну секцію.
                  4.  Можливість  входу.  Процес,  який  намагається  увійти  в

            критичну секцію, рано чи пізно це зробить.
                  Перші  три  властивості  є  властивостями  безпеки,  четверта  –
            властивістю  живучості.  Для  взаємного  виключення  поганим  є
            стан, коли два процеси перебувають у своїх критичних секціях.

            Для  відсутності  взаємного  блокування  поганим  є  стан,  коли  всі
            процеси очікують входу у секцію, але жоден із процесів не може
            його виконати. У рішенні з активним очікуванням такий стан на-

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

            ється  увійти  в  критичну  секцію,  не  може  цього  зробити,  навіть
            якщо всі інші процеси знаходяться поза межами критичних сек-
            цій.  Можливість  входу  є  властивістю  живучості,  оскільки  вона

            залежить від стратегії планування.
                  Тривіальний спосіб вирішення задачі критичної секції поля-
            гає в обмеженні кожної критичної секції кутовими дужками, тоб-
            то  у  використанні  безумовних  операторів  await.  Із  семантики

                                                        78
   74   75   76   77   78   79   80   81   82   83   84