Перейти до вмісту

Багатозадачність

Матеріал з Вікіпедії — вільної енциклопедії.

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

Властивості багатозадачного середовища

[ред. | ред. код]

Примітивні багатозадачні середовища забезпечують чисте «розділення ресурсів», коли за кожним завданням закріплюється певна ділянка пам'яті, і завдання активізується в строго певні інтервали часу.

Розвиненіші багатозадачні системи проводять розподіл ресурсів динамічно, коли завдання стартує в пам'яті або покидає пам'ять залежно від її пріоритету і від стратегії системи. Таке багатозадачне середовище володіє такими особливостями:

  • Кожне завдання має свій пріоритет, відповідно до якого отримує час і пам'ять
  • Система організовує черги завдань так, щоб всі завдання отримали ресурси, залежно від пріоритетів і стратегії системи
  • Система організовує обробку переривань, за яких завдання можуть активуватися, деактивуватися і віддалятися
  • Після закінчення покладеного кванта часу завдання може тимчасово викидатися з пам'яті, віддаючи ресурси іншим завданням, а потім через визначений системою час, відновлюватися в пам'яті (свопінг)
  • Система забезпечує захист пам'яті від несанкціонованого втручання інших завдань
  • Система розпізнає збої й зависання окремих завдань і припиняє їх
  • Система вирішує конфлікти доступу до ресурсів і пристроїв, не допускаючи тупикових ситуацій загального зависання від очікування заблокованих ресурсів
  • Система гарантує кожному завданню, що рано чи пізно його буде активовано
  • Система обробляє запити реального часу
  • Система забезпечує комунікацію між процесами

Труднощі реалізації багатозадачного середовища

[ред. | ред. код]

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

Окрім надійності, багатозадачне середовище має бути ефективним. Витрати ресурсів на її підтримку не повинні заважати процесам проходити, уповільнювати їхню роботу, різко обмежувати пам'ять.

Історія багатозадачних операційних систем

[ред. | ред. код]

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

Надалі, після появи кількох вдалих рішень, багатозадачні середовища стали удосконалюватися, і в наш час[коли?] уживаються повсюдно.

Однією з перших багатозадачних систем була OS/360 (1966 [1]), використовувана для комп'ютерів фірми IBM і їхніх радянських аналогів ЄС ЕОМ. Розробки системи були сильно затягнуті, і на початковий час фірма IBM висунула однозадачний DOS/360, щоб задовольнити замовників до повної здачі OS/360 в експлуатацію. Систему розкритикували через низьку надійність і важкість в експлуатації.

У 1969 році з'явилася система UNIX з першим досить акуратним алгоритмічним розв'язанням проблеми багатозадачності. В наш час[коли?] на базі UNIX створені десятки операційних систем.

На комп'ютерах PDP-11 і їх радянських аналогах СМ-4 використовувалася багатозадачна система RSX-11 (радянський аналог ОС РВ), і система розподілу часу TSX-PLUS, що забезпечує обмежені можливості багатозадачності й розрахований на багато користувачів режим розділення часу, що емулював для кожного користувача однозадачну RT-11 (радянський аналог РАФОС). Останнє рішення було вельми популярне через низьку ефективність і надійність повноцінної багатозадачної системи.

Акуратним рішенням виявилася операційна система VMS, розроблена спочатку для комп'ютерів VAX (радянський аналог — СМ-1700) як розвиток RSX-11.

Перший у світі мультимедійний персональний комп'ютер Amiga 1000 (1984 р.) спочатку проєктувався з розрахунком на повну апаратну підтримку витискальної багатозадачності реального часу в ОС AmigaOS. У цьому випадку розробка апаратної й програмної частини велася паралельно, це привело до того, що за показником квантування планувальника багатозадачності (1/50 секунди на перемикання контексту) AmigaOS довгий час залишалася неперевершеною серед персональних комп'ютерів.

Багатозадачність забезпечувала також фірма Microsoft в операційних системах Windows. При цьому Microsoft вибрала дві лінії розробок — на базі Windows 0.9 (яка після довгого допрацювання початкової системи кооперативної багатозадачності, аналогічної Mac OS, згодом вилилася в лінійку Windows 9x), і Windows NT, на основі ідей, закладених у VMS. Використання досвіду VMS забезпечило системам істотно вищу продуктивність і надійність. За часом перемикання контексту багатозадачності (квантування) тільки ці операційні системи можуть бути порівнянні з AmigaOS і UNIX (а також його нащадками, такими, як ядро Linux).

Примітки

[ред. | ред. код]
  1. Mealy G.H., Witt B.I., Clark W.A. The functional structure of OS/360, IBM Systems Journal, 5, #1, 1966

Див. також

[ред. | ред. код]