Золяція процесів та їх взаємодія

Одна з найважливіших цілей, які ставляться при розробці багатозадачних систем, полягає в тому, щоб різні процеси, що одночасно працюють у системі, були як можна краще ізольовані один від одного. Це означає, що процеси (в ідеалі) не повинні нічого знати навіть про існування один одного. Для кожного процесу ОС надає віртуальну машину, тобто повний набір ресурсів, що імітує виконання процесу на окремому комп'ютері.

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

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

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

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

Поняття взаємодії процесів включає в себе кілька видів взаємодії, основними з яких є:

· Синхронізація процесів, тобто, спрощено кажучи, очікування одним процесом небудь подій, пов'язаних з роботою інших процесів;

· Обмін даними між процесами.

Набір засобів, призначених для взаємодії процесів, часто позначають абревіатурою IPC (InterProcess Communication). Склад функцій і методів обумовлений багаторічним досвідом як програмістів-практиків, так і теоретиків, що розглядають проблеми взаємодії паралельних процесів.

Слід ще раз відзначити, що проблеми взаємодії процесів не залежать від способу реалізації паралельної роботи процесів в конкретній ОС. Більша частина цих проблем має місце в рівній мірі і для квазіпараллельний реалізації, і для щирої паралельності з використанням декількох процесорів. Засоби вирішення проблем, правда, можуть залежати від реалізації.