АРІ – призначений для використання прикладними програмами системних ресурсів ОС і функцій, які ОС реалізуються.
АРІ – описує сукупність функцій і процедур, які належать ядру або надбудовам ОС.Тобто АРІ – це набір функцій, які надаються системою програмування розробнику прикладної програми і які орієнтовані на організацію взаємодії результуючої прикладної програми із сукупністю програмних та апаратних засобів, в оточенні яких виконується результуюча програма.Сама результуюча програма породжується системою програмування, ґрунтуючись на коді вихідної програми, створеної програмістом, а також об’єктних модулів і бібліотек, які входять до складу системи програмування.
АРІ використовується не тільки прикладними, а також і системними програмами як в складі ОС, так і в складі системи програмування.
Функції АРІ дозволяють розробнику будувати результуючу прикладну програму таким чином, щоби використати засоби обчислювальної системи для виконання типових операцій. При цьому розробник програми не повинен створювати вихідний код для виконання цих операцій.
Програмний інтерфейс АРІ включає в себе не тільки самі функції, але і домовленості про їх використання, які регламентуються ОС, архітектурою обчислювальної системи і системою.
Існує декілька варіантів реалізації АРІ:
1. Реалізація на рівні ОС.
2. Реалізація на рівні системи програмування.
3. Реалізація на рівні зовнішньої бібліотеки процедур і функцій.
В кожному з цих варіантів розробнику надаються засоби для підключення функцій АРІ до вихідного коду програми і організації їх викликів. Об’єктний код функцій АРІ підключається до результуючої програми компонувальником при необхідності.
23. Варіанти реалізації інтерфейсу прикладного програмування
· Перший варіант реалізації
За виконання функцій АРІ відповідальність несе ОС. Об’єктний код, який виконує функції, або безпосередньо входить до складу ОС (або навіть ядра ОС), або входить до складу бібліотек, які динамічно завантажуються, і які розроблені для даної ОС. Система програмування відповідає тільки за організацію інтерфейсу для виклику цього коду.
В цьому варіанті результуюча програма звертається безпосередньо до ОС. Тому досягається найбільша ефективність виконання функцій АРІ у порівнянні з усіма іншими варіантами реалізації АРІ.
Недолік: відсутність можливості переносу не тільки коду результуючої програми, але і коду вихідної програми. Програма, створена для одної архітектури обчислювальної системи, не зможе виконуватись на обчислювальній системі іншої архітектури навіть після того, якщо її об’єктний код буде повністю перебудовано.
Частіше за все система програмування не зможе виконати перебудову вихідного коду для нової архітектури обчислювальної системи.
Можна уніфікувати функції АРІ в різних ОС. Але є корпоративні інтереси.
Приклад: Для ОС Microsoft Windows – WinAPI.
Але навіть всередині цього корпоративного АРІ існує певна невідповідність, яка дещо обмежує переносимість програм між різними ОС типу Windows.
Приклад: АРІ – набір сервісних функцій ОС для MS-DOS, який реалізовано у вигляді набору підпрограм обслуговування програмних переривань.
· Другий варіант реалізації
В цьому випадку функції АРІ надаються користувачу у вигляді бібліотеки функцій відповідної мови програмування. Система програмування надає користувачу бібліотеку відповідної мови програмування і забезпечує підключення до відповідної програми об’єктного коду, що відповідає за виконання цих функцій.
Ефективність АРІ буде нижче, ніж у попередньому варіанті. Це тому, що для виконання багатьох функцій АРІ бібліотека мови програмування повинна все одно виконати звертання до функцій ОС.
Але переносимість буде самою високою, оскільки синтаксис і семантика всіх функцій будуть строго регламентовані в стандарті мови. Вони залежать від мови і не залежать від архітектури обчислювальної системи. Тому для виконання прикладної програми на новій архітектурі обчислювальної системи досить заново побудувати код результуючої програми за допомогою відповідної системи програмування.
Але є нестандартні бібліотеки.
· Третій варіант реалізації
В цьому випадку функції АРІ надаються користувачу у вигляді бібліотеки процедур і функцій, яка може бути створена стороннім розробником.
Система програмування відповідала тільки за те, щоби підключити об’єктний код бібліотеки до результуючої програми, причому зовнішня бібліотека може бути і такою, що динамічно завантажується (тобто завантажується під час виконання програми).
З точки зору ефективності цей метод найгірший, оскільки зовнішня бібліотека звертається як до функцій ОС, так і до функцій мови програмування.
З точки зору переносимості, то тут тільки одна вимога – зовнішня бібліотека, яка використовується, повинна бути допустимою в довільній з архітектур обчислювальних систем, на які орієнтована прикладна програма. Це можливо, якщо бібліотека відповідає деякому прийнятому стандарту, а система програмування підтримує цей стандарт.
Бібліотека графічного інтерфейсу XLib підтримує стандарт графічного середовища XWindow:
MFC (Microsoft foundationclasses) (OC Windows);
VCL (Visual controls library), „Borland”;
CLX, „Borland” (OC Linux, OC Windows).
Як правило АРІ не стандартизовані. В кожному конкретному випадку набір викликів АРІ визначається, перш за все, архітектурою ОС та її призначенням.
Робляться спроби стандартизувати деякий базовий набір функцій, оскільки це суттєво полегшує перенос програм з одної ОС на іншу.
Приклад: стандарт POSIX. В ньому перераховано великий набір функцій, їх параметрів та значень, що повертаються. Стандартизуються не тільки звертання до АРІ, але і файлова система, організація доступу до зовнішніх пристроїв, набір системних команд.
Приклад: Внутрішній корпоративний стандарт Microsoft, WinAPI.
Win16, Win32S, Win32, WinCE. З точки зору WinAPI, базова задача – вікно. Тобто він орієнтований на роботу в графічному середовищі.
24. Особливості базової архітектури ОС UNIX.
Початок розробки 1965 рік Multics. 1971 році UNIX на PDP-11 в 1973 році переписана на Ci. На початку 1984 року інстальована приблизно на 100 000 комп’ютерах. (BSD – BerkeleySoftwareDistribution; SCO – Santa-CruzOperation; Linux).
Переваги та популярність пояснюються такими фактами:
1. Система написана на мові високого рівня Ci, завдяки цьому її легко читати, розуміти, модифікувати, переносити.
2. Наявність досить простого інтерфейсу користувача, який має можливість надавати користувачу всі необхідні послуги (зараз є інтерфейс аналогічний Windows 98, X-Windows та інше).
3. Є досить прості засоби, які дозволяють створювати складні програми з простіших.
4. Наявність ієрархічної файлової системи, яка легка у використанні та ефективна в роботі.
5. Забезпечується узгодження форматів у файлах, робота з послідовним потоком байтів, завдяки чому отримуємо більш легке читання прикладних програм.
6. Наявність простого інтерфейсу з периферійними пристроями.
7. Система є багатокористувацькою, багатозадачною, кожний користувач може одночасно виконувати декілька процесів. (Працює в одно-процесорному, багатопроцесорному та багатомашинному режимах).
8. Архітектура комп’ютера закрита від користувача який працює під UNIX, що полегшує процес написання програми, що працюють на різних конфігураціях апаратних засобів.
9. UNIX підтримує довільну мову програмування, для якої є транслятор та забезпечується системний інтерфейс, що встановлює відповідність між користувацькими запитами та набором запитів, що прийняті в UNIX.
25. Призначення ядра ОС Linux та його особливості
Ядро UNIX виконує функцію головного організатора її роботи. Воно виконує:
- керує послідовністю виконання процесів;
- резервує основну пам’ять та простір на дискетах;
- керує обміном даними між основною пам’яттю та периферійними пристроями;
- приймає від процесів запити на обслуговування.
Ядро – резидентна, в основній пам’яті, частина ОС. Ядро UNIX реалізує відносно обмежений набір функцій. Воно не реалізує жодної функції, яка безпосередньо служить користувачу. Для цього існують утиліти, які є посередниками між користувачем та ядром. Розробляти, експлуатувати та адаптувати програми – утиліти набагато простіше, ніж ядро системи. Ядро UNIX реалізовано приблизно на 10 000 операторах мови Ci та 1 000 операторах на мові Асемблеру (Основна ідея – мобільність).
Ядро складається з двох секцій:
1) керування процесами;
2) керування ресурсами (пристроями).
Перші, резервують ресурси, визначають послідовність виконання процесів та приймаються і обслуговуються запити від них. Другі, контролюють передачу даних між основною пам’яттю та периферією.
Мобільність полягає в тому, що на різних типах комп’ютерів можуть використовуватись практично ідентичні секції керування процесами.
Секція керування пристроями, що призначена для роботи на конкретному комп’ютері, вміщує по одному модулю на кожний периферійний пристрій, підключений до комп’ютера (модуль – драйвер). При підключенні пристрою нового типу треба додавати новий драйвер.
26. Концепція модулів ядра в ОС Linux
Ядро UNIX – це не проста послідовна програма. Воно вміщує декілька важливих таблиць, які використовуються для координації взаємопов’язаних потоків, що повинні виконуватися. Це є приклад програми структура якої визначена даними, тому її вивчення слід починати з інформаційних таблиць. Більша частина роботи ядра – це пошук в таблицях і їх модифікація.
У довільний момент часу комп’ютер виконує або програму користувача (процес), або процес ОС. Деякі механізми ОС можуть виконувати запит на переключення з режиму користувача в режим ядра.
1. Системний годинник. Періодично формується переривання, тобто сигнал, що переключає комп’ютер на виконання спеціальної службової програми. Ця програма, обслуговування системного годинника, виконує переоцінку пріоритетів процесів і таким чином може відбутися зміна процесу, що виконується.
2. Системний виклик. Якщо у програми користувача виникає необхідність в послугах ОС, вона генерує системний виклик. Як наслідок – перехід з режиму користувача в режим ядра. Системні виклики, що виконують операції вводу/виводу, досить часто приводять до зупинки процесу, який ініціював виклик, на час передачі даних. Під час паузи може виконуватись інший процес користувача. Часто ініціюють роботу механізму розподілення часу.
3. Обслуговування периферійних пристроїв вводу/виводу. Для нормального продовження роботи процесу, що запустив операцію вводу/виводу, після закінчення передачі інформації виробляється переривання. Воно звичайно приводить до змін стану різних елементів, в таблицях і може ініціювати наступний обмін.
ОС UNIX підтримує у користувача дві ілюзії:
1. Файлова система розміщена в конкретному місці носія.
2. Процес “живе” своїм життям.
27. Основні компоненти архітектури ОС Windows
Компоненти системи розподілені між чотирма рівнями (Ring 0.. Ring 3), які пропонують різний ступінь системного захисту. Захист рівня Ring 3 виконується внутрішніми засобами архітектури процесора Intel. Найменш захищений рівень Ring 0 вміщує код найвищого рівня (файлова система і менеджер віртуальних машин).
28. Призначення рівня абстрагування від апаратури в ОС Windows
Засоби абстрагування від устаткування, які взаємодіють із апаратним забезпеченням безпосередньо, звільняючи від реалізації такої взаємодії інші компоненти системи.
У Windows XP рівень абстрагування від устаткування називають HAL (hardware abstraction layer). Для різних апаратних конфігурацій фірма Microsoft або сторонні розробники можуть постачати різні реалізації HAL.
Хоча код HAL є дуже ефективним, його використання може знижувати продуктивність застосувань. Тому для мультимедіа використовують спеціальний пакет DirectX, який дає змогу прикладним програмам звертатися безпосередньо до апаратного забезпечення, обминаючи HAL та інші рівні системи.
29. Основні компоненти підсистеми виконання в ОС Windows
Виконавча система (ВС) Windows XP (Windows XP Executive) — це набір компонентів, відповідальних за найважливіші служби ОС (керування пам’яттю, процесами і потоками, введенням/виведенням тощо).
Компонентами ВС є передусім базові засоби підтримки. Ці засоби використовують у всій системі.
Менеджер об’єктів — відповідає за розподіл ресурсів у системі, підтримуючи їхнє універсальне подання через об’єкти.
Засіб локального виклику процедур (LPC) — забезпечує механізм зв’язку між процесами і підсистемами на одному комп’ютері.
Інші компоненти ВС реалізують найважливіші служби Windows XP. Зупинимося на деяких із них.
Менеджер процесів і потоків — створює та завершує процеси і потоки, а також розподіляє для них ресурси.
Менеджер віртуальної пам’яті — реалізує керування пам'яттю в системі, насамперед підтримку віртуальної пам’яті.
Менеджер введення-виведення — керує периферійними пристроями, надаючи іншим компонентам апаратно/незалежні засоби введення/виведення. Цей менеджер реалізує єдиний інтерфейс для драйверів пристроїв.
Менеджер кешу — керує кешуванням для системи введення/виведення. Блоки диску, що часто використовуються тимчасово зберігаються в пам’яті, наступні операції введення-виведення звертаються до цієї пам’яті, внаслідок чого підвищується продуктивність.
Менеджер конфігурації — відповідає за підтримку роботи із системним реєстром (registry) — ієрархічно організованим сховищем інформації про налаштування системи і прикладних програм.
Довідковий монітор захисту — забезпечує політику безпеки на ізольованому комп’ютері, тобто захищає системні ресурси.
30. Об’єктна модель архітектури ОС Windows
Керування ресурсами у Windows XP реалізується із застосуванням концепції об’єктів. Об’єкти надають універсальний інтерфейс для доступу до системних ресурсів, для яких передбачено спільне використання, зокрема таких, як процеси, потоки, файли і пам’ять, що розподіляється. Концепція об’єктів забезпечує важливі переваги.
Імена об’єктів організовані в єдиний простір імен, де їх легко знаходити.
Доступ до всіх об’єктів здійснюється однаково. Після створення нового об’єкту або після отримання доступу до наявного менеджер об’єктів повертає у застосування дескриптор об’єкту (objecthandle).
Забезпечено захист ресурсів. Кожну спробу доступу до об’єкту розглядає підсистема захисту — без неї доступ до об’єкту, а отже і до ресурсу, отримати неможливо.
Менеджер об’єктів відповідає за створення, підтримку та ліквідацію об’єктів, задає єдині правила для їхнього іменування, збереження й забезпечення захисту. Підсистеми середовища звертаються до менеджера об’єктів безпосередньо або через інші сервіси ВС. Наприклад, під час запуску застосування підсистема Win32 викликає менеджер процесів для створення нового процесу. В свою чергу менеджер процесів звертається до менеджера об’єктів для створення об’єкту, що представляє процес.
Об’єкти реалізовано як структури даних в адресному просторі ядра. При перезавантаженні системи вміст усіх об’єктів губиться.
31. Розкрийте поняття „обчислювальний процес”.
Поняття „обчислювальний процес” є одним із основних при вивченні операційних систем. Притримуємось такого визначення: Процес (або задача) – це програма під час виконання на процесорі із послідовним виконанням команд.
У свою чергу, безпосередньому розв`язанню задач на комп`ютері передує досить складна та трудомістка послідовність дій, необхідних для підготовки обчислювального процесу. Дуже часто процес підготовки задачі до розв`язання становить 90 – 95%, а безпосереднє розв`язання лише 5 – 10% від загального часу.
Розв’язання будь-якої задачі складається з кількох етапів, а саме:
– постановка завдання (з’ясування кінцевої мети і розроблення загального підходу до досліджуваної проблеми);
– формалізація (побудова математичної моделі розглядуваного явища);
– вибір (або розроблення) методу розв’язування;
– розроблення алгоритму(побудова розв’язання у формі алгоритму, що складається зі скінченної послідовності інструкцій, кожна з яких має чіткий зміст і може бути виконана з певними обчислювальними затратами за скінченний час);
– складання програми (подання алгоритму у формі, зрозумілій ЕОМ);
– відлагоджування програми (перевірка її візуально та виявлення помилок у процесі компіляції;
– обчислення та обробка результатів (отримання розв’язку задачі шляхом виконання завершеної програми).
Поряд з цими етапами користувач у процесі розв’язування задачі може виконувати також наступні:
– вибір мови програмування;
– опис структури даних;
– оптимізація програми;
– тестування;
– документування та ін.
Процесом може бути:
- виконання утиліти;
- виконання прикладної програми;
- трансляція вихідної програми (одної програми – один процес, іншої програми – інший процес).
2. Види обчислювального процесу.
1) Лінійний обчислювальний процес
Лінійним називають такий обчислювальний процес, в алгоритмі якого використовується лише базова конструкція типу слідування. Це означає, що у процесі реалізації алгоритму лінійної структури дії виконуються один раз, а їх послідовність визначається номером блочного символу(блок із номером N завжди виконується після блоку з номером N–1, де N – натуральне число).
2) Розгалужений обчислювальний процес
Розгалуженим називають такий обчислювальний процес, в алгоритмі якого передбачене розгалуження деякої послідовності дій на два (іноді три) напрямки залежно від результату перевірки заданої умови. В алгоритмах розгалуженої структури завжди присутній блочний символ "Вибір", після якого дії виконуються по одній із двох (трьох) гілок.
3) Циклічний обчислювальний процес
Циклічним називають такий обчислювальний процес, в алгоритмі якого деяка група блочних символів виконується багаторазово. Алгоритм циклічної структури застосовується як самостійно (наприклад, для обчислення значень функцій, для обробки масивів даних), так і в складі більш складних алгоритмів.
32. Основні стани обчислювального процесу.
Розглядаємо комп’ютер з одним центральним процесором, але всі подальші міркування справедливі і для багатопроцесорних систем.
Основні стани процесу
За період свого існування процес приймає ряд дискретних станів. Зміну станів процесу можуть викликати різні події.
Процес знаходиться в стані виконання, якщо в біжучий момент йому надається центральний процесор (CPU).
Процес знаходиться в стані готовності, якщо він міг би одразу використати CPU, який знаходиться в його розпорядженні.
Процес знаходиться в стані блокування, якщо він очікує на деяку подію (наприклад, завершення операції вводу/виводу) для того, щоби отримати можливість продовжити виконання.
33. Умови переходу обчислювального процесу із стану в стан.
В ОС, як правило, процес з’являється при запуску довільної програми. Коли процес створено, він займає місце в кінці списку готових процесів. Він поступово просувається до початку списку – у відповідності з тим, як завершується виконання попередніх процесів.
Коли процес буде першим у списку готових процесів, і коли звільниться CPU, цьому процесу виділяється CPU і кажуть, що відбувається зміна станів процесу. Він переходить від стану готовності до стану виконання.
Вибір процесу для виконання називається „Пуском”, і це виконується за допомогою програми ОС, яка називається диспетчером.
В мультипрограмних системах для того, щоби запобігти випадковому або навмисному захопленню ресурсів комп’ютерної системи одним довільним процесом, ОС встановлює в спеціальному апаратному таймері переривань деяке значення, яке визначає часовий інтервал або квант часу, на протязі якого, біжучому процесу користувача дозволяється утримувати CPU в своєму розпорядженні.
Після закінчення кванту часу таймер виробить сигнал переривання, за яким керування буде передано ОС.
Після цього ОС переводить процес, що перед цим виконувався, в стан готовності, а перший процес із списку готових – в стан виконання.
Якщо процес, що виконується, ще до закінчення кванту часу генерує операцію вводу/виводу, він тим самим сам звільнює ЦП (тобто сам себе блокує на час закінчення операції вводу/виводу).
В системі з трьома активними станами процесу, можлива ще одна зміна станів – після завершення операцій вводу/виводу. Процес переходить із заблокованого стану в стан готовності.
Таким чином маємо чотири можливі зміни станів процесу. Єдина зміна станів, що викликається самим процесом користувача – блокування. Інші три зміни викликаються об’єктами, що є зовнішніми по відношенню до біжучого процесу.
Процес із пасивного стану може перейти в стан готовності в таких випадках:
1. За командою користувача. Це має місце в тих інтерактивних (діалогових) ОС, де програма може мати статус задачі, а не просто бути файлом виконання. І тільки на час виконання вона може отримувати статус задачі, тобто процесу.
2. При виборі з черги планувальником процесів.
3. За викликом із іншої задачі (один процес може створити, ініціювати, призупинити, зупинити, знищити інший процес).
4. За перериванням від зовнішнього пристрою (сигнал від виконання деякої події може запустити відповідну задачу).
5. При надходженні запланованого часу запуску програми.
Із стану виконання процес може вийти з таких причин:
1. Процес завершується, при цьому він передає керування ОС і повідомляє про своє завершення. В результаті процес або переходить в пасивний стан, або знищується. Знищується не сама програма, а саме активний процес, який відповідав виконанню деякої програми. В пасивний стан процес може бути переведений примусово за командою оператора.
2. Процес переводиться ОС в стан готовності у зв’язку з виникненням задачі з вищим пріоритетом або через завершення виділеного кванту часу.
3. Процес блокується або через запит операції вводу/виводу, або через те, що йому неможливо надати ресурс, на який виник запит, або за командою оператора на призупинення задачі. З початком відповідної події процес деблокується і переводиться в стан готовності до виконання.
Таким чином, силою, яка міняє стани процесів, є події. Один із основних видів подій - переривання.
34. Призначення та основні функції блоку керування процесами (PCB).
Для того, щоби ОС могла керувати процесами, вона повинна володіти всією необхідною інформацією. Для цього для кожного процесу створюється спеціальна інформаційна структура, яка називається – блоком керування процесом (ProgramControlBlock, PCB), або дескриптором процесу, або описувачем задачі. В загальному випадку РСВ вміщує таку інформацію:
1. Ідентифікатор процесу (PID – processidentifier).
2. Тип (або клас) процесу, який визначає для ОС деякі правила надання ресурсів.
3. Пріоритет процесу, відповідно до якого ОС надає ресурси. В рамках одного класу процесів у першу чергу обслуговуються процеси з вищим пріоритетом.
4. Змінну стану, яка визначає, в якому стані знаходиться процес (стані готовності, стані виконання, стані блокування).
5. Адресу захищеної ділянки пам’яті, в якій зберігаються біжучі значення регістрів процесора, якщо процес призупиняється (або переривається) не завершивши роботи. Ця інформація називається контекстом задачі.
6. Інформація про ресурси, якими володіє процес або має право користуватись.
7. Адреса місця для організації спілкування з іншими процесами.
8. Параметри часу запуску (момент часу, коли процес повинен активізуватись та періодичність цієї процедури).
9. Для диск–резидентних задач, які постійно знаходяться у зовнішній пам’яті і завантажуються в основну пам’ять тільки на час виконання зберігається адреса задачі на диску в її вихідному стані.
РСВ, як правило, з метою пришвидшення роботи ОС постійно розташовані в основній пам’яті. ОС організовує їх у черги, в залежності від змінної стану переносить процеси з черги в чергу. Для кожного стану ОС підтримує список процесів, що знаходяться в цьому стані.
Таким чином, РСВ – це об’єкт, який визначає процес для ОС.
35. Потоки („нитки”), призначення та застосування.
Багатозадачність — найважливіша властивість ОС. Для підтримки цієї властивості ОС визначає і створює для себе ті внутрішні одиниці роботи, між якими і буде розділятись процесор і інші ресурси комп’ютера.
ОС підтримує відокремленість процесів. У кожного процесу є свій віртуальний адресний простір, кожному процесу призначаються свої ресурси: файли, вікна, семафори і т.ін. це для того, щоби захистити один процес від іншого.
При мультипрограмуванні підвищується пропускна здатність системи в цілому, але окремий процес ніколи не може бути виконаний швидше, ніж у випадку його виконання в одно програмному режимі (йде час на очікування ресурсу, що розділяється).
Але задачі, яка розв’язується в рамках одного процесу, може бути притаманний внутрішній паралелізм, який в принципі дозволяє прискорити її розв’язок. Наприклад, в ході виконання задачі відбувається звертання до зовнішнього пристрою і на час цієї операції можна не блокувати повністю виконання процесу, а продовжити виконання іншої „гілки” процесу.
Для цього пропонується механізм багато-ниткової обробки (multithreading). Вводиться нове поняття „нитка” (thread). Мультипрограмування тепер реалізується на рівні ниток. Наприклад: якщо електронна таблиця була розроблена з врахуванням можливостей багато-ниткової обробки, то користувач може запросити перерахунок своєї таблиці і одночасно продовжувати її заповнювати. Багато-нитковий сервер може паралельно виконувати запити одразу декількох клієнтів.
Оскільки всі нитки одного процесу завжди належать одній прикладній програмі, між ними досить легко організувати тісну взаємодію. Програміст може завчасно продумати роботу множини ниток процесу таким чином, щоби вони могли взаємодіяти, а не боротись за ресурси.
Нитки в багатьох відношеннях потрібні процесам, але в рамках одного процесу не є такими незалежними, як процедури:
- всі нитки мають один адресний простір;
- вони розділяють одні і ті самі глобальні змінні;
- кожна нитка має доступ до довільної віртуальної адреси, але одна нитка може використовувати стек іншої;
- між нитками немає повного захисту, всі нитки розділяють один набір відкритих файлів, таймерів, сигналів і т. ін.
Таким чином нитки мають власні:
- програмний лічильник;
- стек;
- регістри;
- нитки-нащадки;
- стани.
Нитки розділяють:
- адресний простір;
- глобальні змінні;
- відкриті файли;
- таймери;
- семафори;
- статистичну інформацію.
Приклад. Керування сигналами, наприклад, переривання з клавіатури (delete або break).
Замість обробки сигналу переривання одна нитка призначається для постійного очікування надходження сигналів. Таким чином, нитки можуть скоротити необхідність в перериваннях рівня користувача.
36. Поняття „переривання” та їх призначення.
В обчислювальній техніці під перериванням розуміють подію, при якій міняється нормальна послідовність виконання команд, що визначена програмою. Переривання, є механізмом, що дозволяє координувати паралельне функціонування окремих пристроїв комп’ютерної системи та реагувати на особливі стани, що виникають при роботі процесора. Тобто, переривання, це примусова передача керування від програми, що виконується, до ОС, а через неї до відповідної програми обробки переривань. Ця передача відбувається при виникненні певної події.
Механізм переривань реалізується апаратно програмним забезпеченням. Структура систем переривань може бути різноманітною (в залежності від архітектури апаратного забезпечення), але всі вони реалізують одну ідею – переривається звичайний порядок виконання команд процесором.
Перехід від перерваної програми до обробника переривань повинен виконуватися якомога швидше. Одним з методів, що реалізуються цей механізм переходу, є організація таблиць, що містять всі допустимі в системі переривання та адреси їх обробників.
Для коректного повернення з переривання до перерваної програми перед передачею керування обробнику система запам’ятовує вміст регістрів процесора або у пам’яті з прямим доступом, або у системному стеку. (systemstack).
Таким чином, якщо відбулося переривання:
1. Керування передається ОС;
2. ОС запам’ятовує стан перерваного процесу, як правило, ця інформація запам’ятовується в його блоці керування процесом (PCB);
3. ОС аналізує тип переривання та передає керування відповідному обробнику.
37. Основні групи „переривань” та події, що їх викликають
Переривання, що виникають при роботі обчислювальної системи, можна поділити на такі основні групи:
1. Зовнішні (або асинхронні). Викликаються асинхронними подіями, які відбуваються поза процесом, що виконується і відповідно переривається:
- переривання від таймера;
- переривання від зовнішніх пристроїв;
- переривання при збоях у живлення;
- переривання з пульта оператора обчислювальної системи;
- переривання від іншого процесора або обчислювальної системи.
2. Внутрішні. Викликаються подіями, що пов’язані з роботою процесу, що виконується і є синхронними з його операціями. Такі переривання виникають:
- при неправильній адресації (в адресній частині команди вказано заборонену або неіснуючу адресу, звертання до відсутнього сегменту або сторінки віртуальної пам’яті);
- при наявності в полі коду операції, неіснуючої команди;
- при діленні на нуль;
- при переповненні, або пропаданні порядку в числах з плаваючою крапкою;
- при виявленні порушення паритету парності, а також помилок в роботі різних пристроїв апаратури комп’ютера засобами контролю;
- переривання за звертаннями до супервізора. У деяких комп’ютерах існують привілейовані команди, які може виконувати тільки ОС, а не програми користувачів. Відповідно в апаратурі передбачено різні режими роботи. При спробі виконати таку команду заборонену в даному режимі, відбувається внутрішнє переривання і керування передається супервізору ОС.
3. Програмні переривання. Викликаються відповідними командами переривання. За такими командами процесор виконує практично такі самі дії, що й при внутрішній перериваннях.
За рінями пріоритету переривання розподіляються наступним чином:
Оскільки переривання виникають у довільні моменти часу та при їх виникненні вже можуть існувати декілька сигналів переривань, що повинні оброблятися тільки послідовно, то щоби обробити їх в деякому логічному порядку перериванням присвоюють пріоритети. Переривання з більш високим пріоритетом обробляється позачергово, обробка інших переривань відкладається. Отже переривання з високим пріоритетом може перевати обробку переривання з нижчим пріоритетом.
38. Обробка „переривань” та механізм перемикання контексту „переривань”.
Для обробки кожного з видів переривань в складі ОС передбачені програми, що називаються обробниками переривань (IH – InterruptHandler). Коли відбувається переривання, ОС запам’ятовує стан перерваних процесів та передає керування відповідним обробникам переривань. Ця процедура називається перемиканням контексту. При її реалізації використовуються слова стану програми (ProgramStatusWord, PSW), які керують напрямком виконання команд і містять різну інформацію про відносно стану процесу.
Існує три типи PSW: біжуче, нове та старе.
Адреса наступної команди, що має виконуватися, міститься в біжучому PSW, у ньому вказані також типи переривань, що дозволені заборонені на даний час.
CPU реагує на дозволені переривання. Обробка заборонених переривань або відкладається, або ігнорується. Процесору не можна заборонити реагувати на переривання супервізора, з рестарту та на деякі види програмних переривань.
В одно процесорній машині є тільки одне біжуче PSW, але N нових та N старих (по одному на кожен тип переривань).
Нове PSW для переривання біжучого типу містить постійну адресу, за якою резидентно міститься обробник переривань цього типу. Коли відбувається переривання і якщо процесору не заборонено обробляти переривання цього типу, відбувається автоматичне (виконується апаратурою) перемикання PSW за схемою:
1) Біжуче PSW стає старим PSW для переривань цього типу;
2) Нове PSW для переривань цього типу стає біжучим PSW.
Коли обробку переривання завершено, ЦП починає обслуговувати або той процес, який виконувався в момент переривання, або готовий процес з найвищим пріоритетом. Це залежить від того, чи дозволяє перерваний процес перехоплення ЦП, чи ні. Якщо ні, то перерваний процес знову отримує у своє розпорядження ЦП. Якщо дозволяє, то він отримає доступ до ЦП тільки у випадку, якщо нема інших процесів готових до виконання.
39. Механізми, що використовуються для планування процесорів
Процеси отримують можливість виконувати конкретну роботу, коли в їх розпорядження надаються фізичні процесори. Розподіл процесорів по процесам – це складна задача, яку вирішують операційні системи. Визначення того, коли слід виділяти процесори і яким саме процесам - називається плануванням.
Планування на верхньому рівні або планування завдань. Засоби цього рівня визначають, яким завданням буде дозволено активно конкурувати за захоплення ресурсів системи. Цей вид планування іноді називають також плануванням допуску, оскільки на цьому рівні визначається, які завдання будуть допущені в систему.
Планування на проміжному рівні. Засоби цього рівня визначають, яким процесам буде дозволено змагатись за захоплення ЦП. Планувальник проміжного рівня оперативно реагує на біжучі зміни системного навантаження, короткочасно припиняючи і знову активізуючи процеси, що забезпечує рівномірну роботу системи й допомагає досягненню певних глобальних цільових характеристик швидкості. Таким чином, планувальник проміжного рівня виконує функції буферу між засобами допуску завдань в систему та засобами надання ЦП для виконання цих завдань.
Планування на нижньому рівні. Засоби цього рівня визначають, якому з процесів, що готові до виконання, буде надаватись ЦП, який звільнився. Вони (ці засоби) фактично надають ЦП такому процесу (тобто виконують диспетчерські функції). Планування на нижньому рівні виконується так званим диспетчером, який працює з великою частотою й тому завжди повинен розташовуватись в основній пам’яті.
Планування повинно:
1) бути справедливим, тобто однаково відноситись до всіх процесів.
2) забезпечувати максимальну пропускну здатність системи.
3) забезпечувати максимальній кількості користувачів допустимий час відповіді.
4) забезпечувати передбачуваність, мінімальні накладні витрати, збалансоване використання ресурсів.
5) виключати нескінчене відкладання процесів;
6) враховувати пріоритети;
7) і т.д.
Багато з цих вимог вступають в протиріччя одне до одного, що робить планування вельми складною проблемою.
Планування з переключенням та без переключення
Якщо після надання ЦП в розпорядження деякого процесу, відібрати ЦП у нього не можна, то має місце дисципліна планування без переключення. Інакше має місце дисципліна з переключенням.
Планування з переключенням необхідно в системах, в яких процеси високого пріоритету вимагають негайної уваги.
Наприклад: Якщо в системах реального часу пропаде хоча б один важливий сигнал переривання, це може привести до катастрофічних наслідків.
В системах без переключення, коротким завданням треба більше чекати через виконання тривалих завдань, але для всіх завдань створюються ніби-то рівні умови. Час відповіді тут легше передбачити, оскільки завдання високого пріоритету, що надходять, не можуть відтіснити завдання, що вже чекають.
40. Інтервальний таймер, призначення та застосування у плануванні процесорів
ОС встановлює годинник або інтервальний таймер, який генерує сигнал переривання в деякий конкретний момент часу в майбутньому. Після переривання ЦП передається наступному процесу. Який, зберігає за собою керування ЦП, доки не закінчиться або не перерветься.
Таймер гарантує можливий час відповіді для користувачів в діалоговому режимі, не допускає „зависання” системи з причини зациклювання. А також дозволяє процесам відповідним чином реагувати на події, що залежать від часу.
Інтервальний таймер відліковує фіксовані (Intel) або довільні IBM mainframe проміжки часу
Інтервальний таймер видає переривання коли значення часу дорівнює „0”
Як системні так і прикладні задачі можуть виставляти до ОС запити
на інтервал часу. Диспетчер, що відповідає за призначення часу інтервального таймеру, вибирає найменше значення часу, що встановлено на даний момент в ОС. Цей лічильник диспетчер зменшує час для кожної задачі в середовищі
ОС. Задача, у котрої значення інтервалу таймеру = 0, активується.
41. Пріоритети, призначення та застосування у плануванні процесорів.
Пріоритет — це число, яке характеризує ступінь привілейованості процесу при використанні ресурсів комп’ютеру, зокрема, процесорного часу. Чим вище пріоритет, тим вище привілеї, тим менше часу він буде проводити в чергах.
Пріоритетами можуть призначатьсь адміністратором системи в залежності від важливості роботи, або внесеної плати, або обчислюватись самою ОС за певними правилами. Він може залишатись фіксованим на протязі всього життя процесу або мінятись в часі у відповідності з деяким законом. В останньому випадку пріоритети називають динамічними.
Є алгоритми які використовують:
- відносні пріоритети;
- абсолютні пріоритети.
Але вибір процесу на виконання з черги готових виконується однаково: вибирається процес, що має найвищий пріоритет.
Інакше розв’язується проблема визначення моменту зміни активного процесу.
У системах з відносними пріоритетами активний процес виконується доти, доки він сам не покине процесор, виконавши перехід в стан Очікування (або ж виникне помилка, або процес завершиться).
У системах з абсолютними пріоритетами виконання активного процесу переривається ще й при умові: якщо в черзі готових процесів з’явився процес, пріоритет якого вище пріоритету активного процесу. В цьому випадку перерваний процес переходить в стан готовності.
У багатьох ОС алгоритми планування побудовані з використанням як квантування, так і пріоритетів. Наприклад, в основі планування лежить квантування, але величина кванту так/або порядок вибору процесу з черги готових визначається пріоритетами процесів.
Пріоритети
Статичні пріоритети. Призначаються один раз. Для їх реалізації необхідні незначні витрати, але вони не реагують на зміни в середовищі, які можуть вимагати корекції пріоритетів.
Динамічні пріоритети. Реагують на зміни в ситуації. Вимагають більших витрат. Але система стає більш реактивною, краще використовує ресурси.
Пріоритети, що купуються. Система повинна надавати привілейоване обслуговування для тих ситуацій, коли якому-небудь користувачеві це потрібно. Користувач, якому необхідно терміново виконати своє завдання, може піти на додаткові витрати (платню) за більш високий рівень обслуговування. Якби не бралась більш висока платня за привілеї, то всі користувачі хотіли б більш високий рівень обслуговування.
42. Планування процесорів за принципом FIFO
Найпростіший невитісняльний алгоритм, у якому потоки ставлять на виконання в порядку їхньої появи у системі й виконують до переходу в стан очікування, явної передачі керування або завершення. Чергу готових потоків при цьому організовують за принципом FIFO, тому алгоритм називають алгоритмом FIFO.
Як тільки в системі створюється новий потік, його керуючий блок додається у хвіст черги. Коли процесор звільняється, його надають потоку з голови черги.
У такого алгоритму багато недоліків:
• він за визначенням є невитісняльним;
• середній час відгуку для нього може бути доволі значним (наприклад, якщо першим надійде потік із довгим інтервалом використання процесора, інші потоки чекатимуть, навіть якщо вони самі використовують тільки короткі інтервали);
• він підлягає ефекту конвою (convoy effect).
Ефект конвою можна пояснити такою ситуацією. Припустимо, що в системі є один потік (назвемо його Tсри), обмежений можливостями процесора, і багато потоків Тіо, обмежених можливостями введення-виведення. Рано чи пізно потік Tсри отримає процесор у своє розпорядження і виконуватиме інструкції з довгим інтервалом використання процесора. За цей час інші потоки Tіо завершать введення-виведення, перемістяться в чергу готових потоків і там чекатимуть, при цьому пристрої введення-виведення простоюватимуть. КолиTсрц нарешті заблокують і відбудеться передача керування, всі потоки Тіо швидко виконають інструкції своїх інтервалів використання процесора (у них, як ми знаємо, такі інтервали короткі) і знову перейдуть до введення-виведення. Після цього Тсри знову захопить процесор на тривалий час і т. д.
Планування за принципом FIFO
Це дисципліна планування без переключення, при якій процесам надається ЦП у відповідності з часом їх надходження у список готових до виконання.
Таке планування найчастіше застосовується в системах пакетної обробки, але воно не дозволяє гарантувати можливий (допустимий) час відповіді для інтерактивних користувачів.
43. Циклічне планування завантаження процесорів
Найпростішим для розуміння і найсправедливішим витісняльним алгоритмом є алгоритм кругового планування (round-robinscheduling). У середні віки терміном (roundrobin) називали петиції, де підписи йдуть по колу, щоб не можна було дізнатися, хто підписався першим (ця назва свідчить, що для такого алгоритму всі потоки рівні).
Кожному потокові виділяють інтервал часу, який називають квантом часу (timequantum, timeslice) і упродовж якого цьому потокові дозволено виконуватися. Коли потік усе ще виконується після вичерпання кванта часу, його переривають і перемикають процесор на виконання інструкцій іншого потоку. Коли вінблокується або закінчує своє виконання до вичерпання кванта часу, процесор тежпередають іншому потокові. Довжина кванта часу для всієї системи однакова.
Такий алгоритм реалізувати досить легко. Для цього черга готових потоків має бути циклічним списком. Коли потік вичерпав свій квант часу, його переміщують у кінець списку, туди ж додають і нові потоки (рис. 4.3). Перевірку вичерпання кванта часу виконують в обробнику переривання від системного таймера.
Рис. 4.3. Кругове планування
Єдиною характеристикою, яка впливає на роботу алгоритму, є довжина кванта часу. Тут слід дотримуватися балансу між часом, що витрачається на перемикання контексту, і необхідністю відповідати на багато одночасних інтерактивних запитів.
Задання надто короткого кванта часу призводить до того, що відбувається дуже багато перемикань контексту, і значний відсоток процесорного часу витрачається не на корисну роботу, а на ці перемикання. З іншого боку, задання надто довгого кванта хоча й заощаджує процесорний час, але спричиняє до зниження часу відгуку на інтерактивні запити, бо якщо десять користувачів одночасно натиснуть клавішу, то десять потоків потраплять у список готових, внаслідок чого останній з них очікуватиме десять довгих квантів часу. У випадку з квантом нескінченної довжини кругове планування зводиться до алгоритму FIFO (усі потоки встигають заблокуватися або закінчитися до вичерпання кванта). На практиці рекомендують встановлювати довжину кванта в 10-100 мс.
Зазначимо, що традиційне кругове планування може давати «перекіс» у бік потоків, обмежених можливостями процесора. Такі потоки переважно використовують свій квант повністю, тоді як потоки, обмежені можливостями введення-виведення, часто передають керування до вичерпання кванта, і в результаті їм дістається менше процесорного часу. Для вирішення цієї проблеми можна збільшувати довжину кванта (з огляду на проблеми, описані раніше) або вводити додаткову чергу потоків, що завершили введення-виведення, яка має перевагу на виконання перед чергою готових потоків.
Циклічне планування (RR)
Циклічне, або кругове (roundrobin, RR). Диспетчеризація виконується за принципом FIFO, але кожний раз процесу надається обмежена кількість часу ЦП, що називається квантом. Процес, у якого був перехоплений ЦП, переходить в кінець списку готових до виконання процесів. Така дисципліна (RR) ефективна для роботи з розподілом часу, коли система повинна гарантувати можливий час відповіді для всіх інтерактивних користувачів.
Визначення оптимального розміру кванту – складна задача. Як правило, його вибирають настільки великим, що більшість тривіальних пересічних запитів можна було б повністю обслужити в рамках одного кванту.
44. Планування завантаження процесорів за принципом „найкоротше завдання-перший”.
Планування за принципом SIF (“найкоротше завдання - перший”)
Планування без переключень застосовується перш за все для планування пакетних завдань. Воно забезпечує мінімальний середній час очікування для завдань, але для тривалих завдань час очікування може виявитись великим.
Надається перевага коротким завданням за рахунок більш тривалих. Чергове завдання вибирається таким чином, щоб воно завершувало свою роботу та виходило з системи як можна швидше. В результаті ця дисципліна дозволяє звести до мінімуму середній час очікування для завдань, що проходять через систему.
Проблема: треба точно знати, скільки часу вимагає завдання або процес.
Можна “консервувати” процеси. Не застосовується в системах розподілу часу, де необхідно гарантувати можливий час відповіді.
45. Планування завантаження процесорів за „найменшим часом, що залишився”.
Принцип SRT (“за найменшим часом, що залишається”)
Аналог SIF, але з переключенням. Завжди виконується процес, який має мінімальний за оцінками час до завершення, причому з врахуванням нових процесів, що надходять. Треба, щоб враховувався час на обслуговування, що минув, а це приводить до збільшення накладних витрат.
46. Планування процесорів із використанням багаторівневих черг зі зворотними зв’язками.
Алгоритм багаторівневих черг зі зворотним зв'язком (multilevelfeedbackqueues) є найуніверсальнішим алгоритмом планування (за допомогою налаштування параметрів його можна звести майже до будь-якого іншого алгоритму), але при цьому одним із найскладніших у реалізації.
З погляду організації структур даних цей алгоритм схожий на звичайний алгоритм багаторівневих черг: є кілька черг готових потоків із різним пріоритетом, при цьому потоки черги із нижчим пріоритетом виконуються, тільки коли всі черги верхнього рівня порожні.
Відмінності між двома алгоритмами полягають у тому, що:
• потокам дозволено переходити з рівня на рівень (із черги в чергу);
• потоки в одній черзі об'єднуються не за пріоритетом, а за довжиною інтервалу використання процесора, потоки із коротшим інтервалом перебувають у черзі з більшим пріоритетом.
Усередині всіх черг, крім найнижчої, використовують кругове планування (у найнижчій
працює FIFO-алгоритм). Різні черги відповідають різній довжині кванта часу — що вищий пріоритет, то коротший квант (звичайно довжина кванта для сусідніх черг зменшується удвічі). Якщо потік вичерпав свій квант часу, він переміщається у хвіст черги із нижчим пріоритетом (і з довшим квантом). У результаті потоки з коротшими інтервалами (наприклад, обмежені введенням-виведенням) залишаються з високим пріоритетом, а потоки з довшими інтервалами подовжують свій квант часу (рис. 4.4). Можна також автоматично переміщати потоки, які давно не отримували керування, із черги нижнього рівня на рівень вище.
Рис. 4.4. Багаторівневі черги зі зворотним зв'язком
47. Витісняючі та невитісняючі алгоритми планування процесів.
Існує два основні типи процедур планування процесів — витісняючі (preemptive) та невитісняючі (non-preemptive — cooperative).
Non-preemptivemultitasking — невитісняюча багатозадачність — це спосіб планування
процесів, при якому активний процес виконується до того часу, доки він сам, за власною ініціативою, не віддасть керування планувальнику ОС для того, щоби той вибрав з черги інший, готовий до виконання процес.
Preemptivemultitasking — витісняючи багатозадачність — це такий спосіб, при якому рішення про переключання процесора з виконання одного процесу на виконання іншого процесу приймається планувальником ОС, а не самою активною задачею.
Типи багатозадачності — це більш широкі поняття ніж типи пріоритетності. Пріоритети задач можуть використовуватись або не використовуватись, як при витісняючих так і невитісняючих способах планування.
Основна відмінність між preemptive та non-preemptive — це ступінь централізації механізму планування задач.
У першому випадку механізм планування задач повністю зосереджено в ОС і програміст пише прикладну програму, не піклуючись про те, що вона буде виконуватись паралельно з іншими задачами. У цьому випадку ОС виконує такі функції:
1. Визначає час, коли знімається з виконання активна задача.
2. Запам’ятовує її контекст.
3. Вибирає з черги готових задач наступну.
4. Запускає вибрану задачу на виконання, завантажуючи її контекст.
У другому випадку механізм планування розподілено між ОС і прикладними програмами. Прикладна програма, отримавши керування від ОС сама визначає момент завершення своєї чергової ітерації і передає керування ОС за допомогою системного виклику. ОС формує черги задач і вибирає у відповідності з деяким алгоритмом (наприклад, із врахуванням пріоритетів) наступну задачу на виконання. Такий механізм досить складний як для користувачів, так і для розробників.
Програміст повинен забезпечити „дружнє” відношення своєї програми до інших, що виконуються одночасно. Тобто досить часто віддаючи їм керування.
Але такий підхід дає можливість розробнику прикладних програм самому проектувати алгоритм планування, який найбільш підходить для даного фіксованого набору задач. Також суттєва перевага — більш висока швидкість переключення з задачі на задачу.
Файл-сервер NetWare — висока швидкість виконання файлових операцій. Менш ефективно в ОС Windows 3.ХХ
Але зараз практично в усіх ОС-preemptive — (UNIXWindowsNT/95/98, OS/2). Можливо, саме тому витісняючу багатозадачність часто називають істинною, справжньою багатозадачністю.
48. Рівні планування процесів
Процеси отримують можливість виконувати конкретну роботу, коли в їх розпорядження надаються фізичні процесори. Розподіл процесорів по процесам – це складна задача, яку вирішують операційні системи. Визначення того, коли слід виділяти процесори і яким саме процесам - називається плануванням.
Планування на верхньому рівні або планування завдань. Засоби цього рівня визначають, яким завданням буде дозволено активно конкурувати за захоплення ресурсів системи. Цей вид планування іноді називають також плануванням допуску, оскільки на цьому рівні визначається, які завдання будуть допущені в систему.
Планування на проміжному рівні. Засоби цього рівня визначають, яким процесам буде дозволено змагатись за захоплення ЦП. Планувальник проміжного рівня оперативно реагує на біжучі зміни системного навантаження, короткочасно припиняючи і знову активізуючи процеси, що забезпечує рівномірну роботу системи й допомагає досягненню певних глобальних цільових характеристик швидкості. Таким чином, планувальник проміжного рівня виконує функції буферу між засобами допуску завдань в систему та засобами надання ЦП для виконання цих завдань.
Планування на нижньому рівні. Засоби цього рівня визначають, якому з процесів, що готові до виконання, буде надаватись ЦП, який звільнився. Вони (ці засоби) фактично надають ЦП такому процесу (тобто виконують диспетчерські функції). Планування на нижньому рівні виконується так званим диспетчером, який працює з великою частотою й тому завжди повинен розташовуватись в основній пам’яті.
Планування повинно:
1) бути справедливим, тобто однаково відноситись до всіх процесів.
2) забезпечувати максимальну пропускну здатність системи.
3) забезпечувати максимальній кількості користувачів допустимий час відповіді.
4) забезпечувати передбачуваність, мінімальні накладні витрати, збалансоване використання ресурсів.
5) виключати нескінчене відкладання процесів;
6) враховувати пріоритети;
7) і т.д.
Багато з цих вимог вступають в протиріччя одне до одного, що робить планування вельми складною проблемою.
49. Задачі, що вирішуються на кожному з рівнів планування процесів.
1) Вибір моменту часу для заміни процесу, що виконується.
2) Вибір процесу на виконання з черги готових процесів.
3) Переключення контекстів „старих” і „нових” процесів.
та розв’язуються програмними засобами, а в значній мірі апаратно.
50. Основні вимоги до планування процесов.
Можливість паралельного виконання потоків залежить від кількості доступних процесорів. Якщо процесор один, паралельне виконання неможливе принципово (у кожен момент часу може виконуватися тільки один потік). Якщо кількість процесорів N>1, паралельне виконання може бути реалізоване тільки для N по токів (по одному потокові на процесор).
Якщо потоків у системі більше, ніж доступних процесорів, ОС повинна розв'язувати задачу планування (scheduling). Головна мета планування для однопроцесорної системи полягає у такій організації виконання кількох потоків на одному процесорі, за якої у користувача системи виникало б враження, що вони викону ються одночасно.
Це означення може бути розширене на багатопроцесорні системи у разі виникнення задачі планування, коли кількість потоків перевищує кількість доступ них процесорів.
51. Планування процесів з переключенням та без переключення.
Якщо після надання ЦП в розпорядження деякого процесу, відібрати ЦП у нього не можна, то має місце дисципліна планування без переключення. Інакше має місце дисципліна з переключенням.
Планування з переключенням необхідно в системах, в яких процеси високого пріоритету вимагають негайної уваги.
а) Інтервальний таймер
ОС встановлює годинник або інтервальний таймер, який генерує сигнал переривання в деякий конкретний момент часу в майбутньому. Після переривання ЦП передається наступному процесу. Який, зберігає за собою керування ЦП, доки не закінчиться або не перерветься.
б) Пріоритети
Статичні пріоритети. Призначаються один раз. Для їх реалізації необхідні незначні витрати, але вони не реагують на зміни в середовищі, які можуть вимагати корекції пріоритетів.
Динамічні пріоритети. Реагують на зміни в ситуації. Вимагають більших витрат. Але система стає більш реактивною, краще використовує ресурси.
Пріоритети, що купуються. Система повинна надавати привілейоване обслуговування для тих ситуацій, коли якому-небудь користувачеві це потрібно. Користувач, якому необхідно терміново виконати своє завдання, може піти на додаткові витрати (платню) за більш високий рівень обслуговування. Якби не бралась більш висока платня за привілеї, то всі користувачі хотіли б більш високий рівень обслуговування.
в) Планування за терміном завершення
Організується таким чином, що певні процеси закінчувались в визначені терміни. Таке планування – складна проблема, особливо в умовах, коли в проміжок між моментом початку виконання процесу та запланованим строком його завершення в систему можуть поступати додаткові завдання.
г) Планування за принципом FIFO
Це дисципліна планування без переключення, при якій процесам надається ЦП у відповідності з часом їх надходження у список готових до виконання.
д) Циклічне планування (RR)
Циклічне, або кругове (roundrobin, RR). Диспетчеризація виконується за принципом FIFO, але кожний раз процесу надається обмежена кількість часу ЦП, що називається квантом. Процес, у якого був перехоплений ЦП, переходить в кінець списку готових до виконання процесів.
е) Планування за принципом SIF (“найкоротше завдання - перший”)
Планування без переключень застосовується перш за все для планування пакетних завдань. Воно забезпечує мінімальний середній час очікування для завдань, але для тривалих завдань час очікування може виявитись великим.
Надається перевага коротким завданням за рахунок більш тривалих. Чергове завдання вибирається таким чином, щоб воно завершувало свою роботу та виходило з системи як можна швидше. Проблема: треба точно знати, скільки часу вимагає завдання або процес.
є) Принцип SRT (“за найменшим часом, що залишається”)
Аналог SIF, але з переключенням. Завжди виконується процес, який має мінімальний за оцінками час до завершення, причому з врахуванням нових процесів, що надходять. Треба, щоб враховувався час на обслуговування, що минув, а це приводить до збільшення накладних витрат.
ж) Принцип HRN (“за найбільшим відносним часом відповіді”)
Це планування без переключення, при якому в деякій мірі коректуються деякі недоліки SIF, зокрема перебільшене ігнорування довгих завдань та надання переваги коротким новим завданням.
з) Багаторівневі черги зі зворотними зв’язками
Це найбільш досконалий механізм планування. Це система планування з переключенням, яка найбільш ефективна для систем, де виконується суміш різнорідних завдань.
Нові процеси надходять в мережу черг з дуже високим початковим пріоритетом і швидко обслуговуються, якщо вони або інтерактивні, або залежать від вводу/виводу. Процеси, що лімітуються ЦП, повністю використовують виділений їм квант часу, а потім переходять в кінець черги наступного, більш низького пріоритетного рівня. Чим довше такий процес займає ЦП, тим нижче робиться його пріоритет, доки процес не спускається в чергу найнижчого пріоритету, яка реалізує принцип циклічного обслуговування (RR) і в якій він циркулює до того часу, доки не завершиться.
52. Особливості процесів в ОС UNIX.
Ядро UNIX існує для виконання потреб процесів. З точки зору процесів, ядро це витрати, з якими треба миритись. З точки зору ядра, процеси – це каталогізовані структури даних, над якими за певними правилами виконуються маніпуляції.
Процес – це програма під час виконання в деякий момент часу довільної програми може відповідати один або декілька процесів, або не відповідати жодний. Процес – це об’єкт, що враховується в спеціальній таблиці ядра системи.
Найбільш важлива інформація про процес зберігається в двох місцях:
- в таблиці процесів;
- в таблиці користувача (контекст процесу).
Перша – завжди знаходиться в пам’яті і містить на кожний процес по одному елементу, в якому відображається точний стан процесу:
– розташування процесу (адреса в пам’яті або адреса свопінгу);
– розмір;
– ідентифікатори процесу;
– ідентифікатори користувача що запустив процес.
Менш актуальна інформація про процес зберігається в таблиці користувача. Така таблиця існує для кожного активного процесу і тільки до неї можуть безпосередньо звертатись програми ядра. При всіх ситуаціях, що виникають при виконанні процесу, відбувається звертання до його таблиці. Створення процесу включає ініціалізацію відповідного контексту та сегмента таблиці процесів а також формування даних та тексту цього процесу. Зміна стану (виконання, очікування, повернення в пам’ять та інше) та отримання стану від паралельного процесу – все це фіксується в таблиці процесів.
Якщо процес складається з чистих машинних кодів (дані існують окремо), то структура даних буде наступна.
Після завершення деякого процесу відповідний елемент таблиці звільняється для того, щоби потім його використовували для інших процесів.
Таблиця процесів резидентна в основній пам’яті, що забезпечує ядру можливість реагувати на зміни стану процесу, що тимчасово зберігається на диску. Ядро резервує по одному контекс