Коротка історія еволюції обчислювальних систем. Тенденції розвитку
Розглядатимемо історію розвитку саме обчислювальних, а не операційних систем, тому що hardware і програмне забезпечення еволюціонували одночасно. Поява нових технічних можливостей приводила до прориву у області створення зручних, ефективних і безпечних програм, а нові ідеї в програмній області стимулювали пошуки нових технічних рішень. Саме критерії зручності, ефективності і безпеки виконували роль чинників природного відбору при еволюції обчислювальних систем.
Перший період (1945-1955). Лампові машини. Операційні систем відсутні.
Перші кроки по створенню електронних обчислювальних машин були зроблені в кінці другої світової війни. У середині 40-х були створені перші лампові обчислювальні пристрої, і з'явився принцип програми, що зберігається в пам'яті машини (John Von Neumann, червень 1945 г). У той час одна і та ж група людей брала участь і в проектуванні, і в експлуатації, і в програмуванні обчислювальної машини. Це була швидше науково-дослідна робота у області обчислювальної техніки, а не регулярне використання комп'ютерів як інструмента розв’язання яких-небудь практичних задач з прикладних областей. Програмування здійснювалося виключно на машинній мові. Про операційні системи не було і мови, всі задачі організації обчислювального процесу розв'язувалися власноруч кожним програмістом з пульта управління. За пультом міг знаходитися тільки один користувач. Програма завантажувалася в пам'ять машини в кращому разі з колоди перфокарт, а зазвичай за допомогою панелі перемикачів.Обчислювальна система виконувала одночасно тільки одну операцію (введення-вивід, обчислення, роздуми програміста). Відладка програм велася з пульта управління за допомогою вивчення стану пам'яті і регістрів машини. В кінці цього періоду з'являється перше системне програмне забезпечення: у 1951-52 рр. виникають прообрази перших компіляторів з символічних мов (Fortran і ін.), а в 1954 р. Nat Rochester розробляє асемблер для IBM-701. В цілому перший період характеризується високою вартістю обчислювальних систем, їх малою кількістю і низькою ефективністю використання.
Другий період (1955-початок 60-х). Комп'ютери на основі транзисторів. Пакетні операційні системи
З середини 50-х років почався новий період в еволюції обчислювальної техніки, пов'язаний з появою нової технічної бази — напівпровідникових елементів. Застосування транзисторів замість часто перегораючих електронних ламп привело до підвищення надійності комп'ютерів. Тепер вони змогли безперервно працювати настільки довго, щоб на них можна було покласти виконання дійсно практично важливих задач. Знизилося споживання обчислювальними машинами електроенергії. Простіше стали системи охолоджування. Розміри комп'ютерів зменшилися. Експлуатація і обслуговування обчислювальної техніки подешевшали. Почалося використання ЕОМ комерційними фірмами. Одночасно спостерігається бурхливий розвиток алгоритмічних мов (ALGOL-58, LISP, COBOL, ALGOL-60, PL-1 і т.д.). З'являються перші справжні компілятори, редактори зв'язків, бібліотеки математичних і службових підпрограм. Спрощується процес програмування. Зникає необхідності звалювати на одних і тих же людей весь процес розробки і застосовування комп'ютерів. Саме в цей період відбувається розділення персоналу на програмістів і операторів, фахівців по експлуатації і розробників обчислювальних машин.
Змінюється сам процес прогону програм. Тепер користувач приносить програму з вхідними даними у вигляді колоди перфокарт і вказує ресурси, що вимагаються для неї. Такий набір перфокарт одержує назву “завдання”. Оператор завантажує завдання в пам'ять машини і запускає його на виконання. Одержані вихідні дані друкуються на принтері, і користувач одержує їх назад через деякий час.
З'являються перші системи пакетної обробки, які автоматизують запуск однієї програми з пакету за іншою і, тим самим, збільшують коефіцієнт завантаження процесора. При реалізації систем пакетної обробки була розроблена формалізована мова управління завданнями, за допомогою якого програміст повідомляв систему і оператора, яку роботу він хоче виконати на обчислювальній машині. Системи пакетної обробки стали прообразом сучасних операційних систем, вони стали першими системними програмами, призначеними для управління обчислювальним процесом.
Третій період (Початок 60-х — 1980). Комп'ютери на основі інтегральних мікросхем. Перші багатозадачні ОС.
Наступний важливий період розвитку обчислювальних машин відноситься до початку 60-х — 1980 рокам. В цей час в технічній базі відбувся перехід від окремих напівпровідникових елементів типу транзисторів до інтегральних мікросхем. Обчислювальна техніка стає надійнішою і дешевшою. Росте складність і кількість задач, вирішуваних комп'ютерами. Підвищується продуктивність процесорів.
Підвищенню ефективності використання процесорного часу заважає низька швидкість механічних пристроїв вводу-виводу (швидкий зчитувач перфокарт міг обробити 1200 перфокарт в хвилину, принтери друкували до 600 рядків в хвилину). Замість безпосереднього читання пакету завдань з перфокарт в пам'ять починають використовувати його попередній запис спочатку на магнітну стрічку, а потім і на диск. Коли в процесі виконання завдання потрібне введення даних, вони читаються з диска. Так само вихідна інформація спочатку копіюється в системний буфер і записується на стрічку або диск, а реально друкується тільки після завершення завдання. Спочатку реальні операції введення-виводу здійснювалися в режимі off-line, тобто з використанням інших, простіших, окремо взятих комп'ютерів. Надалі вони починають виконуватися на тому ж комп'ютері, який виконує обчислення, тобто в режимі on-line. Такий прийом одержує назву spooling (скорочення від Simultaneous Peripheral Operation On Line) або підкачки-відкачування даних. Введення техніки підкачки в пакетні системи дозволило сумістити реальні операції вводу-виводу одного завдання з виконанням іншого завдання, але зробило необхідним появу апарату перепинів для сповіщення процесора про закінчення цих операцій.
Поява магнітного диску, для якого не важливий порядок читання інформації, тобто пристрою прямого доступу, привело до подальшого розвитку обчислювальних систем. При обробці пакету завдань на магнітному диску з'являється можливість вибору чергового виконуваного завдання. Пакетні системи починають займатися плануванням завдань: залежно від наявності запитаних ресурсів, терміновості обчислень та ін. на обробку вибирається те або інше завдання.
Подальше підвищення ефективності використання процесора було досягнуто за допомогою мультипрограмування. Ідея мультипрограмування полягає в наступному: поки одна програма виконує операцію вводу-виводу, процесор не простоює, як це відбувалося при однопрограмному режимі, а виконує іншу програму. Коли операція вводу-виводу закінчується, процесор повертається до виконання першої програми. Ця ідея нагадує поведінку викладача і студентів на іспиті. Поки один студент (програма) обдумує відповідь на поставлене питання (операція вводу-виводу), викладач (процесор) вислуховує відповідь іншого студента (обчислення). Природно, що така ситуація вимагає наявності в кімнаті декількох студентів. Точно також мультипрограмування вимагає наявності в пам'яті декількох програм одночасно. При цьому кожна програма завантажується в свою ділянку оперативної пам'яті, і не повинна впливати на виконання іншої програми. (Студенти сидять за окремими столами і не підказують один одному.)
Поява мультипрограмування вимагає цілої революції в будові
обчислювальної системи. Велику роль, тут грає апаратна підтримка, найістотніші особливості якої:
• Реалізація захисних механізмів. Програми не повинні мати самостійного доступу до розподілу ресурсів, що приводить до появи привілейованих і непривілейованих команд. Привілейовані команди, наприклад команди вводу-виводу, можуть виконуватися тільки операційною системою. Говорять, що вона працює в привілейованому режимі. Перехід управління від прикладної програми до ОС супроводжується контрольованою зміною режиму. Захист пам'яті, дозволяє ізолювати призначені для користувача конкуруючі програми одна від одної, а ОС від програм користувачів.
• Наявність перепинів. Зовнішні перепини сповіщають ОС про те, що відбулася асинхронна подія, наприклад, завершилася операція вводу- виводу. Внутрішні перепини (зараз їх прийнято називати винятковими ситуаціями) виникають, коли виконання програми привело до ситуації, що вимагає втручання ОС, наприклад, ділення на нуль або спроба порушення захисту.
Не менш важлива в організації мультипрограмування роль операційної системи. Найістотніші зміни полягали в наступному:
• Інтерфейс між прикладною програмою і ОС був організований за допомогою набору системних викликів.
• Організація черги із завдань в пам'яті і виділення процесора одному із завдань потребували планування завдань.
• Для перемикання процесора з одного завдання на інше виникла потреба в збереженні вмісту регістрів і структур даних, необхідних для виконання завдання, інакше кажучи, контексту, для забезпечення правильного продовження обчислень.
• Оскільки пам'ять є обмеженим ресурсом, виявилися потрібні стратегії управління пам'яттю, тобто потрібно було упорядкувати процеси розміщення, заміщення і вибірки інформації з пам'яті.
• Оскільки програми можуть побажати зробити санкціонований обмін даними, стало необхідно їх забезпечити засобами комунікації.
• Для коректного обміну даними необхідно передбачити координацію програмами своїх дій, тобто засоби синхронізації.
Мультипрограмні пакетні системи дають оточення, в якому різні системні ресурси використовуються ефективно. Та все ж користувач не міг безпосередньо взаємодіяти із завданням і повинен передбачити за допомогою управляючих карт всі можливі ситуації. Відладка програм як і раніше займала багато часу і вимагала вивчення багатосторінкових роздруків вмісту пам'яті і регістрів або використання налагоджувального друку.
Поява електроннопроміневих дисплеїв і переосмислення можливостей застосування клавіатур дозволили підійти до вирішення цієї проблеми. Логічним розширенням систем мультипрограмування стали time-sharing системи або системи поділу часу. В них процесор перемикається між задачами не тільки на час операцій вводу-виводу, але і просто після певного інтервалу часу. Ці перемикання відбуваються так часто, що користувачі можуть взаємодіяти зі своїми програмами під час їх виконання, тобто працювати інтерактивно. В результаті з'являється можливість одночасної роботи багатьох користувачів на одній комп'ютерній системі. У кожного користувача для цього повинна бути хоча б одна програма в пам'яті. Щоб зменшити обмеження на кількість працюючих користувачів, була упроваджена ідея неповного знаходження виконуваної програми в оперативній пам'яті. Основна частина програми знаходиться на диску і необхідна для її подальшого виконання частина може бути легко завантажена в оперативну пам'ять, а непотрібна — викачана назад на диск. Це реалізується за допомогою механізму віртуальної пам'яті. Основною перевагою такого механізму є створення ілюзії необмеженої оперативної пам'яті.
У системах поділу часу користувач отримав можливість легко і ефективно
вести відладку своєї програми в інтерактивному режимі, записувати інформацію на диск, не використовуючи перфокарти, а безпосередньо з клавіатури. Поява on-line файлів привела до необхідності розробки деревоподібних файлових систем.
Паралельно внутрішній еволюції обчислювальних систем в цей період спостерігається і зовнішня їх еволюція. До початку цього періоду обчислювальні комплекси були, як правило, несумісні. Кожен мав свою власну спеціальну операційну систему, свою систему команд. В результаті програму, що успішно працює на одному типі машин, необхідно було повністю переписати і наново відладити для іншого типу комп'ютерів, все програмне забезпечення було платформо-залежним, або програмно-несумісним. На початку третього періоду з'явилася ідея створення сімейств програмно- сумісних машин, що працюють під управлінням однієї і тієї ж операційної системи. Першим сімейством програмно-сумісних машин, побудованих на інтегральних мікросхемах, з'явилася серія машин IBM/360. За нею з’явилася лінія комп'ютерів PDP, несумісних з лінією IBM, кульмінацією якої стала поява PDP-11.
Сила однієї сім'ї ОС була одночасно і її слабкістю. Широкі можливості цієї концепції (наявність всіх моделей: від мінікомп'ютерів до гігантських машин; велика кількість різноманітної периферії; різне оточення; різні користувачі) породжували складну і величезну операційну систему. Мільйони рядків асемблеру, написані тисячами програмістів, містили безліч помилок, що викликало безперервний потік публікацій про них і спроб їх виправлення. Тільки в операційній системі OS/360 містилося більше 1000 відомих помилок. Проте, ідея стандартизації операційних систем була широко упроваджена в свідомість користувачів і надалі одержала активний розвиток.
Четвертий період (1980-теперішній час). Персональні комп'ютери. Класичні, мережеві і розподілені системи. Наступний період в еволюції обчислювальних систем пов'язаний з появою великих інтегральних схем. У ці роки відбулося різке зростання ступеня інтеграції і здешевлення мікросхем. Комп'ютер, не відмінний по архітектурі від PDP-11, за ціною і простотою експлуатації став доступний окремій людині, а не відділу підприємства або університету. Наступила ера персональних комп'ютерів. Спочатку персональні комп'ютери призначалися для використовування одним користувачем в однопрограмному режимі, що спричинило за собою деградацію архітектури цих ЕОМ і їх операційних систем (зокрема, пропала необхідність захисту файлів і пам'яті, планування завдань). Комп'ютери стали широко використовуватися неспеціалістами, що вимагало розробку "дружнього" програмного забезпечення, це поклало край кастовості програмістів.
Проте зростання складності і різноманітності задач, вирішуваних на персональних комп'ютерах, необхідність підвищення надійності їх роботи привели до відродження практично всіх рис, характерних для архітектури великих обчислювальних систем.
У середині 80-х стали бурхливо розвиватися мережі комп'ютерів, зокрема персональних, що працюють під керуванням мережевих або розподілених операційних систем.
У мережевих операційних системах користувачі, при необхідності скористатися ресурсами іншого мережевого комп'ютера, повинні знати про його наявність і уміти це зробити. Кожна машина в мережі працює під управлінням своєї локальної операційної системи, відмінної від операційної системи автономного комп'ютера наявністю додаткових засобів (програмною підтримкою для мережевих інтерфейсних пристроїв і доступу до видалених ресурсів), але ці доповнення істотно не змінюють структуру операційної системи.
Розподілена система, навпаки, зовні виглядає як звична автономна система. Користувач не знає і не повинен знати, де його файли зберігаються на локальній або видаленій машині, і де його програми виконуються. Він може
взагалі не знати, чи підключений його комп'ютер до мережі. Внутрішня будова
розподіленої операційної системи має істотні відмінності від автономних систем.
Автономні операційні системи називають класичними операційними системами.
Проглянувши етапи розвитку обчислювальних систем, можна виділити п'ять основних функцій, які виконували класичні операційні системи в процесі своєї еволюції:
1. Планування завдань і використання процесора.
2. Забезпечення програм засобами комунікації і синхронізації.
3. Управління пам'яттю.
4. Управління файловою системою.
5. Управління вводу-виводу.
6. Забезпечення безпеки.
Кожна з приведених функцій звичайно реалізована у вигляді підсистеми, що є структурним компонентом ОС. У кожній конкретній операційній системі ці функції, звичайно, реалізовувалися по-своєму, в різному об'ємі. Вони не були придумані як складові частини діяльності операційних систем спочатку, а з'явилися в процесі розвитку, у міру того, як обчислювальні системи ставали зручніше, ефективніше і безпечніше. Еволюція обчислювальних систем, створених людиною пішла по такому шляху, але ніхто ще не довів, що це єдино можливий шлях їх розвитку. Операційні системи існують тому, що на даний момент часу — це розумний спосіб використання обчислювальних систем.