Поняття та еволюція операційних систем. Еволюція операційних систем. Основні етапи розвитку. Перелічимо основні функції операційних систем

ПОНЯТТЯ ОПЕРАЦІЙНОЇ СИСТЕМИ

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

Призначення ОС - організація обчислювального процесу в обчислювальній системі, раціональний розподіл обчислювальних ресурсів між окремими завданнями, що вирішуються; надання користувачам численних сервісних засобів, що полегшують процес програмування та налагодження завдань. Операційна система виконує роль своєрідного інтерфейсу (Інтерфейс - сукупність апаратури і програмних засобів, необхідні підключення периферійних пристроїв до ПЕОМ) між користувачем і ЗС, тобто. ОС надає користувачеві віртуальну ЗС. Це означає, що ОС значною мірою формує у користувача уявлення про можливості ВС, зручність роботи з нею, її пропускну здатність. Різні ОС на тих самих технічних засобах можуть надати користувачеві різні можливості для організації обчислювального процесу або автоматизованої обробкиданих.

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

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



Етапи розвитку операційних систем

Перший період (1945 -1955)

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

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

Другий період (1955 – 1965)

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

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

Третій період (1965 – 1980)

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

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

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

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

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

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

Базові мережеві утиліти.

Linux є мережевою операційною системою. Це означає, що користувач може пересилати файли і працювати не тільки на своїй локальній машині, але, користуючись віддаленим доступом, отримувати та посилати файли, виконувати якісь дії на віддаленій машині. Великий набір мережевих утиліт робить процес роботи на віддаленому комп'ютері таким самим зручним, як і на локальній ЕОМ

З метою безпеки при роботі на віддаленому комп'ютері варто використовувати утиліту ssh (secure shell). Звичайно, користувач повинен бути зареєстрований у системі, де він збирається працювати. У вікні емулятора термінала користувач має ввести команду.

ssh user_login@host

де login - реєстраційне ім'якористувача на машині host. Інший варіант такий:

ssh host -l user_login

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

Наприклад, визначення середнього значення п'яти осередків можна описати формулою: =(A1 + A2 + A3 + A4 + A5)/5, а можна спеціальною функцієюСРЗНАЧ, яка скоротить вираз до наступного виду: СРЗНАЧ(А1: А5). Як бачите, що замість введення у формулу всіх адрес осередків можна використовувати певну функцію, вказавши їй як аргумент їх діапазон.

Для роботи з функціями Excel на стрічці існує окрема закладка Формули, на якій розташовуються всі основні інструменти для роботи з ними

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

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

Як аргумент може виступати конкретне число, самостійне посилання на комірку, ціла серія посилань на значення або комірки, а також діапазон комірок. При цьому в одних функцій аргументи – це текст чи числа, інші – час і дати.

Багато функцій можуть мати відразу кілька аргументів. У такому разі кожен з них відокремлюється від наступного крапкою з комою. Наприклад, функція = ВИРОБ(7; A1; 6; B2) вважає твір чотирьох різнихчисел, зазначених у дужках, і містить чотири аргументи. При цьому в нашому випадку одні аргументи вказані явно, а інші є значеннями певних осередків.

Так само як аргумент можна використовувати іншу функцію, яка в цьому випадку називається вкладеною. Наприклад, функція =СУМ(A1:А5; СРЗНАЧ(В5:В10)) підсумовує значення осередків що знаходяться в діапазоні від А1 до А5, а також середнє значення чисел, розміщених у клітинах В5, В6, В7, В8, В9 і В10.

У деяких простих функційаргументів може бути зовсім. Так, за допомогою функції =ТДАТА() можна отримати поточний час та дату, не використовуючи жодних аргументів.

Далеко не всі функції Ecxel мають просте визначення, як функція СУММ, що здійснює підсумовування обраних значень. Деякі з них мають складне синтаксичне написання, а також вимагають багато аргументів, які мають бути правильних типів. Чим складніша функція, тим складніше її правильне складання. І розробники це врахували, включивши до своїх електронних таблиць помічника зі складання функцій для користувачів – Майстер функцій.

Щоб почати вводити функцію за допомогою Майстра функцій, клацніть на значок Вставити функцію (fx), розташований ліворуч від Рядки формул.

Також кнопку Вставити функцію ви знайдете на стрічці зверху в групі Бібліотека функцій у вкладці Формули. Ще одним способом виклику майстра функцій є поєднання клавіш Shift+F3.

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

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

Зробивши необхідний вибір, натисніть кнопку ОК, після чого з'явиться вікно Аргументи функції.

Діаграми

Часто числа в таблиці, навіть відсортовані належним чином, не дозволяють скласти повну картину за підсумками обчислень. Щоб отримати наочне уявлення результатів, в MS Excel існує можливість побудови діаграм різних типів. Це може бути як звичайна гістограма або графік, так і пелюсткова, кругова або екзотична пухирцева діаграма. Більше того, у програмі існує можливість створювати комбіновані діаграми з різних типів, зберігаючи їх як шаблон для подальшого використання.

Діаграму в Excel можна розмістити або на тому ж аркуші, де вже знаходиться таблиця, і в такому випадку вона називається "впровадженою", або на окремому аркуші, Який буде називатися «аркуш діаграми».

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

Потім, на стрічці у вкладці Вставка у групі Діаграми виберіть потрібний тип та вид діаграми. Щоб побачити короткий опис того чи іншого типу і виду діаграм, необхідно затримати на ньому покажчик миші

У правому нижньому куті блоку Діаграми розташовується невелика кнопка Створити діаграму, за допомогою якої можна відкрити вікно Вставка діаграми, що відображає всі види, типи та шаблони діаграм.

Також зверніть увагу, на появу додаткової закладки на стрічці Робота з діаграмами, що містить ще три вкладки: Конструктор, Макет і Формат.

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

На вкладці Макет розміщуються команди, які дозволяють додавати або видаляти різні елементидіаграми, які можна легко форматувати за допомогою закладки Формат.

Вкладка Робота з діаграмами з'являється автоматично, коли ви виділяєте діаграму і зникає, коли відбувається робота з іншими елементами документа.

Концепція операційної системи. Основні етапи розвитку операційних систем.


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

В основному еволюцію розвитку ОС поділяють на 5 поколінь:

Перше покоління (1940 – 50).Тільки-но з'явилися лампові обчислювальні пристрої. Розроблено принцип програми. ОС відсутні, вся робота з управління ведеться розробниками.

Друге покоління (1950 – 60).Обчислювальні пристрої працюють на напівпровідникових елементах. З'являється прообраз ОС - системи пакетної обробки, які просто автоматизують запуск однієї програми з пакета за іншою і тим самим збільшують коефіцієнт завантаження процесора.

Третє покоління (1960 – 70). Напівпровідникові елементи поєднуються в інтегральні мікросхеми. З'являються ОС за допомогою апарату переривання, планування завдань, мультипрограмування. Одна і та ж ОС починає працювати на різних пристроях, але вона, як і раніше, залишається пакетною. Також з'являється операційна система реального часу(ОСРВ), у якій ЕОМ застосовується керувати технічними об'єктами. Характерною властивістю для ОСРВ є реактивність- готовність системи виробляти керуючі впливу негайно.

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

П'яте покоління (З середини 1980-х рр. по н.в.). ОС використовують можливості мережевих технологій, зокрема технології клієнт – сервер, інтерфейс стає графічним і дружнім.

Також існує 5 основних підходів до побудови ОС


  • Монолітне ядро

  • Мікроядернаархітектура

  • Багаторівнева система

  • Віртуальна машина

  • Змішана система

  1. Архітектура операційної системи. Класифікація операційних систем. Ефективність та вимоги до ОС.
Розглянемо існуючі архітектури ОС.

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

Багаторівневі системи.Всю обчислювальну систему можна розбити на ряд дрібніших рівнів з добре певними зв'язками між ними, так щоб об'єкти рівня N могли викликати лише об'єкти рівня N-1. Нижнім рівнем таких системах зазвичай є hardware, верхнім рівнем – інтерфейс користувача. Чим нижчий рівень, тим більше привілейовані команди та дії може виконувати модуль, що знаходиться на цьому рівні.

Віртуальними машинаминазивають програмне чи апаратне середовище, що виконує певний код. Найчастіше віртуальна машина емулює роботу реального комп'ютера. Прикладами є VMWareWorkstation і VirtualBox.

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

Змішана система.Найчастіше сучасні операційні системи використовують різні комбінаціївищенаведених підходів.

У ОС сформувалася своя класифікація:


  • за призначенням (загального, спеціального),

  • за режимом обробки завдань (однозадачні, мультипрограмні),

  • за способом взаємодії із системою (діалогові, з пакетною обробкою)

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

  • Ефективність.

  • Надійність та відмовостійкість.

  • Безпека (захищеність).

  • Передбачуваність.

  • Розширюваність.

  • Переносність.

  • Сумісність.

  • Зручність.

  • Масштабованість.

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

Процеси можуть перебувати у п'яти основних станах:


  • народження,

  • готовність,

  • виконання,

  • очікування,

  • закінчив виконання
В операційній системі процеси представляються певною структурою даних, яка містить таку інформацію (для різних ОС відрізняється):

  • стан, у якому перебуває процес;

  • адресу команди, яка має бути виконана для нього наступною;

  • вміст регістрів процесора;

  • дані, необхідні планування використання процесора та управління пам'яттю;

  • облікові дані;

  • відомості про пристрої введення-виведення, пов'язані з процесом.
Зі стану в стан процес перекладається операційною системою в результаті виконання над ним операцій. Операційна система може виконувати над процесами такі пари операцій:

  • створення процесу - завершення процесу,

  • призупинення процесу - запуск процесу,

  • блокування процесу - розблокування процесу,

  • зміна пріоритету процесу.


  1. рівні планування процесів в операційних системах. Основні цілі та критерії планування та параметри, на яких воно ґрунтується. Алгоритми планування.
Планування – це робота з визначення того, в який час перервати виконання одного процесу і якому процесу надати можливість виконуватися.

При побудові алгоритмів планування виділяють три різні рівні:


  • довгострокове;

  • короткострокове;

  • середньострокове.
До цілей можна віднести такі:

  • Справедливість.

  • Ефективність.

  • Скорочення повного часу виконання.

  • Скорочення часу очікування.

  • Скорочення часу відгуку.
Критерії планування:

  • Передбачуваність.

  • Мінімальні витрати.

  • Рівномірне завантаження ресурсів обчислювальної системи

  • Масштабованість
Параметри планування:

  • Статичні - граничні значення ресурсів системи: розмір оперативної пам'яті, максимальна кількість пам'яті на диску для здійснення свопінгу, кількість підключених пристроїв виводу-введення-виводу і т.п.

  • Динамічні – значення ресурсів системи нині.
Алгоритми планування

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

RoundRobin.По суті, це алгоритм FCFS, лише реалізований у режимі витісняючого планування (черговий процес передається виконання по таймеру після закінчення певного кванта часу).

ShortestJobFirst.Якщо вибирати процес не по порядку (як у FCFSі RR), а ґрунтуючись на його мінімальному часі безперервного використання процесора, це дозволить підвищити продуктивність алгоритму планування використання процесора. Описаний алгоритм отримав назву « найкоротша роботапершою» (англ. ShortestJobFirst, SJF).

Основну складність при реалізації алгоритму SJFпредставляє неможливість точно знати у разі час виконання чергового процесу.


  1. Кооперація процесів та основні аспекти її логічної організації (санкціонована взаємодія процесів)
Для нормального функціонування процесів операційна система намагається максимально відокремити їх одне одного. Проте існують причини їхньої взаємодії:

  • Підвищення швидкості роботи.

  • Спільне використання даних.

  • Модульна конструкція будь-якої системи.

  • Зручності роботи користувача
Категорії засобів обміну інформацією

  • Сигнальні.

  • Канальні.

  • Пам'ять, що розділяється.
Логічна організація механізму передачі

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

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

Особливості передачі інформації за допомогою ліній зв'язку

Буферизація


  • Буфер нульової ємності чи відсутній.

  • Буфер обмеженої ємності.

  • Буфер необмежену ємність.
Потік введення/виводу та повідомлення

  • Потік введення-виведення. Операції передачі/прийому не цікавляться вмістом даних

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

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


  1. Алгоритми синхронізації (алгоритми коректної організації взаємодії процесів).
Критична секція

Критична секція – частина програми, результат виконання якої може непередбачено змінюватися, якщо змінні, які стосуються неї, змінюються іншими потоками тоді, коли виконання цієї частини ще завершено. У прикладі критична секція – файл “замовлень”, що є ресурсом для процесів R і S.

Алгоритм Декера- перше відоме коректне вирішення проблеми взаємного виключення.

Якщо два процеси намагаються перейти в критичну секцію одночасно, алгоритм дозволить це лише одному з них, ґрунтуючись на тому, чия в цю мить черга. Якщо один процес уже увійшов у критичну секцію, інший чекатиме, поки перший покине її. Це реалізується за допомогою використання двох прапорів (індикаторів "наміру" увійти в критичну секцію) та змінної turn (що показує, черга якого з процесів настала).

Процеси оголошують про намір увійти до критичної секції; це перевіряється зовнішнім циклом "while". Якщо інший процес не заявив про такий намір, у критичну секцію можна безпечно увійти (незалежно від того, чия черга зараз). Взаємний виняток все одно буде гарантований, оскільки жоден з процесів не може увійти в критичну секцію до встановлення цього прапора (маю на увазі, що принаймні один процес увійде в цикл «while»). Це також гарантує поступ, оскільки не буде очікування процесу, що залишив «намір» увійти до критичної секції. В іншому випадку, якщо змінна іншого процесу була встановлена, входять до циклу «while» і змінна turn буде показувати, кому дозволено увійти до критичної секції. Процес, чия черга не настала, залишає намір увійти до критичної секції доти, доки не прийде його черга (внутрішній цикл «while»). Процес, чия черга прийшла, вийде із циклу «while» і увійде до критичної секції.

Не вимагає спеціальних Test-and-set інструкцій, тому легко переносимо на різні мовипрограмування та архітектури комп'ютерів

Діє лише для двох процесів

Алгоритм Петерсона- Програмний алгоритм взаємного виключення потоків виконання коду.

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

Як і алгоритм Деккера, діє лише для 2 процесів

Простіша реалізація, ніж алгоритм Деккера

Алгоритм булочної.Алгоритм Петерсона дає вирішення завдання коректної організації взаємодії двох процесів. Давайте розглянемо відповідний алгоритм для n взаємодіючих процесів.

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


  1. Спеціальні механізми синхронізації – семафори Дейкстри, монітори Хору, черги повідомлень.
Семафори

Для усунення цього недоліку у багатьох ОС передбачаються спеціальні системні виклики (апарат роботи з критичними секціями.

У різних ОС апарат подій реалізований за своїм, але в будь-якому випадку використовуються системні функції, які умовно називають WAIT(x) та POST(x), де x – ідентифікатор певної події (наприклад, звільнення ресурсу).

Узагальнюючий засіб синхронізації процесів запропонував Дейкстра, який запровадив нові примітиви, що позначаються V (“відкриття”) та P (“закриття”), що оперують над цілими невід'ємними змінними, які називаються семафорами.

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

Сенс P(S) полягає у перевірці поточного значення семафору S, і якщо S>0, то здійснюється перехід до наступної за примітивом операції, інакше процес переходить у стан очікування.

Процес блокується; S=S-1;

Операція V(S) пов'язана зі збільшенням значення S на 1 і переведенням одного або декількох процесів у стан готовності до виконання процесором.

У простому випадку, коли семафор працює у режимі 2-х станів (S>0 і S=0), його алгоритм роботи повністю збігається з алгоритмом работs мьютексу, а S виконує роль блокуючої змінної.

"+": пасивне очікування (постановка в чергу та автоматична видача ресурсів)


  • можливість управління групою однорідних ресурсів
"-": не вказують безпосередньо на критичний ресурс

  • некоректне використання операцій може призвести до порушення працездатності (наприклад, переставивши місцями операції P(e) та P(b) у функції Writer()).
Монітори

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

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

Функції-методи можуть використовувати лише дані, що знаходяться всередині монітора, і свої параметри.

Доступ до моніторів у кожний момент часу має лише один процес.

Для організації як взаємовиключень, а й черговості процесів, подібно семафорам f(full) і e(empty), було запроваджено поняття умовних змінних, з яких можна здійснювати дві операції wait і signal, частково схожі операції P і V над семафорами.

Функція монітора виконує операцію wait над будь-якою умовною змінною. При цьому процес, що виконав операцію wait, блокується, стає неактивним, і інший процес отримує можливість увійти до монітора.

Коли очікувана подія відбувається, інший процес усередині функції здійснює операцію signal над тією ж умовною змінною. Це призводить до пробудження раніше заблокованого процесу, і він стає активним.

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

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

Слід зазначити, що умовні змінні моніторів не запам'ятовують передісторію, тому операцію signal завжди має виконуватися після операції wait (інакше виконання операції wait завжди буде призводити до блокування процесу).

Черги повідомлень

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

Черга повідомлень надає можливість використовувати кілька дисциплін обробки повідомлень (FIFO, LIFO, пріоритетний доступ, довільний доступ).

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

У черзі є не самі повідомлення, а їх адреси в пам'яті та розмір. Ця інформація розміщується системою в сегменті пам'яті, доступному для всіх завдань, які спілкуються за допомогою цієї черги

Основні функції управління чергою:


  • Створення нової черги

  • Відкриття існуючої черги

  • Читання та видалення повідомлень з черги

  • Читання без подальшого видалення

  • Додавання повідомлення до черги

  • Завершення використання черги

  • Видалення з черги всіх повідомлень

  • Визначення кількості елементів у черзі

  1. Взаємоблокування, тупикові ситуації, "зависання" системи

сторінка 1
  • ІІ. Основні засади та правила службової поведінки державних цивільних службовців Федеральної податкової служби
  • ІІ. Основні цілі та завдання Програми, термін та етапи її реалізації, цільові індикатори та показники
  • ІІ. Основні етапи розвитку фізики Становлення фізики (до 17 ст).
  • III.2.1) Поняття злочину, основні характеристики.
  • Історія розвитку операційних систем налічує вже понад половину століття і нерозривно пов'язана з технічним рівнем розвитку електроніки, матеріалознавства, математичного апарату, всіх дисциплін науки і техніки, без яких немислимо побудувати обчислювальний комплекс. Тому етапи розвитку операційних систем тісно пов'язані з певними етапаминауково-технічного прогресу у цій галузі.

    Перший період (1945 – 1955 рр.)

    Перші електронні обчислювальні машини з'явилися після Другої світової війни. У 40-х були створені перші обчислювальні пристрої, засновані на лампах, і з'явився принцип програми, що зберігається в пам'яті машини (Говард Айкен з Гарвардського університету, Джон фон Нейман з Інституту поглибленого вивчення в Прінстоні та інші, червень 1945). Обчислювальні машини були громіздкими, які займали кілька кімнат. Їх конструкція передбачала використання кількох тисяч електронних ламп. Такою ж громіздкою була і робота з обчислювальною машиною. Одна група людей одночасно виконувала їх обслуговування, експлуатацію та програмування. Такі машини цілком можна віднести до категорії експериментальних, і обчислення, що виконуються на них, швидше, носили пробний (експериментальний) характер. Програмування виконувалося виключно машинною мовою, тобто. послідовним введенням з клавішного пульта кодів команд і даних, і ні про яке системне або прикладне програмне забезпечення не йшлося. Програма завантажувалася на згадку про машини з допомогою комутаційної панелі чи з колоди перфокарт. Існуючі пристроївводу/виводу не були стандартизовані і були примітивними пультами з набором перемикачів, кнопок та індикаторів. Всіми ресурсами обчислювальної машини розпоряджався обслуговуючий її персонал, який вручну запускав програму на виконання, виділяв їй необхідний обсяг пам'яті та візуально контролював весь процес обчислень. Обчислювальна система виконувала одночасно лише одну операцію (введення-виведення або власне обчислення). Налагодження програм велося з пульта керування за допомогою вивчення стану пам'яті та регістрів машини. Однак уже в цей період були створені бібліотеки математичних та службових програм, до яких програміст міг звертатися під час виконання основної програми.



    Наприкінці цього періоду з'являється перше системне програмне забезпечення: у 1951–1952 роках. виникають прообрази перших компіляторів із символічних мов (Fortran та інших.), а 1954 р. Nat Rochester розробляє Ассемблер для IBM-701.

    Значна частина часу йшла підготовку запуску програми, а самі програми виконувались суворо послідовно. Такий режим роботи називається послідовною обробкоюданих. У цілому нині перший період характеризується вкрай високою вартістюобчислювальних систем, їх малою кількістю та низькою ефективністю використання. Так, ЕОМ UNIVAC I, розроблена в березні 1951 року, містила 5000 ламп і могла працювати зі швидкістю 1000 операцій на секунду. Вартість такої машини становила 159 000 доларів США.

    Другий період (1955 – початок 60-х).

    У 1950-х років ХХ століття розпочався новий період у розвитку обчислювальної техніки. На зміну реле та лампам прийшли напівпровідникові транзистори. Це дозволило збільшити продуктивність процесорів, різко збільшився обсяг оперативної та зовнішньої пам'яті, з'явилися нові пристрої поєднання. Загалом обчислювальна система стала складнішою, що змінило ставлення до неї з боку операторів. Виникла необхідність автоматизації обчислювальних робіт і, як наслідок, спрощення самого процесу програмування. У ці роки з'явилися перші алгоритмічні мови та супутнє їм спеціальне програмне забезпечення – транслятори. Серед мов на той час найбільшого поширення набули АЛГОЛ і Фортран.



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

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

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

    Комп'ютери другого покоління використовувалися головним чином для наукових та технічних розрахунків, таких, наприклад, як рішення диференціальних рівнянь. Програмування велося на Фортрані чи Асемблері, а типовими операційними системами служили FMS (Fortran Monitor System) та IBSYS (операційна система компанії IBM для комп'ютера IBM 7094).

    Третій період (початок 60-х – 1980 р.).

    Поява у 1965-1975 роках обчислювальних машин на базі інтегральних схем відкрила нову сторінкуу розвитку обчислювальної техніки. Нові машини мали складну розвинену архітектуру, найбільш наближену до архітектури сучасних комп'ютерів. На цей час повністю визначилися з основним периферійним устаткуванням. Типовими представниками таких машин є серії ЕОМ IBM/360 або їхні вітчизняні аналоги – ЕОМ сімейства ЄС. Так як машини цієї серії мали однакову структуру та набір команд, то програми, написані для одного комп'ютера, могли працювати в принципі та на всіх інших. Ще однією перевагою серії комп'ютерів IBM/360 було те, що дані ЕОМ могли використовуватися як у наукових цілях (числові обчислення для науки і техніки), так і комерційного використання(Сортування та друк даних). Це зумовило успіх фірми IBM, яка заявила себе світовим лідером над ринком обчислювальних машин. Ідею сімейства сумісних комп'ютерів стали й інші виробники. Операційна система OS/360 була призначена для роботи на всіх комп'ютерах даного сімейства машин незалежно від того, яке призначення було у комп'ютера (розрахунок прогнозу погоди або звичайне копіювання інформації з перфокарт на магнітні стрічки).

    Незважаючи на те, що операційна система OS/360 була дуже громіздкою і складною (мільйони рядків на асемблері), саме в цей період були реалізовані практично всі основні механізми, що вбудовуються в сучасні операційні системи: багатозадачність, підтримка розрахованого на багато користувачів режиму, віртуальна пам'ять, файлова система і т.п. З напряму прикладної математики, що з програмуванням, виділяється окрема галузь - системне програмування. В умовах різко зрослих обчислювальних потужностейВиконання лише одного завдання в кожний момент часу виявилося малоефективним. Рішення було знайдено в мультипрограмуванні (багатозадачності) - способі організації обчислювального процесу, при якому в оперативну пам'ять завантажується кілька завдань одночасно, але виконуються на одному процесорі поперемінно. Мультипрограмування було реалізовано у двох варіантах: у системі пакетної обробки, що добре зарекомендувала себе, і в системі поділу часу (розробник – Массачусетський технологічний інститут, IBM 7094), завдяки якій у кожного користувача з'явився свій діалоговий термінал.

    Використання інтегральних схем дозволило значно зменшити розміри обчислювальних машин. Такі ЕОМ стали називати міні-комп'ютери (PDP-1, корпорація DEC, 1961 рік), і хоча вартість їх становила близько 120 000 доларів США, вони були комерційно успішними і мали гарний попит. Їх вартість становила 5% від вартості ЕОМ IBM 7094, однак деякі операції комп'ютери серії PDP виконували з такою ж швидкістю.

    Саме для комп'ютерів серії PDP-7 фахівець фірми Bell Labs Кен Томпсон розробив однокористувацьку версію операційної системи MULTICS, яка пізніше розвинулася в операційну систему UNIX, у якої потім з'явилися різновиди System V (корпорація AT&T), BSD (Каліфорнійський інститут Берклі) та інші. Для операційної системи UNIX Кен Томпсон і Денис Рітчі розробили мову C, яка досі лідирує в галузі системного програмування. У 1974 році вони опублікували статтю The UNIX Timesharing System в журналі Commun. of the ACM, завдяки якій система UNIXстала популярною.

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

    Існують також різні підходи щодо визначення поколінь ОС. Відомий поділ ОС на покоління відповідно до покоління обчислювальних машин і систем [ , , ]. Такий поділ не можна вважати цілком задовільним, оскільки розвиток методів організації ОС у межах одного покоління ЕОМ, як показав досвід створення, лежить у досить широкому діапазоні. Інша думка не пов'язує покоління ОС з відповідними поколіннями ЕОМ. Так, наприклад, відомо визначення поколінь ОС за рівнями вхідної мови ЕОМ, режимами використання центральних процесорів, формами експлуатації систем тощо.

    Мабуть, найбільш доцільним вважати виділення етапів розвитку ОС у межах окремих поколінь ЕОМ і ЗС .

    Першим етапом розвитку системного програмного забезпечення можна вважати використання бібліотечних програм, стандартних та службових підпрограм та макрокоманд. Концепція бібліотек підпрограм є найбільш ранньою і походить від 1949 року. З появою бібліотек отримали розвиток автоматичні засоби їхнього супроводу – програми-завантажувачі та редактори зв'язків. Ці кошти використовувалися в ЕОМ першого покоління, коли операційних систем ще не існувало (рис.3.2).

    Прагнення усунути невідповідність між продуктивністю процесорів та швидкістю роботи електромеханічних пристроїв введення виводу, з одного боку, та використання досить швидкодіючих накопичувачів на магнітних стрічкахі барабанах (НМЛ та НМБ), а потім на магнітних дисках (НМД), з іншого боку, призвело до необхідності вирішення завдань буферизації та блокування-деблокування даних. Виникли спеціальні програмиметодів доступу, які вносилися до об'єктів модулів редакторів зв'язків (згодом почали використовувати принципи полібуферизації). Для підтримки працездатностіта полегшення процесів експлуатації машин створювалися діагностичні програми. Таким чином, було створено базове системне програмне забезпечення.


    Мал. 3.2.

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

    Почався інтенсивний розвиток методів управління даними, виникала така важлива функція ОС, як реалізація введення-виведення без участі центрального процесу- так званий спулінг (від англ. SPOOL - Simultaneous Peripheral Operation on Line).

    Поява нових апаратних розробок (1959-1963 рр.) – систем переривань, таймерів, каналів – стимулювало розвиток ОС [ , ]. Виникли виконавчі системи, які являли собою набір програм для розподілу ресурсів ЕОМ, зв'язків з оператором, управління обчислювальним процесом та управління введенням-виводом. Такі виконавчі системи дозволили реалізувати досить ефективну на той час форму експлуатації обчислювальної системи – однопрограмну пакетну обробку. Ці системи давали користувачеві такі засоби, як контрольні точки, логічні таймери, можливість побудови програм. оверлейної структури, виявлення порушеньпрограмами обмежень, прийнятих у системі, управління файлами, збір облікової інформаціїта ін.

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

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

    Однією з перших ОС, які використовують ці новітні рішення, була операційна системаМСР (головна програма управління), створена фірмою Burroughs для своїх комп'ютерів В5000 в 1963 році. У цій ОС було реалізовано багато концепцій та ідеї, що стали згодом стандартними для багатьох операційних систем (рис.3.3):

    • мультипрограмування;
    • мультипроцесорна обробка;
    • віртуальна пам'ять;
    • можливість налагодження програм вихідною мовою;
    • написання операційної системи мовою високого рівня.

    Відомою системою поділу часу того періоду стала система CTSS (Compatible Time Sharing System) - сумісна система поділу часу, розроблена в Массачусетському технологічному інституті (1963) для комп'ютера IBM -7094. Ця система була використана для розробки в цьому ж інституті спільно з Bell Labs та General Electric системи поділу часу наступного покоління MULTICS (Multiplexed Information And Computing Service). Примітно, що ця ОС була написана переважно мовою високого рівня EPL (перша версія мови PL/1 фірма IBM).

    Одним з найважливіших подій в історії операційних систем вважається поява в 1964 сімейства комп'ютерів під назвою System /360 фірми IBM, а пізніше System /370. Це було першою у світі реалізацією концепції сімейства програмно та інформаційно сумісних комп'ютерів, що згодом стала стандартною для всіх фірм комп'ютерної галузі.


    Мал. 3.3.

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

    На той час відбулася істотна зміна у розподілі функцій між апаратними та програмними та програмними засобами комп'ютера. Операційна системастає "невід'ємною частиною ЕОМ", як би продовженням апаратури. У процесорах з'явився привілейований ("Супервізор" в OS/360) і користувальницький ("Завдання" в OS/360) режими роботи, потужна система переривань, захист пам'яті, спеціальні регістри для швидкого перемиканняпрограм, засоби підтримки віртуальної пам'яті та ін.

    На початку 1970-х з'явилися перші мережеві ОС, які дозволили як розосередити користувачів, як і системах телеобробки даних, а й організувати розподілене зберігання і обробку даних між комп'ютерами, з'єднаними електричними зв'язками. Відомий проект ARPANET MO США. У 1974 році IBM оголосила про створення власної мережевої архітектури SNA для своїх мейнфреймів, що забезпечує взаємодію типу "термінал - термінал", "термінал - комп'ютер", "комп'ютер - комп'ютер". У Європі активно розроблялася технологія побудови мереж із комутацією пакетів на основі протоколів Х.25.

    До середини 70-х років поряд з мейнфреймами широкого поширення набули міні-комп'ютери (PDP-11, Nova, HP). Архітектура міні-комп'ютерів була значно простішою, багато функцій мультипрограмних ОС мейнфреймів було усічено. Операційні системи міні-ЕОМ стали робити спеціалізованими (RSX-11M - поділ часу, RT-11 – OC реального часу) і не завжди розрахованими на багато користувачів.

    Важливою віхою історія міні-комп'ютерів і взагалі історії операційних систем стало створення ОС UNIX . Написав цю систему Кен Томпсон (Ken Thompson), один із фахівців з комп'ютерів у BELL Labs, який працював над проектом MULTICS. Власне, його UNIX - це зрізана однокористувацька версія системи MULTICS. Початкова назва цієї системи - UNICS (UNiplexed Information and Computing Service) - "примітивна інформаційна та комп'ютерна службаТак жартома була названа ця система, оскільки MULTICS (MULTiplexed Information and Computing Service) – мультиплексна інформаційна та комп'ютерна служба. З середини 70-х років почалося масове використання ОС UNIX, написаної на 90% мовою С. Широке поширення С- компіляторів зробило UNIX унікальною переносимою OC, а оскільки вона поставлялася разом з вихідними кодами, то вона стала першою відкритою операційною системою.

    Доступність міні-комп'ютерів стала стимулом для створення локальних мереж. У найпростіших ЛОМ комп'ютери з'єднувалися через послідовні порти. Перший мережний додаток для ОС UNIX – програма UUCP (Unix to Unix Copy Program) – з'явився у 1976 році.

    Подальший розвиток мережевих систем йшов зі стеком протоколів TCP/IP. У 1983 році він був прийнятий MO США як стандарт і використаний в мережі ARPANET. У цьому року ARPANET розділилася на MILNET (для військового відомства США) і нову ARPANET , яку почали називати Internet .

    Всі вісімдесяті роки характерні появою все більш досконалих версій UNIX: Sun OS, HP-UX, Irix, AIX та ін. Для вирішення проблеми їхньої сумісності були прийняті стандарти POSIX і XPG, що визначають інтерфейси цих систем для додатків.

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

    Найбільш популярною версією ОС раннього етапу розвитку персональних комп'ютерів була MS-DOS компанії Microsoft - однопрограмна, однокористувацька ОС з інтерфейсом командного рядка. Багато функцій, що забезпечують зручність роботи користувача, в цій ОС надавалися додатковими програмами – оболонкою Norton Commander, PC Tools та ін. Найбільший вплив на розвиток програмного забезпечення надала ПК операційне середовище Windows, перша версія якої з'явилася 1985 року. Мережеві функції також реалізувалися за допомогою мережевих оболонок та з'явилися у MS-DOS версії 3.1. У цей же час побачили світ мережеві продукти Microsoft - MS-NET, а пізніше - LAN Manager, Windows for Workgroup, а потім і Windows NT.

    Іншим шляхом пішла компанія Novell, її продукт NetWare є операційною системою із вбудованими мережевими функціями. ОС NetWare поширювалася як

    ГЛАВА 1


    Еволюція операційних систем

    Історія будь-якої галузі науки чи техніки дозволяє не лише задовольнити природну цікавість, а й глибше зрозуміти сутність основних досягнень цієї галузі, усвідомити існуючі тенденції та правильно оцінити перспективність тих чи інших напрямів розвитку. За майже піввіковий період свого існування операційні системи пройшли складний шлях, насичений багатьма важливими подіями. Величезний вплив на розвиток операційних систем надали успіхи у вдосконаленні елементної бази та обчислювальної апаратури, тому багато етапів розвитку ОС тісно пов'язані з появою нових типів апаратних платформ, таких як міні-комп'ютери або персональні комп'ютери. Серйозну еволюцію операційні системи зазнали у зв'язку з новою роллю комп'ютерів у локальних та глобальних мережах. Найважливішим чинником розвитку ОС став Інтернет. У міру того як ця Мережа набуває рис універсального засобумасових комунікацій, ОС стають все більш простими та зручними у використанні, включають розвинені засоби підтримки мультимедійної інформації, Забезпечуються надійними засобами захисту.

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

    Ідея комп'ютера була запропонована англійським математиком Чарльзом Бебіджем (Charles Babage) у середині дев'ятнадцятого століття. Його механічна «аналітична машина» так і не змогла по-справжньому заробити, бо технології на той час не задовольняли вимогам, необхідним для виготовлення потрібних деталей точної механіки. Звичайно, жодної мови про операційну систему для цього «комп'ютера» не йшлося.

    Справжнє народження цифрових обчислювальних машин сталося невдовзі після закінчення Другої світової війни. У 40-х були створені перші лампові обчислювальні пристрої. У той час одна і та ж група людей брала участь і в проектуванні, і в експлуатації, і в програмуванні обчислювальної машини. Це була скоріше науково-дослідна робота в галузі обчислювальної техніки, а не використання комп'ютерів як інструмент вирішення будь-яких практичних завдань з інших прикладних областей. Програмування здійснювалося виключно машинною мовою. Не було жодного системного програмного забезпечення, крім бібліотек математичних та службових підпрограм, які програміст міг використовувати для того, щоб не писати щоразу коди, що обчислюють значення будь-якої математичної функціїабо керуючі стандартним пристроєм вводу-виводу. Операційні системи все ще не з'явилися, всі завдання організації обчислювального процесу вирішувалися вручну кожним програмістом з пульта управління, який був примітивним пристроєм введення-виводу, що складається з кнопок, перемикачів та індикаторів. З середини 50-х почався новий період у розвитку обчислювальної техніки, пов'язаний з появою нової технічної бази - напівпровідникових елементів. Зросла швидкодія процесорів, збільшилися обсяги оперативної та зовнішньої пам'яті. Комп'ютери стали надійнішими, тепер вони могли безперервно працювати настільки довго, щоб на них можна було покласти виконання справді практично важливих завдань.

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

    Виконання кожної програми почало включати велику кількість допоміжних робіт: завантаження потрібного транслятора (АЛГОЛ, ФОРТРАН, КОБОЛ тощо), запуск транслятора та отримання результуючої програми в машинних кодах, зв'язування програми з бібліотечними підпрограмами, завантаження програми в оперативну пам'ять, запуск програми , виведення результатів на периферійний пристрій. Для організації ефективного спільного використання трансляторів, бібліотечних програм та завантажувачів у штаті багатьох обчислювальних центрів було введено посади операторів, які професійно виконували роботу з організації обчислювального процесу для всіх користувачів цього центру.

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

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

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

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

    Поява мультипрограмних операційних систем для мейнфреймів

    Наступний важливий період розвитку операційних систем належить до років.

    У цей час у технічній базі обчислювальних машин стався перехід від окремих напівпровідникових елементів типу транзисторів до інтегральних мікросхем, що відкрило шлях до наступного покоління комп'ютерів. Великі функціональні можливості інтегральних схем уможливили реалізацію практично складних комп'ютерних архітектур, таких, наприклад, як IBM/360.

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

    Мультипрограмування було реалізовано у двох варіантах – у системах пакетної обробки та поділу часу.

    Мультипрограммные системи пакетної обробки як і, і його однопрограмні попередники, мали за мету забезпечення максимального завантаження апаратури комп'ютера, проте вирішували це завдання ефективніше. У мультипрограмному пакетному режимі процесор не простоював, поки одна програма виконувала операцію введення-виводу (як це відбувалося при послідовному виконанні програм у системах ранньої пакетної обробки), а перемикався на іншу готову до виконання програму. В результаті досягалося збалансоване завантаження всіх пристроїв комп'ютера, а отже, збільшувалася кількість завдань, які вирішуються в одиницю часу. У мультипрограмних системах пакетної обробки користувач, як і раніше, був позбавлений можливості інтерактивно взаємодіяти зі своїми програмами. Щоб хоча б частково повернути користувачам відчуття безпосередньої взаємодії з комп'ютером, було розроблено інший варіант мультипрограмних систем - системи поділу часу. Цей варіант розрахований на багатотермінальні системи, коли кожний користувач працює за своїм терміналом. Серед перших операційних систем поділу часу, розроблених у середині 60-х років, були TSS/360 (компанія IBM), CTSS та MULTICS (Масачусетський технологічний інститут спільно з Bell Labs та компанією General Electric). Варіант мультипрограмування, який застосовується в системах поділу часу, був націлений на створення для кожного окремого користувача ілюзії одноосібного володіння обчислювальною машиною за рахунок періодичного виділення кожної програми своєї частки процесорного часу. У системах поділу часу ефективність використання устаткування нижче, ніж у системах пакетної обробки, що було платою за зручності роботи користувача.

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

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

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

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

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

    Ще однією важливою тенденцією цього періоду є створення сімейств програмно-сумісних машин та операційних систем для них. Прикладами сімейств програмно-сумісних машин, побудованих на інтегральних мікросхемах, є серії машин IBM/360 та IBM/370 (аналоги цих сімейств радянського виробництва – машини серії ЄС), PDP-11 (радянські аналоги – CM-3, CM-4, CM -1420). Незабаром ідея програмно-сумісних машин стала загальновизнаною.

    Програмна сумісність вимагала та сумісності операційних систем. Однак така сумісність має на увазі можливість роботи на великих і на малих обчислювальних системах, з великою і малою кількістю різноманітної периферії, в комерційній галузі та в галузі наукових досліджень. Операційні системи, побудовані з наміром задовольнити всім цим суперечливим вимогам, виявились надзвичайно складними. Вони складалися з багатьох мільйонів асемблерних рядків, написаних тисячами програмістів, і містили тисячі помилок, що викликають нескінченний потік виправлень. Операційні системи цього покоління були дуже дорогими. Так, розробка OS/360, обсяг коду для якої становив 8 Мбайт, коштувала компанії IBM 80 мільйонів доларів.

    Однак незважаючи на неозорі розміри та безліч проблем, OS/360 та інші подібні операційні системи цього покоління справді задовольняли більшості вимог споживачів. За це десятиліття було зроблено величезний крок уперед та закладено міцний фундамент для створення сучасних операційних систем.

    Операційні системи та глобальні мережі

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

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

    У 1969 році Міністерство оборони США ініціювало роботи з об'єднання суперкомп'ютерів оборонних та науково-дослідних центрів у єдину мережу. Ця мережа отримала назву ARPANET і стала відправною точкою для створення найвідомішої нині глобальної мережі - Інтернету. Мережа ARPANET об'єднувала комп'ютери різних типів, які працювали під управлінням різних ОС з доданими модулями, що реалізують комунікаційні протоколи, загальні всім комп'ютерів мережі.

    У 1974 році компанія IBM оголосила про створення власної мережевої архітектури для своїх мейнфреймів, що отримала назву SNA ( System NetworkАрхітектура). Ця багаторівнева архітектура, багато в чому подібна до стандартної моделі OSI, що з'явилася дещо пізніше, забезпечувала взаємодію типу «термінал-термінал», «термінал-комп'ютер» та «комп'ютер-комп'ютер» по глобальних зв'язках. Нижні рівні архітектури були реалізовані спеціалізованими апаратними засобами, найбільш важливим є процесор телеобробки. Функції верхніх рівнів SNA виконували програмні модулі. Один із них становив основу програмного забезпечення процесора телеобробки. Інші модулі працювали на центральному процесоріу складі стандартної операційної системи IBM для мейнфреймів.

    В цей же час у Європі велися активні роботизі створення та стандартизації мереж Х.25. Ці мережі з комутацією пакетів були прив'язані до будь-якої конкретної операційній системі. Після набуття статусу міжнародного стандарту 1974 року протоколи Х.25 стали підтримуватися багатьма операційними системами. З 1980 року компанія IBM включила підтримку протоколів Х.25 в архітектуру SNA та у свої операційні системи.

    Операційні системи міні-комп'ютерів та перші локальні мережі

    До середини 70-х поряд з мейнфреймами широкого поширення набули міні-комп'ютери, такі як PDP-11, Nova, HP. Міні-комп'ютери першими використовували переваги великих інтегральних схем, що дозволили реалізувати досить потужні функції за порівняно невисокої вартості комп'ютера.

    Архітектура міні-комп'ютерів була значно спрощена в порівнянні з мейнфреймами, що відбилося і в їх операційних системах. Багато функцій мультипрограмних розрахованих на багато користувачів ОС мейнфреймів були усічені, враховуючи обмеженість ресурсів міні-комп'ютерів. Операційні системи міні-комп'ютерів часто стали робити спеціалізованими, наприклад, лише для керування в реальному часі (ОС RT-11 для міні-комп'ютерів PDP-11) або тільки для підтримки режиму поділу часу (RSX-11M для тих же комп'ютерів). Ці операційні системи не завжди були розрахованими на багато користувачів, що в багатьох випадках виправдовувалося невисокою вартістю комп'ютерів.

    Важливою віхою історія міні-комп'ютерів і взагалі історії операційних систем стало створення ОС UNIX. Спочатку ця ОС призначалася підтримки режиму поділу часу в міні-комп'ютері PDP-7. З середини 70-х почалося масове використання ОС UNIX. До цього часу програмний код для UNIX був на 90% написаний мовою високого рівня С. Широке поширення ефективних С-компіляторів зробило UNIX унікальною для того часу ОС, що має можливість порівняно легкого перенесення на різні типи комп'ютерів. Оскільки ця ОС поставлялася разом із вихідними кодами, вона стала першою відкритою ОС, яку могли вдосконалювати прості користувачі-ентузіасти. Хоча UNIX була спочатку розроблена для міні-комп'ютерів, гнучкість, елегантність, потужні функціональні можливості та відкритість дозволили їй зайняти міцні позиції у всіх класах комп'ютерів: суперкомп'ютерах, мейнфреймах, міні-комп'ютерах, серверах та робочих станціях на базі RISC-процесорів, персональних комп'ютерів.

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

    Перші локальні мережі будувалися за допомогою нестандартного комунікаційного обладнання, у найпростішому випадку – шляхом прямого з'єднанняпослідовні порти комп'ютерів. Програмне забезпечення також було нестандартним та реалізовувалося у вигляді користувацьких додатків. Перша мережна програма для ОС UNIX - програма UUCP (UNIX-to-UNIX Copy program) -. з'явилася 1976 року і почала поширюватися з версією 7 AT&T UNIX з 1978 року. Ця програма дозволяла копіювати файли з одного комп'ютера на інший у межах локальної мережі через різні апаратні інтерфейси - RS-232, струмову петлю тощо, а крім того, могла працювати через глобальні зв'язки, наприклад модемні.

    Розвиток операційних систем у 80-ті роки

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

    Робочий варіант стека протоколів TCP/IP створили наприкінці 70-х. Цей стек був набір загальних протоколівдля різнорідного обчислювального середовища та призначався для зв'язку експериментальної мережі ARPANET з іншими сателітними мережами. У 1983 році стек протоколів TCP/IP був прийнятий Міністерством оборони США як військовий стандарт. Перехід комп'ютерів мережі ARPANET на стек TCP/IP прискорила його для операційної системи BSD UNIX. З цього часу почалося спільне існування UNIX та протоколів TCP/IP, а майже всі численні версії Unix стали мережевими.

    Використання протоколів TCP/IP в ARPANET додало цій мережі всі основні риси, які відрізняють сучасний Інтернет. У 1983 році мережа ARPANET була розділена на дві частини: MILNET, що підтримує військові відомства США, та нову ARPANET. Для позначення складової мережі ARPANET та MILNET стала використовуватись назва Internet, яка в російській мові з часом (і з легкої рукилокалізаторів Microsoft) перетворилося на Інтернет. Інтернет став відмінним полігоном для випробувань багатьох мережевих операційних систем, що дозволило перевірити в реальних умовахможливості їх взаємодії, ступінь масштабованості, здатність роботи при екстремальному навантаженні, що створюється сотнями та тисячами користувачів. Стек протоколів TCP/IP також чекала завидна доля. Незалежність від виробників, гнучкість та ефективність, доведені успішною роботоюв Інтернеті, а також відкритість та доступність стандартів зробили протоколи TCP/IP не лише головним транспортним механізмом Інтернету, а й основним стеком більшості мережевих операційних систем.

    Все десятиліття було відзначено постійною появою нових, більш досконалих версій ОС UNIX. Серед них були і фірмові версії UNIX: SunOS, HP-UX, Irix, AIX та багато інших, у яких виробники комп'ютерів адаптували код ядра та системних утилітдля своєї апаратури. Різноманітність версій породило проблему їхньої сумісності, яку періодично намагалися вирішити різні організації. В результаті було прийнято стандарти POSIX і XPG, що визначають інтерфейси ОС для додатків, а спеціальний підрозділ компанії AT&T випустив кілька версій UNIX System III та UNIX System V, покликаних консолідувати розробників на рівні коду ядра.

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

    Однак і дружній інтерфейс, і мережеві функції з'явилися в операційних системах персональних комп'ютерів не відразу. Перша версія найбільш популярної операційної системи раннього етапу розвитку персональних комп'ютерів - MS-DOS компанії Microsoft - була позбавлена ​​цих можливостей. Це була однопрограмна однокористувацька ОС з інтерфейсом командного рядка, здатна стартувати з дискети. Основними завданнями для неї були керування файлами, розташованими на гнучких і жорстких дисках UNIX-подібної ієрархічної файлової системи, а також почерговий запуск програм. MS-DOS була захищена від програм користувача, оскільки процесор Intel 8088 не підтримував привілейованого режиму. Розробники перших персональних комп'ютерів вважали, що з індивідуальному використанні комп'ютера та обмежених можливостях апаратури немає сенсу підтримки мультипрограмування, у процесорі були передбачені привілейований режим та інші механізми підтримки мультипрограмних систем.

    Відсутні функції для MS-DOS і подібних до неї ОС компенсувалися зовнішніми програмами, що надавали користувачеві зручний графічний інтерфейс (наприклад, Norton Commander) або засоби тонкого керування дисками (наприклад, PC Tools). Найбільший вплив на розвиток програмного забезпечення для персональних комп'ютерів справило операційне середовище Windows компанії Microsoft, що являло собою надбудову над MS-DOS.

    Мережеві функції також реалізовувалися переважно мережевими оболонками, які працювали поверх ОС. При мережній роботі завжди необхідно підтримувати розрахований на багато користувачів режим, при якому один користувач - інтерактивний, а інші отримують доступ до ресурсів комп'ютера по мережі. У такому разі від операційної системи потрібно хоча б деякий мінімум функціональної підтримки розрахованого на багато користувачів режиму. Історія мережевих засобів MS-DOS розпочалася з версії 3.1. Ця версія MS-DOS додала до файлової системи необхідні засоби блокування файлів та записів, які дозволили більш ніж одному користувачеві мати доступ до файлу. Користуючись цими функціями, мережні оболонки могли забезпечити розподіл файлів між мережними користувачами.

    Разом із випуском версії MS-DOS 3.1 у 1984 році компанія Microsoft також випустила продукт, який називається Microsoft Networks, який зазвичай неформально називають MS-NET. Деякі концепції, закладені в MS-NET, такі як введення в структуру базових мережевих компонентів - редиректора та мережевого сервера, успішно перейшли в пізніші мережеві продукти Microsoft: LAN Manager, Windows for Workgroups, потім у Windows NT.

    Мережеві оболонки для персональних комп'ютерів випускали інші компанії: IBM, Artisoft, Performance Technology та інші.

    Інший шлях вибрала компанія Novell. Вона спочатку зробила ставку на розробку операційної системи з вбудованими мережевими функціями і досягла цього шляху видатних успіхів. Її мережеві операційні системи NetWareна тривалий час стали еталоном продуктивності, надійності та захищеності для локальних мереж.

    Перша мережна операційна система компанії Novell з'явилася на ринку в 1983 і називалася OS-Net. Ця ОС призначалася для мереж, що мали зіркоподібну топологію, центральним елементом яких був спеціалізований комп'ютерна базі мікропроцесора Motorola 68000. Трохи пізніше, коли фірма IBM випустила персональні комп'ютери PC XT, компанія Novell розробила новий продукт- NetWare 86, розрахований на архітектуру мікропроцесорів сімейства Intel 8088.

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

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

    У 1987 році в результаті спільних зусиль Microsoft і IBM з'явилася перша багатозадачна операційна система для персональних комп'ютерів з процесором Intel 80286, що повністю використовує можливості захищеного режиму - OS/2. Ця система була добре продумана. Вона підтримувала витісняючу багатозадачність, віртуальну пам'ять, графічний інтерфейс користувача (не з першої версії) і віртуальну машинудо виконання DOS-додатків. Фактично вона виходила за межі простої багатозадачності з її концепцією розпаралелювання окремих процесів, що отримала назву багатопоточності.

    OS/2 з її розвиненими функціями багатозадачності та файловою системою HPFS з вбудованими засобами розрахованого на багато користувачів захисту виявилася гарною платформою для побудови локальних мереж персональних комп'ютерів. Найбільшого поширення набули мережні оболонки LAN Manager компанії Microsoft та LAN Server компанії IBM розроблені цими компаніями на основі одного базового коду. Ці оболонки поступалися продуктивністю файловому серверу NetWare і споживали більше апаратних ресурсів, але мали важливі переваги - вони дозволяли, по-перше, виконувати на сервері будь-які програми, розроблені для OS/2, MS-DOS і Windows, а по-друге, використовувати комп'ютер, на якому вони працювали, як робоча станція.

    Мережеві розробки компаній Microsoftі IBM призвели до появи NetBIOS - дуже популярного транспортного протоколу та одночасно інтерфейсу прикладного програмуваннядля локальних мереж, що отримав застосування практично у всіх мережевих операційних системах для персональних комп'ютерів. Цей протокол і сьогодні застосовується до створення невеликих локальних мереж.

    Не дуже вдала ринкова доля OS/2 не дозволила системам LAN Manager і LAN Server захопити помітну частку ринку, але принципи роботи цих мережевих систем багато в чому знайшли своє втілення у успішнішій операційній системі 90-х - Microsoft Windows NT, що містить вбудовані мережеві компоненти , Деякі з яких мають приставку LM - від LAN Manager.

    У 80-ті роки були прийняті основні стандарти на комунікаційні технології для локальних мереж: у 1980 році – Ethernet, у 1985 – Token Ring, наприкінці 80-х – FDDI. Це дозволило забезпечити сумісність мережевих операційних систем нижніх рівнях, і навіть стандартизувати інтерфейс ОС з драйверами мережевих адаптерів.

    Для персональних комп'ютерів застосовувалися як спеціально розроблені їм операційні системи, подібні MS-DOS, NetWare і OS/2, а й адаптувалися вже існуючі ОС. Поява процесорів Intel 80286 і особливо 80386 за допомогою мультипрограмування дозволило перенести на платформу персональних комп'ютерів ОС UNIX. Найбільш відомою системою цього типу була версія UNIX компанії Santa Cruz Operation (SCO UNIX).

    Особливості сучасного етапу розвитку операційних систем

    У 90-ті роки майже всі операційні системи, що займають помітне місце на ринку, стали мережевими. Мережеві функції сьогодні вбудовуються в ядро ​​ОС, будучи її невід'ємною частиною. Операційні системи отримали кошти на роботу з усіма основними технологіями локальних (Ethernet, Fast Ethernet, Gigabit Ethernet, Token Ring, FDDI, ATM) та глобальних (Х.25, frame relay, ISDN, ATM) мереж, а також засоби для створення складових мереж (IP, IPX, AppleTalk, RIP, OSPF, NLSP). У операційних системах використовуються засоби мультиплексування кількох стеків протоколів, з допомогою якого комп'ютери можуть підтримувати одночасну мережеву роботу з різнорідними клієнтами і серверами. З'явилися спеціалізовані ОС, призначені виключно для виконання комунікаційних завдань. Наприклад, мережна операційна система IOS компанії Cisco Systems, що працює в маршрутизаторах, організує в мультипрограмному режимі виконання набору програм, кожна з яких реалізує один із комунікаційних протоколів.

    У другій половині 90-х років усі виробники операційних систем різко посилили підтримку засобів роботи з Інтернетом (крім виробників UNIX-систем, у яких ця підтримка завжди була суттєвою). Крім самого стека TCP/IP у комплект поставки почали включати утиліти, що реалізують такі популярні Інтернет-сервіси, як telnet, ftp, DNS і Web. Вплив Інтернету виявилося і в тому, що комп'ютер перетворився з суто обчислювального пристрою на засіб комунікацій з розвиненими обчислювальними можливостями.

    Особлива увага протягом усього останнього десятиліття приділялася корпоративним мережевим операційним системам. Їх подальший розвиток представляє одну з найважливіших завдань і в найближчому майбутньому. Корпоративна операційна система відрізняється здатністю добре і стійко працювати у великих мережах, які характерні для великих підприємств, що мають відділення у десятках міст і, можливо, у різних країнах. Таким мережам органічно властива високий рівень гетерогенності програмних і апаратних засобів, тому корпоративна ОС повинна безпроблемно взаємодіяти з операційними системами різних типів і працювати на різних апаратних платформах. На цей час досить явно визначилася трійка лідерів у класі корпоративних ОС - це Novell NetWare 4.x і 5.0, Microsoft Windows NT 4.0 і Windows 2000, і навіть UNIX-системи різних виробників апаратних платформ.

    Для корпоративної ОС дуже важливо наявність засобів централізованого адміністрування та управління, що дозволяють в єдиній базі даних зберігати облікові записи про десятки тисяч користувачів, комп'ютерів, комунікаційних пристроїв та модулів програмного забезпечення, що є в корпоративній мережі. У сучасних операційних системах кошти централізованого адміністрування зазвичай базуються на єдиній довідковій службі. Першою успішною реалізацією довідкової служби корпоративного масштабу була система StreetTalk Banyan. Наразі найбільше визнання отримала довідкова служба NDS компанії Novell, випущена вперше у 1993 році для першої корпоративної версії NetWare 4.O. Роль централізованої довідкової служби настільки велика, що саме за якістю довідкової служби оцінюють придатність операційної системи до роботи в корпоративному масштабі. Тривала затримка випуску Windows NT 2000 багато в чому була пов'язана зі створенням для цієї ОС масштабованої довідкової служби Active Directory, без якої цьому сімейству ОС важко було претендувати на звання корпоративної ОС.

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

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

    Сучасним операційним системам властива багатоплатформенність, тобто здатність працювати на абсолютно різних типах комп'ютерів. Багато операційні системи мають спеціальні версії для підтримки кластерних архітектур, що забезпечують високу продуктивність та стійкість до відмов. Винятком поки що є ОС NetWare, всі версії якої розроблені для платформи Intel, а реалізації функцій NetWare у вигляді оболонки для інших ОС, наприклад NetWare for AIX, мали успіху.

    В останні роки набула подальшого розвитку довготривала тенденція підвищення зручності роботи людини з комп'ютером. Ефективність роботи стає основним чинником, визначальним ефективність обчислювальної системи загалом. Зусилля людини не повинні витрачатися на налаштування параметрів обчислювального процесу, як це відбувалося у ОС попередніх поколінь. Наприклад, у системах пакетної обробки для мейнфреймів кожен користувач повинен був за допомогою мови керування завданнями визначити велику кількість параметрів, що стосуються організації обчислювальних процесів у комп'ютері. Так, для системи OS/360 мова керування завданнями JCL передбачала можливість визначення користувачем більше 40 параметрів, серед яких були пріоритет завдання, вимоги до основної пам'яті, граничний час виконання завдання, перелік пристроїв введення-виведення та режими їх роботи.

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

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

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

    § Історія ОС налічує приблизно півстоліття. Вона багато в чому визначалася та визначається розвитком елементної бази та обчислювальної апаратури.

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

    § Прообразом сучасних операційних систем з'явилися моніторні системи середини 50-х, які автоматизували дії оператора виконання пакета завдань.

    § У роках перехід до інтегральних мікросхем відкрив шлях до появи наступного покоління комп'ютерів, яскравим представникомяких є IBM/360. У цей період було реалізовано практично всі основні концепції, притаманні сучасним ОС: мультипрограмування, мультипроцесування, багатотермінальний режим, віртуальна пам'ять, файлові системи, розмежування доступу та мережна робота.

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

    § Наприкінці 60-х були розпочаті роботи зі створення глобальної мережі ARPANET, що стала відправною точкою для Інтернету, - глобальної загальнодоступної мережі, яка стала для багатьох мережевих ОС випробувальним полігоном, що дозволило перевірити в реальних умовах можливості їх взаємодії, ступінь масштабованості, здатність роботи при екстремальному навантаженні.

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

    § З середини 70-х років почалося масове використання UNIX, унікальної на той час ОС, яка порівняно легко переносилася різні типи комп'ютерів. Хоча ОС UNIX була спочатку розроблена для міні-комп'ютерів, її гнучкість, елегантність, потужні функціональні можливості та відкритість дозволили їй зайняти міцні позиції у всіх класах комп'ютерів.

    § Наприкінці 70-х років було створено робочий варіант стека протоколів TCP/IP. У 1983 році стек протоколів TCP/IP був стандартизований. Незалежність від виробників, гнучкість та ефективність, доведені успішною роботою в Інтернеті, зробили протоколи TCP/IP не лише головним транспортним механізмом Інтернету, а й основним стеком більшості мережевих ОС.

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

    § У 80-ті роки були прийняті основні стандарти на комунікаційні технології для локальних мереж: у 1980 році – Ethernet, у 1985 – Token Ring, наприкінці 80-х – FDDI. Це дозволило забезпечити сумісність мережевих ОС нижніх рівнях, і навіть стандартизувати інтерфейс ОС з драйверами мережевих адаптерів.

    § До початку 90-х практично всі ОС стали мережевими, здатними підтримувати роботу з різнорідними клієнтами та серверами. З'явилися спеціалізовані мережні ОС, призначені виключно для виконання комунікаційних завдань, наприклад, система IOS компанії Cisco Systems, що працює в маршрутизаторах.

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

    Завдання та вправи

    1. Які події у розвитку технічної бази обчислювальних машин стали віхами історія операційних систем?

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

    3. Чи може комп'ютер працювати без операційної системи?

    4. Як еволюціонувало ставлення до концепції мультипрограмування протягом усієї історії ОС?

    5. Який вплив в розвитку ОС зробив Інтернет?

    6. Чим пояснюється особливе місце ОС UNIX історія операційних систем?

    7. Опишіть історію мережевих операційних систем.

    8. У чому сучасні тенденції розвитку ОС?