багаторазове використання, але на відміну від реєнтабельних їх не можна переривати. Повторно вхідні програмні модулі складаються з привілейованих секцій і повторне звертання до них можливо тільки після завершення якої-небудь з таких секцій. Повторно вхідних програмних модулях чітко визначені всі припустимі (можливі) точки входи.
1.3. Особливості алгоритмів керування ресурсами
Від ефективності алгоритмів керування локальними ресурсами комп'ютера багато в чому залежить ефективність всієї мережевої ОС вцілому. Наприклад, у залежності від особливостей використаного алгоритму керування процесором, ОС поділяють на багатозадачні й однозадачні, багатокористувацькі й однокористувацькі, на системи, що підтримують багатониткову обробку і не підтримують її, на багатопроцесорні й однопроцесорні системи.
Підтримка багатозадачності. По числу одночасно виконуваних задач ОС можуть бути розділені на два класи:
· однозадачні (наприклад, MS-DOS, MSX);
· багатозадачні (OC EC, OS/2, UNІ, Wіndows 95).
Однозадачні ОС в основному виконують функцію надання користувачу віртуальної машини, роблячи більш простим і зручним процес взаємодії користувача з комп'ютером. Однозадачні ОС включають засоби керування периферійними пристроями, засоби керування файлами, засоби спілкування з користувачем.
Багатозадачні ОС, крім перерахованих вище функцій, керують поділом спільно використовуваних ресурсів, таких як процесор, ОП, файли і зовнішні пристрої.
Підтримка багатокористувацького режиму. По числу одночасно працюючих користувачів ОС поділяються на:
· однокористувацькі (MS-DOS, Wіndows 3.x, ранні версії OS/2);
· багатокористувацькі (UNІ, Wіndows NT).
Головною відмінністю багатокористувацьких систем від однокористувацьких є наявність засобів захисту інформації кожного користувача від несанкціонованого доступу інших користувачів. Важливо відмітити, що не всяка багатозадачна система є багатокористувацькою, і не всяка однокористувацька ОС є однозадачною.
Виштовхуюча і невиштовхуюча багатозадачність. Найважливішим розподілюваним ресурсом є процесорний час. Спосіб розподілу процесорного часу між декількома одночасно існуючими в системі процесами (чи нитками) багато в чому визначає специфіку ОС. Серед безлічі існуючих варіантів реалізації багатозадачності можна виділити дві групи алгоритмів:
невиштовхуюча багатозадачність (NetWare, Wіndows 3.x);
виштовхуюча багатозадачність (Wіndows NT, OS/2, UNІ).
Основною відмінністю між виштовхуючим і невиштовхуючим варіантами багатозадачності є степінь централізації механізму планування процесів. У першому випадку механізм планування процесів цілком зосереджений в ОС, а в другому - розподілений між системою і ПП. При невиштовхуючій багатозадачності активний процес виконується доти, поки він сам, по власної ініціативі, не віддасть керування ОС для того, щоб та вибрала з черги інший готовий до виконання процес.
Підтримка багатонитковості. Важливою властивістю ОС є можливість розпаралелювання обчислень у рамках однієї задачі. Багатониткова ОС розділяє процесорний час не між задачами, а між їх окремими вітками (нитками).
Багатопроцесорна обробка. Іншою важливою властивістю ОС є відсутність чи наявність у ній засобів підтримки багатопроцесорної обробки - мультипроцесування. Мультипроцесування приводить до ускладнення всіх алгоритмів керування ресурсами.
2. Поява мультипрограмних ОС для мейнфреймів
Революційною подією даного етапу з'явилася промислова реалізація мультипрограмування. (Помітимо, що у вигляді концепції й експериментальних систем цей спосіб організації обчислень існував уже біля десяти років.) В умовах різко зрослих можливостей комп'ютера по обробці й зберіганню даних виконання тільки однієї програми в кожний момент часу виявилося вкрай неефективним. Рішенням стало мультипрограмування — спосіб організації обчислювального процесу, при якому в пам'яті комп'ютера перебувало одночасно кілька програм, що поперемінно виконуються на одному процесорі. Ці вдосконалення значно поліпшили ефективність обчислювальної системи: комп'ютер тепер міг використовуватися майже постійно, а не менш половини часу роботи комп'ютера, як це було раніше.
Мультипрограмні системи пакетної обробки так само, як і їхні однопрограмні попередники, мали за мету забезпечення максимального завантаження апаратури комп'ютера, однак вирішували це завдання більш ефективно. У мультипрограмному пакетному режимі процесор не простоював, поки одна програма виконувала операцію в/в (як це відбувалося при послідовному виконанні програм у системах ранньої пакетної обробки), а перемикався на іншу готову до виконання програму. У результаті досягалося збалансоване завантаження всіх пристроїв комп'ютера, а отже, збільшувалося число завдань, розв'язуваних за одиницю часу.
У мультипрограмних системах пакетної обробки користувач як і раніше був не має змоги інтерактивно взаємодіяти зі своїми програмами. Для того щоб хоча б частково повернути користувачам відчуття безпосередньої взаємодії з комп'ютером, був розроблений інший варіант мультипрограмних систем — системи поділу часу. Цей варіант розрахований на багатотермінальні системи, коли кожний користувач працює за своїм терміналом.
Реалізація мультипрограмування зажадала внесення дуже важливих змін в апаратури комп'ютера, безпосередньо спрямованих на підтримку нового способу організації обчислювального процесу. При поділі ресурсів комп'ютера між програмами необхідно забезпечити швидке перемикання процесора з однієї програми на іншу, а також надійно захистити коди й дані однієї програми від ненавмисного або навмисного псування іншою програмою. У процесорах з'явилися привілейований і користувацький режими роботи, спеціальні регістри для швидкого перемикання з однієї програми на іншу, засобу захисту областей пам'яті, а також розвинена система переривань.
У привілейованому режимі, призначеному для роботи програмних модулів операційної системи, процесор міг виконувати всі команди, у тому числі й ті з них, які дозволяли здійснювати розподіл і захист ресурсів комп'ютера. Програмам, що працюють у користувацькому режимі, деякі команди процесора були недоступні. Таким чином, тільки ОС могла управляти апаратними засобами й виконувати роль монітора й арбітра для користувацьких програм, які виконувалися в непривілейованому, користувацькому режимі.
2.1. Мультипроцесорна обробка
Мультипроцесорна обробка — це спосіб організації обчислювального процесу в системах з декількома процесорами, при якому кілька завдань (процесів, потоків) можуть одночасно виконуватися на різних процесорах системи.
Концепція мультипроцесування не нова, вона відома з 70-х років, але до середини 80-х доступних багатопроцесорних систем не існувало. Однак до теперішнього часу стало звичайним включення декількох процесорів в архітектуру навіть ПК. Більше того, багатопроцесорність тепер є