Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект ос 2013-5.doc
Скачиваний:
0
Добавлен:
21.01.2020
Размер:
207.36 Кб
Скачать

Лекція № 1

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

План

1 Предмет і завдання курсу

2 Короткий нарис історії ОС

3 Класифікація ОС

1 Предмет і завдання курсу

Предметом вивчення в цьому курсі є операційні системи(ОС) сучасних комп'ютерів.

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

  • організації ефективної роботи апаратури комп'ютера;

  • забезпеченню зручного використання ресурсів комп'ютера як застосовними програмами, так і користувачем, працюючим з комп'ютером.

Основною метою курсу є вивчення пристрою і функціонування сучасних ОС. При цьому розглядатимуться два круги питань :

  • основні принципи побудови ОС, найбільш поширені алгоритми виконання різних функцій ОС, типові структури даних, використовувані для забезпечення роботи ОС;

  • практичне втілення цих принципів, алгоритмів, структур в найбільш поширених сучасних ОС.

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

2 Короткий нарис історії ос

Вивчення історії розвитку ОС показує, що усі істотні просування в області архітектури ОС пов'язані з впливом двох основних чинників :

  • прогрес технології, що призводить до швидкого зростання характеристик апаратури ЕОМ і до появи принципово нових типів апаратури;

  • принципово нові ідеї, що виникають у проектувальників.

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

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

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

Передісторія ОС

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

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

Усе це коштувало великих грошей, споживало скажену кількість електроенергії

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

Виникла велика ідея - використати сам комп'ютер для підвищення ефективності роботи з ним же.

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

Програми такого роду називалися зазвичай моніторами(не плутати з монітором як облаштуванням виведення, яке у той час було рідкісною екзотикою!). Монітор приймав команди, що полягають, як правило, з 1-2 букв назви і 1-3 аргументів, заданих 8-ричными або 16-ричными числами. Типовими командами були, наприклад:

  • завантаження даних з перфокарт за вказаною адресою пам'яті;

  • перегляд і коригування(з машинки, що пише) значень у вказаному діапазоні адрес;

  • покрокове виконання програми з видачею результатів кожної команди на машинку, що пише;

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

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

Часом широкого поширення моніторів у світі були 50-і роки минулого століття(у СРСР - 60-і роки). Нині щось подібне можна зустріти на найпримітивніших мікропроцесорних контроллерах.

Пакетні ОС

Історію власне ОС можна розпочати з появи у кінці 50-х років перших систем, організуючих роботу за пакетним принципом.

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

Тепер від програміста вимагалося зібрати пакет перфокарт, що містить його програму, дані до неї, а також перфокарти, що управляють. Ці карти на спеціально розробленій мові управління завданнями(JCL, Job Control Language) пояснювали операційній системі, чиє це завдання, що треба зробити з програмою(наприклад, передати її транслятору з Фортрану), що зробити у разі успішної трансляції(ймовірно, пустити на рішення), що - за наявності помилок(наприклад, перейти до іншої програми), звідки узяти початкові дані(наприклад, з такого-то циліндра магнітного диска). Крім того, там могли бути навіть вказівки на те, скільки метрів паперу можна виділити на роздрук і який максимальний час може зайняти робота програми.

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

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

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

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

Серед найбільш розвинених пакетних ОС з мультипрограмуванням не можна не назвати OS/360, основну ОС знаменитого в 60-70 рр. сімейства ЕОМ IBM 360/370.

ОС з розділенням часу

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

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

Режим розділення часу став величезним полегшенням для програмістів, які знову змогли в деякій мірі відчути себе «хазяями» ЕОМ і отримали можливість запускати програми на трансляцію і відладку хоч кожні 5 хвилин. Це дозволило скоротити терміни розробки і відладки програм.

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

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

Спочатку як апаратна основа систем розділення часу повинні були використовуватися «великі» ЕОМ, які пізніше стало прийнято називати «мейнфреймами»(mainframes). Пізніше, у міру прогресу обчислювальної техніки, це стало по плечу навіть МІНІЕОМ(так називався в ті роки клас комп'ютерів, що займали усього лише один-два невеликих шафки). Слід особливо згадати серію МІНІЕОМ PDP - 11, що мала щонайширше поширення у всьому світі впродовж півтора десятків років.

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

Однозадачні ОС для ПЕВМ

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

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

Найбільш популярній ОС для ранніх восьмирозрядних ПК була система CP/M відомої тоді фірми Digital Research, проте з появою на початку 80-х знаменитої машини IBM PC лідерство було міцно перехоплене системою MS - DOS фірми Microsoft.

Багатозадачні ОС для ПК з графічним інтерфейсом

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

Стала реальною така річ, як багатозадачна ОС для ПК. Слід сказати, що спочатку ідея системи, в якій один користувач запускає одночасно декілька застосувань, більшості фахівців здавалася порожнім піжонством і викликала кепкування: «Чом би не виконати декілька програм по черзі»?. Зараз з таким поглядом смішно навіть сперечатися.

А все ж, як би ви обгрунтували користь багатозадачності для сучасних ОС типу Windows?

На зміну ОС, які виконували текстові команди, що вводяться користувачем з клавіатури, прийшли системи, в яких взаємодія з користувачем заснована на використанні GUI(Graphical User Interface, графічний інтерфейс користувача).

Значна частина ПК працює у складі локальних обчислювальних мереж. Це привело до того, що питання захисту даних користувача знову набули первинного значення.