Поділ часу (операційні системи)

Операційні системи загального призначення

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

Поділ часу (Операційні Системи)

Поділ часу (англ. Time-sharing) - спосіб розподілу обчислювальних ресурсів між багатьма користувачами за допомогою мультипрограммирования і багатозадачності. Поява даної концепції на початку 1960-х років і активний розвиток в 1970-і призвело до значного технологічного прориву в історії обчислювальної техніки.

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

Історія поділу часу ОС

пакетна обробка

Перші комп'ютери були дуже дорогими і повільними пристроями. Зазвичай вони призначалися для виконання конкретного набору задач і управлялися з панелі оператора, який вручну вводив короткі програми за допомогою зміни позиції перемикачів на панелі. Ці програми могли виконуватися протягом декількох годин або навіть тижнів. Але коли швидкість комп'ютерів почала зростати, простій машини в зв'язку з введенням чергової програми став неприйнятний. Методологія пакетної обробки з'явилася з метою зменшити час простою машини при введенні програми. У пакетній обробці як тільки одна програма завершувала виконання, комп'ютер завантажував наступну.

Щоб підтримувати процес пакетної обробки, програмісти використовували перфоратори перфокарт або перфострічок. Це були недорогі пристрої, що дозволили створювати програми «офлайн». Після набору програми її передавали операторам машини, які займалися плануванням часу її запуску. Важливі програми запускалися в першу чергу, менш важливі - після виконання всіх інших. Коли програма, нарешті, виконувалася, результат її роботи зазвичай в роздрукованому вигляді повертався програмісту. Весь процес міг займати багато часу, протягом якого програміст взагалі не бачив комп'ютера.

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

поділ часу

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

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

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

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

Особливості ОС з режимом поділу часу

Коли в складі комп'ютерних систем з'явилися термінали (спочатку телетайпи, потім дисплеї), виникла необхідність реалізації в ОС режиму поділу часу (time sharing) - можливості одночасної роботи користувачів зі своїми завданнями з терміналів, введення завдань в систему, їх запуску (при наявності вільного процесора ), управління завданнями з терміналу, їх припинення, налагодження, візуалізації на терміналі їх результатів. Розглянемо особливості ОС з режимом поділу часу.

Зберігання завдань в пам'яті або на диску

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

Відкачування і підкачка (swapping)

Відкачування і підкачка (swapping) - завантаження завдань з диска в пам'ять і їх вивантаження з пам'яті на диск. В системі з поділом часу можлива ситуація, коли якесь завдання, кероване з терміналу, неактивно (наприклад, виконує введення-виведення, або система очікує відповіді від користувача, у якого в даний момент перерву в роботі). В цьому випадку ОС може прийняти рішення про тимчасову вивантаженні (swap out) образу пам'яті завдання з оперативної пам'яті на диск, з метою звільнення пам'яті для інших завдань. При повторній активізації завдання воно (при можливості) знову завантажується в пам'ять (swapped in). Подібна стратегія називається відкачуванням і підкачкою.

Підтримка діалогової взаємодії між користувачем і системою

Коли ОС завершує виконання користувальницької команди, вона виконує пошук наступного керуючого оператора (control statement), введеного з призначеної для користувача клавіатури.

Надання діалогового доступу до даних і коду користувальницької програми

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

Відомі системи з поділом часу

ОС Windows. Режим поділу часу

Поява електронно-променевих дисплеїв і переосмислення можливостей застосування клавіатур поставили на чергу вирішення цієї проблеми. Логічним розширенням систем мультипрограмування стали time-sharing системи або системи поділу часу **. У них процесор перемикається між завданнями не тільки на час операцій введення-виведення, а й просто попрошествіі певного інтервалу часу. Ці перемикання відбуваються настільки часто, що користувачі можуть взаємодіяти зі своїми програмами під час їх виконання, тобто інтерактивно. В результаті з'являється можливість одночасної роботи багатьох користувачів на одній комп'ютерній системі. У кожного користувача для цього повинна бути хоча б одна програма в пам'яті. Щоб зменшити обмеження на кількість працюючих користувачів, була впроваджена ідея неповного знаходження виконуваної програми в оперативній пам'яті. Основна частина програми знаходиться на диску і необхідний для її подальшого виконання шматок може бути легко завантажений в оперативну пам'ять, а непотрібний викачано назад на диск. Це реалізується за допомогою механізму віртуальної пам'яті. Основною перевагою такого механізму є створення ілюзії необмеженої оперативної пам'яті ЕОМ.

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

Паралельно внутрішньої еволюції обчислювальних систем в цей період спостерігається і зовнішня їх еволюція. До початку цього періоду обчислювальні комплекси були, як правило, несумісні. Кожен мала свою власну спеціальну операційну систему, свою систему команд і т.д. В результаті програму, яка успішно працює на одному типі машин, необхідно було повністю переписати і заново налагодити для іншого типу комп'ютерів. На початку третього періоду з'явилася ідея створення сімейств програмно-сумісних машин, що працюють під управлінням однієї і тієї ж операційної системи. Першим сімейством програмно-сумісних машин, побудованих на інтегральних мікросхемах, з'явилася серія машин IBM / 360. Побудоване на початку 60-х років це сімейство значно перевершувало машини другого покоління за критерієм ціна / продуктивність. За нею пішла лінія комп'ютерів PDP, несумісних з лінією IBM, кульмінацією якої стала PDP-11.

Сила однієї сім'ї була одночасно і її слабкістю. Широкі можливості цієї концепції (наявність всіх моделей: від міні-комп'ютерів до гігантських машин; велика кількість різноманітної периферії; різне оточення; різні користувачі) породжували складну і величезну операційну систему. Мільйони рядків асемблера, написані тисячами програмістів, містили безліч помилок, що викликало безперервний потік публікацій про них і спроб їх виправлення. Тільки в операційній системі OS / 360 містилося понад 1000 відомих помилок. Проте, ідея стандартизації операційних систем була широко впроваджена в свідомість користувачів і надалі отримала активний розвиток.

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

Примітки