ВІЛЬНА УЗГОДЖЕНІСТЬ

У цій моделі для синхронізації використовуються дві операції: acquire (запитувати) і release (розблокувати). Вона схожа на модель слабкої узгодженості і в якійсь мірі усуває її недолік завдяки використанню критичних областей. Якщо процес виходить за межі критичної області, це не означає, що всі записи повинні негайно завершитися. Потрібно тільки, щоб всі записи були завершені до того, як будь-який процес знову увійде в цю критичну область.

Процеси запису / зчитування протікають в такій послідовності:

  • спочатку ПЕ виконує операцію acquire над змінної синхронізації, щоб отримати монопольний доступ до загальних даних, що розділяються. Після цього ПЕ може використовувати ці дані для запису або зчитування;
  • потім ПЕ виконує операцію release над змінної синхронізації, щоб показати, що він завершив роботу. Операція release не вимагає завершення незакінчених записів, більш того, можуть відразу ж починатися нові операції запису / зчитування. Однак операція release не може бути завершена, поки не закінчаться всі раніше розпочаті записи;
  • • перед початком наступної операції acquire проводиться перевірка попередніх операцій release на завершеність. Якщо операції release не завершені, то операція acquire затримується. Тому, коли наступна операція acquire з'явиться через досить тривалий проміжок часу після останньої операції release, їй не доведеться чекати і вона зможе увійти в критичну область без затримки. Якщо ж операція acquire з'явиться через невеликий проміжок часу після операції release, її виконання (а також виконання всіх команд, що настають за нею) може бути затримано до завершення всіх операцій release. Такий алгоритм гарантує, що всі змінні в критичній області будуть оновлені.

Таким чином, при вільній узгодженості не потрібно так часто затримувати виконання команд, як при слабкій узгодженості.

 
< Попер   ЗМІСТ   Наст >