Ноу Інти, лекція, алгоритми синхронізації

Анотація: Для коректної взаємодії процесів недостатньо одних організаційних зусиль операційної системи. Необхідні певні внутрішні зміни в поведінці процесів. У цій лекції розглядаються питання, пов'язані з такими змінами, наводяться програмні алгоритми коректної організації взаємодії процесів.

У попередній лекції ми говорили про зовнішні проблеми кооперації, пов'язаних з організацією взаємодії процесів з боку операційної системи. Припустимо, що надійний зв'язок процесів організована, і вони вміють обмінюватися інформацією. Чи потрібно нам робити ще які-небудь дії для організації правильного рішення задачі взаємодіючими процесами? Чи потрібно змінювати їх внутрішнє поведінку? Роз'яснення цих питань і присвячена дана лекція.

Interleaving, race condition і взаємовиключення

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

  1. Відрізати шматок хліба.
  2. Відрізати шматочок ковбаси.
  3. Намазати шматок хліба маслом.
  4. Покласти скибочку ковбаси на підготовлений шматок хліба.

Неподільні операції можуть мати внутрішні невидимі дії (взяти батон хліба в ліву руку, взяти ніж в праву руку, провести відрізання). Ми ж називаємо їх неподільними тому, що вважаємо виконуваними за раз, без переривання діяльності.

Нехай є дві активності

Схожі статті