Конспект лекцій з дисципліни «Операційні системи»



Сторінка1/17
Дата конвертації27.04.2016
Розмір1.81 Mb.
  1   2   3   4   5   6   7   8   9   ...   17
Державний вищий навчальний заклад

«Українська академія банківської справи

Національного банку України»

Кафедра економічної кібернетики


ЗАТВЕРДЖУЮ

Завідувач кафедри

канд. техн. наук, доцент ________________К.Г.Гриценко

31.08.2012


КОНСПЕКТ ЛЕКЦІЙ

з дисципліни «Операційні системи»

освітньо-професійної програми підготовки за напрямами

6.030502 «Економічна кібернетика»

галузі знань 0305 «Економіка та підприємництво»
для денної форми навчання

Укладач доцент _________________В.С.Домбровський



31.08.2012

Розглянуто та схвалено на засіданні кафедри, протокол №1 від 31.08.2012

Суми - 2012

ЛЕКЦІЯ 1. ВВЕДЕННЯ В ОПЕРАЦІЙНІ СИСТЕМИ. КЛАСИФІКАЦІЯ ОС


Анотація
Поняття операційної системи. Еволюція розвитку операційних систем. Функції операційних систем і підходи до побудови операційних систем. Класифікація операційних систем. Особливості алгоритмів керування ресурсами. Особливості апаратних платформ. Особливості областей використання. Особливості методів побудови операційних систем.

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


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

По-друге, обчислювальна система складається з програмного забезпечення. Все програмне забезпечення прийнято ділити на дві частини: прикладне і системне. До прикладного програмного забезпечення, як правило, відносяться різноманітні банківські та інші бізнес-програми, ігри, текстові процесори і т. п. Під системним програмним забезпеченням зазвичай розуміють програми, що сприяють функціонуванню і розробці прикладних програм. Треба сказати, що поділ на прикладне та системне програмне забезпечення є почасти умовною і залежить від того, хто здійснює такий розподіл. Так, звичайний користувач, недосвідчений в програмуванні, може вважати Microsoft Word системною програмою, а, з точки зору програміста, це - додаток. Компілятор мови Сі для звичайного програміста - системна програма, а для системного - прикладна. Незважаючи на цю нечітку грань, дану ситуацію можна відобразити у вигляді послідовності шарів (див. рис. 1.1), виділивши окремо найбільш загальну частину системного програмного забезпечення - операційну систему.



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

Рис. 1.1 - Шари програмного забезпечення комп'ютерної системи
1.2 Визначення операційної системи


  1. Операційна система як віртуальна машина

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

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



  1. Операційна система як менеджер ресурсів

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

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

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

  1. Операційна система як постійно функціонуюче ядро

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

1. Перший період (1945-1955 рр..). Лампові машини. Операційних систем немає. Перші кроки в області розробки електронних обчислювальних машин були зроблені в кінці Другої світової війни. У середині 40-х були створені перші лампові обчислювальні пристрої і з'явився принцип програми, що зберігається в пам'яті машини (John Von Neumann, червень 1945 р.). У той час одна і та ж група людей брала участь і в проектуванні, і в експлуатації, і в програмуванні обчислювальної машини. Це була радше науково-дослідна робота в галузі обчислювальної техніки, а не регулярне використання комп'ютерів як інструмент вирішення будь-яких практичних завдань з інших прикладних областей. Програмування здійснювалося виключно на машинній мові. Про операційних системах не було й мови, всі завдання організації обчислювального процесу вирішувалися вручну кожним програмістом з пульта керування. За пультом міг перебувати тільки один користувач. Програма завантажувалася в пам'ять машини в кращому випадку з колоди перфокарт, а зазвичай за допомогою панелі перемикачів.

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

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

2. Другий період (1955 р. – початок 60-х). Комп'ютери на основі транзисторів. Пакетні операційні системи. З середини 50-х років почався наступний період в еволюції обчислювальної техніки, пов'язаний з появою нової технічної бази - напівпровідникових елементів. Застосування транзисторів замість часто перегорають електронних ламп призвело до підвищення надійності комп'ютерів. Тепер машини можуть безперервно працювати достатньо довго, щоб на них можна було покласти виконання практично важливих задач. Знижується споживання обчислювальними машинами електроенергії, удосконалюються системи охолодження. Розміри комп'ютерів зменшилися. Знизилася вартість експлуатації та обслуговування обчислювальної техніки. Почалося використання ЕОМ комерційними фірмами. Одночасно спостерігається бурхливий розвиток алгоритмічних мов (LISP, COBOL, ALGOL-60, PL-1 і т.д.). З'являються перші справжні компілятори, редактори зв'язків, бібліотеки математичних і службових підпрограм. Спрощується процес програмування. Пропадає необхідність звалювати на одних і тих же людей весь процес розробки і використання комп'ютерів. Саме в цей період відбувається поділ персоналу на програмістів і операторів, фахівців з експлуатації та розробників обчислювальних машин.

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

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

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

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

Підвищенню ефективності використання процесорного часу заважає низька швидкість роботи механічних пристроїв введення-виведення (швидкий считувач перфокарт міг обробити 1200 перфокарт в хвилину, принтери друкували до 600 рядків у хвилину). Замість безпосереднього читання пакета завдань з перфокарт в пам'ять починають використовувати його попередній запис, спочатку на магнітну стрічку, а потім і на диск. Коли в процесі виконання завдання потрібно введення даних, вони читаються з диска. Точно так само вихідна інформація спочатку копіюється в системний буфер і записується на стрічку або диск, а друкується тільки після завершення завдання. Спочатку дійсні операції вводу-виводу здійснювалися в режимі off-line, тобто з використанням інших, більш простих, що окремо стоять комп'ютерів. Надалі вони починають виконуватися на тому ж комп'ютері, який виробляє обчислення, тобто в режимі on-line. Такий прийом отримує назву spooling (скорочення від Simultaneous Peripheral Operation On Line) або підкачки-відкачки даних. Введення техніки підкачки-відкачки в пакетні системи дозволило поєднати реальні операції введення-виведення одного завдання з виконанням іншого завдання, але зажадало розробки апарату переривань для сповіщення процесора про закінчення цих операцій.

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

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

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

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

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

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

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

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



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

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

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

1. Планування завдань і використання процесора.

2. Забезпечення програм засобами комунікації та синхронізації.

3. Управління пам'яттю.

4. Управління файловою системою.

5. Управління введенням-виводом.

6. Забезпечення безпеки

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


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

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

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

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

Файл - призначений для зберігання інформації на зовнішніх носіях. Зазвичай під файлом розуміють іменовану частину простору на носії інформації.

Файлова система (file system) - абстрактна модель файлів, незалежних від пристроїв.


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

Класифікація операційних систем за особливостями внутрішньої архітектури:

1. Монолітна архітектура

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

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

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

2. Багаторівнева архітектура (Layered systems)

Можна розбити всю обчислювальну систему на ряд більш дрібних рівнів з добре визначеними зв'язками між ними, так щоб об'єкти рівня N могли викликати тільки об'єкти рівня N-1. Нижнім рівнем в таких системах зазвичай є hardware, верхнім рівнем - інтерфейс користувача. Чим нижче рівень, тим більш привілейовані команди і дії може виконувати модуль, що знаходиться на цьому рівні. Вперше такий підхід був застосований при створенні системи THE (Technishe Hogeschool Eindhoven) Дейкстра (Dijkstra) в 1968 р. Ця система мала такі рівні:

  1   2   3   4   5   6   7   8   9   ...   17


База даних захищена авторським правом ©shag.com.ua 2016
звернутися до адміністрації

    Головна сторінка