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

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

Перейти до: навігація, пошук

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

Зміст

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

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

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

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

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

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

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

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

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

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

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

[ред.] Дивись також

Особисті інструменти