ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Витісняюча і невитісняюча багатозадачність.

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

невитісняюча багатозадачність (NetWare, Windows 3.x);

витісняюча багатозадачність (Windows NT, OS/2, UNIX).

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

Підтримка многопользовательского режиму

По числу одночасно працюючих користувачів ОС можна розділити на:

· однопользовательские (MS-DOS, Windows 3.x);

· многопользовательские (Windows NT, Unix).

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

Багатопроцесорна обробка

Аж до недавнього часу обчислювальні системи мали один центральний процесор. В результаті вимог до підвищення продуктивності з'явилися багатопроцесорні системи, що складаються з двох і більш за процесори загального призначення, що здійснюють паралельне виконання команд. Підтримка мультипроцесування є важливою властивістю ОС і приводить до ускладнення всіх алгоритмів управління ресурсами. Багатопроцесорна обробка реалізована в таких ОС, як Linux, Solaris, Windows NT, і ряду інших.

Багатопроцесорні ОС розділяють на симетричних і асиметричних. У симетричних ОС на кожному процесорі функціонує одне і те ж ядро, і завдання може бути виконана на будь-якому процесорі, тобто обробка повністю децентрализована. При цьому кожному з процесорів доступна вся пам'ять.

У асиметричних ОС процесори неравноправны. Зазвичай існує головний процесор (master) і підлеглі (slave), завантаження і характер роботи яких визначає головний процесор.

Особливості областей використання

Багатозадачні ОС підрозділяються на три типи відповідно до використаних при їх розробці критеріїв ефективності:

системи пакетної обробки (наприклад, OC ЄС)

системи розділення часу (UNIX, VMS)

системи реального часу (QNX, RT/11).

Системи пакетної обробки призначалися для вирішення завдань в основному обчислювального характеру, що не вимагають швидкого отримання результатів. Головною метою і критерієм ефективності систем пакетної обробки є максимальна пропускна спроможність, тобто вирішення максимального числа завдань в одиницю часу. Для досягнення цієї мети в системах пакетної обробки використовуються наступна схема функціонування: на початку роботи формується пакет завдань, кожне завдання містить вимога до системних ресурсів; з цього пакету завдань формується мультипрограмна суміш, тобто безліч одночасно виконуваних завдань. Для одночасного виконання вибираються завдання, що пред'являють вимоги, що відрізняються, до ресурсів, так, щоб забезпечувалося збалансоване завантаження всіх пристроїв обчислювальної машини; так, наприклад, в мультипрограмній суміші бажана одночасна присутність обчислювальних завдань і завдань з інтенсивним введенням-виводом. Таким чином, вибір нового завдання з пакету завдань залежить від внутрішньої ситуації, що складається в системі, тобто вибирається "вигідне" завдання. Отже, в таких ОС неможливо гарантувати виконання того або іншого завдання протягом певного періоду часу. У системах пакетної обробки перемикання процесора з виконання одного завдання на виконання інший відбувається тільки у випадку, якщо активне завдання саме відмовляється від процесора, наприклад, із-за необхідності виконати операцію введення-виводу. Тому одне завдання може надовго зайняти процесор, що робить неможливим виконання інтерактивних завдань. Таким чином, взаємодія користувача з обчислювальною машиною, на якій встановлена система пакетної обробки, зводиться до того, що він приносить завдання, віддає його диспетчерові-операторові, а в кінці дня після виконання всього пакету завдань отримує результат. Очевидно, що такий порядок знижує ефективність роботи користувача.

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

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

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

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

Висновок

Ми розглянули різні погляди на те, що таке операційна система; вивчили історію розвитку операційних систем; з'ясували, які функції зазвичай виконують операційні системи; нарешті, зналися на тому, які існують підходи до побудови операційних систем. Наступну лекцію ми присвятимо з'ясуванню поняття "процес" і питанням планування процесів.

Процеси в операційних системах.

Поняття процесу

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

У першій лекції, пояснюючи поняття "Операційна система" і описуючи способи побудови операційних систем, ми часто застосовували слова "програма" і "завдання". Ми говорили: обчислювальна система виконує одну або декілька програм, операційна система планує завдання, програми можуть обмінюватися даними і так далі Ми використовували ці терміни в деякому загальновживаному, життєвому сенсі, припускаючи, що всі читачі однаково уявляють собі, що мається на увазі під ними у кожному конкретному випадку. При цьому одні і ті ж слова позначали і об'єкти в статичному стані, що не обробляються обчислювальною системою (наприклад, сукупність файлів на диску), і об'єкти в динамічному стані, що знаходяться в процесі виконання. Це було можливо, поки ми говорили про загальні властивості операційних систем, не вдаючись до подробиць їх внутрішнього устрою і поведінки, або про роботу обчислювальних систем первого-второго поколінь, які не могли обробляти більш за одну програму або одне завдання одночасно, по суті справи не маючи операційних систем. Але тепер ми починаємо знайомитися з деталями функціонування сучасних комп'ютерних систем, і нам доведеться уточнити термінологію.

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

Розглядаючи системи пакетної обробки, ми ввели поняття "завдання" як сукупність програми, набору команд мови управління завданнями, необхідних для її виконання, і вхідних даних. З погляду студентів, вони, підставивши різні початкові дані, сформували два різні завдання. Можливо, термін "завдання" підійде нам для опису внутрішнього функціонування комп'ютерних систем? Щоб з'ясувати це, давайте розглянемо інший приклад. Хай обидва студенти намагаються витягувати корінь квадратний з 1, тобто хай вони сформували ідентичні завдання, але завантажили їх в обчислювальну систему із зрушенням за часом. Тоді як одне з виконуваних завдань приступило до друку набутого значення і чекає закінчення операції введення-виводу, друге тільки починає виконуватися. Чи можна говорити про ідентичність завдань усередині обчислювальної системи в даний момент? Ні, оскільки стан процесу їх виконання різний. Отже, і слово "завдання" в призначеному для користувача сенсі не може застосовуватися для опису що відбувається в обчислювальній системі.

Це відбувається тому, що терміни "програма" і "завдання" призначені для опису статичних, неактивних об'єктів. Програма ж в процесі виконання є динамічним, активним об'єктом. По ходу її роботи комп'ютер обробляє різні команди і перетворить значення змінних. Для виконання програми операційна система повинна виділити певну кількість оперативної пам'яті, закріпити за нею певні пристрої введення-виводу або файли (звідки повинні поступати вхідні дані і куди потрібно доставити отримані результати), тобто зарезервувати певні ресурси із загального числа ресурсів всієї обчислювальної системи. Їх кількість і конфігурація з часом можуть змінюватися. Для опису таких активних об'єктів усередині комп'ютерної системи замість термінів "програма" і "завдання" ми використовуватимемо новий термін – "процес".

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

Стани процесу

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

Як видимий, кожен процес може знаходитися як мінімум в двох станах: процес виконується і процес не виконується. Діаграма станів процесу в такій моделі зображена на мал. 2.1.

 

 


Рис. 2.1. Проста діаграма станів процесу

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

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

 


Рис. 2.2. Докладніша діаграма станів процесу

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

· операційна система припиняє його діяльність;

· він не може продовжувати свою роботу, поки не відбудеться деяка подія, і операційна система переводить його в стан очікування;

· в результаті виникнення переривання в обчислювальній системі (наприклад, переривання від таймера після закінчення передбаченого часу виконання) його повертають в стан готовність.

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

Наша нова модель добре описує поведінку процесів під час їх існування, але вона не акцентує уваги на появі процесу в системі і його зникненні. Для повноти картини нам необхідно ввести ще два стани процесів: народження і закінчив виконання (див. мал. 2.3).

 


Рис. 2.3. Діаграма станів процесу, прийнята в курсі

Тепер для появи в обчислювальній системі процес повинен пройти через стан народження. При народженні процес отримує в своє розпорядження адресний простір, в який завантажується програмний код процесу; йому виділяються стек і системні ресурси; встановлюється початкове значення програмного лічильника цього процесу і так далі процес, що Народився, переводиться в стан готовність. При завершенні своєї діяльності процес із стану виконання потрапляє в стан закінчив виконання.

У конкретних операційних системах стану процесу можуть бути ще більш деталізовані, можуть з'явитися деякі нові варіанти переходів з одного стану в інше. Так, наприклад, модель станів процесів для операційної системи Windows NT містить 7 різних станів, а для операційної системи Unix – 9. Проте так чи інакше, всі операційні системи підкоряються викладеній вище моделі.

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти