Ядро ОС UNIX
Структура ОС UNIX
Сравнения моделей.
Приклад|зразок| реалізації багаторівневої моделі Windows|
До самостійної роботи
Особливості областей використання
Багатозадачні ОС підрозділяються на три типи відповідно до використаного при їхній розробці критеріями ефективності:
- системи пакетної обробки (наприклад, OC EC),
- системи поділу часу (UNIX, VMS),
- системи реального часу (QNX, RT/11).
Системи пакетної обробки призначалися для рішення задач в основному обчислювального характеру, не потребуючого швидкого одержання результатів. Головною метою і критерієм ефективності систем пакетної обробки є максимальна пропускна здатність, тобто рішення максимального числа задач в одиницю часу. Для досягнення цієї мети в системах пакетної обробки використовуються наступна схема функціонування: на початку роботи формується пакет завдань, кожне завдання містить вимога до системних ресурсів; з цього пакета завдань формується мультипрограмна суміш, тобто безліч одночасна виконуваних задач. Для одночасного виконання вибираються задачі, що пред’являють вимоги, що відрізняються, до ресурсів, так, щоб забезпечувалося збалансоване завантаження всіх будов обчислювальної машини; так, наприклад, у мультипрограмній суміші бажано одночасна присутність обчислювальних задач і задач з інтенсивним уведенням-виводом. Таким чином, вибір нового завдання з пакета завдань залежить від внутрішньої ситуації, що складається в системі, тобто вибирається «вигідне» завдання. Отже, у таких ОС неможливо гарантувати виконання того чи іншого завдання протягом визначеного періоду часу. У системах пакетної обробки переключення процесора з виконання однієї задачі на виконання іншої відбувається тільки у випадку, якщо активна задача сама відмовляється від процесора, наприклад, через необхідність виконати операцію введення-виводу. Тому одна задача може надовго зайняти процесор, що унеможливлює виконання інтерактивних задач. Таким чином, взаємодія користувача з обчислювальною машиною, на якій установлена система пакетної обробки, зводиться до того, що він приносить завдання, віддає його диспетчеру-оператору, а наприкінці дня після виконання всього пакета завдань одержує результат. Очевидно, що такий порядок знижує ефективність роботи користувача.
Системи поділу часу покликані виправити основний недолік систем пакетної обробки – ізоляцію користувача-програміста від процесу виконання його задач. Кожному користувачу системи поділу часу надається термінал, з якого він може вести діалог зі своєю програмою. Тому що в системах поділу часу кожній задачі виділяється тільки квант процесорного часу, жодна задача не займає процесор надовго, і час відповіді виявляється прийнятним. Якщо квант обраний досить невеликим, то у всіх користувачів, що одночасно працюють на одній і тій же машині, складається враження, що кожний з них одноосібно використовує машину. Ясно, що системи поділу часу володіють меншою пропускною здатністю, чим системи пакетної обробки, тому що на виконання приймається кожна запущена користувачем задача, а не та, котра «вигідна» системі, і, крім того, маються накладні витрати обчислювальної потужності на більш часте переключення процесора з задачі на задачу. Критерієм ефективності систем поділу часу є не максимальна пропускна здатність, а зручність і ефективність роботи користувача.
Системи реального часу застосовуються для керування різними технічними об’єктами, такими, наприклад, як верстат, супутник, наукова експериментальна чи установка технологічними процесами, такими, як гальванічна лінія, доменний процес і т.п. У всіх цих випадках існує гранично припустимий час, протягом якого повинна бути виконана та чи інша програма, що керує об’єктом, у противному випадку може відбутися аварія: супутник вийде з зони видимості, експериментальні дані, що надходять з датчиків, будуть загублені, товщина гальванічного покриття не буде відповідати нормі. Таким чином, критерієм ефективності для систем реального часу є їхня здатність витримувати заздалегідь задані інтервали часу між запуском програми й одержанням результату (керуючого впливу). Цей час називається часом реакції системи, а відповідне властивість системи – реактивністю. Для цих систем мультипрограмна суміш являє собою фіксований набір заздалегідь розроблених програм, а вибір програми на виконання здійснюється виходячи з поточного стану чи об’єкта відповідно до розкладу планових робіт.
Деякі операційні системи можуть сполучати в собі властивості систем різних типів, наприклад, частина задач може виконуватися в режимі пакетної обробки, а частина – у режимі реального чи часу в режимі поділу часу. У таких випадках режим пакетної обробки часто називають фоновим режимом
Особливості методів побудови
При описі операційної системи часто вказуються особливості її структурної організації й основні концепції, покладені в її основу.
До таких базових концепцій відносяться:
- Способи побудови ядра системи - монолітне чи ядро мікроядерний підхід. Більшість ОС використовує монолітне ядро, що компонується як одна програма, що працює в привілейованому режимі і використовує швидких переходах з однієї процедури на іншу, не потребуючі переключення з привілейованого режиму в користувальницький і навпаки. Альтернативою є побудова ОС на базі мікроядра, що працює також у привілейованому режимі і виконуючого тільки мінімум функцій по керуванню апаратурою, у той час як функції ОС більш високого рівня виконують спеціалізовані компоненти ОС - сервери, що працюють у користувальницькому режимі. При такій побудові ОС працює більш повільно, тому що часто виконуються переходи між привілейованим режимом і користувальницьким, зате система виходить більш гнучкої - її функції можна нарощувати, чи модифікувати звужувати, додаючи, чи модифікуючи крім серверів користувальницького режиму. Крім того, сервери добре захищені друг від друга, як і будь-які користувальницькі процеси.
- Побудова ОС на базі об’єктно-орієнтованого підходу дає можливість використовувати всі його достоїнства, що добре зарекомендували себе на рівні додатків, усередині операційної системи, а саме: акумуляцію вдалих рішень у формі стандартних об'єктів, можливість створення нових об'єктів на базі наявних за допомогою механізму спадкування, гарний захист даних за рахунок їхньої інкапсуляції у внутрішні структури об'єкта, що робить дані недоступними для несанкціонованого використання ззовні, структуризованість системи, що складає з набору добре визначених об'єктів.
- Наявність декількох прикладних середовищ дає можливість у рамках однієї ОС одночасно виконувати додатка, розроблені для декількох ОС. Багато сучасних операційних систем підтримують одночасно прикладні середовища MS-DOS, Windows, UNIX (POSIX), OS/2 чи хоча б деякої підмножини з цього популярного набору. Концепція множинних прикладних середовищ найбільше просто реалізується в ОС на базі мікроядра, над яким працюють різні сервери, частина яких реалізують прикладне середовище тієї чи іншої операційної системи.
- Розподілена організація операційної системи дозволяє спростити роботу користувачів і програмістів у мережних середовищах. У розподіленої ОС реалізовані механізми, що дають можливість користувачу представляти і сприймати мережу у виді традиційного однопроцесорного комп'ютера. Характерними ознаками розподіленої організації ОС є: наявність єдиної довідкової служби поділюваних ресурсів, єдиної служби часу, використання механізму виклику вилучених процедур (RPC) для прозорого розподілу програмних процедур по машинах, багатониткової обробки, що дозволяє распаралелювати обчислення в рамках однієї задачі і виконувати цю задачу відразу на декількох комп'ютерах мережі, а також наявність інших розподілених служб.
Висновок|ув'язнення|
Ми розглянули|розглядували| різні погляди на те, що таке операційна система; вивчили історію розвитку
операційних систем; з'ясували, які функції зазвичай|звично| виконують операційні системи; нарешті|урешті|
зналися на тому, які існують підходи до побудови|шикування| операційних систем. Наступну|таку| лекцію| посвятимо|посвящатимемо| з'ясуванню поняття "процес" і питанням планерування|планування| процесів.
Контрольні запитання:
- Дайте визначення ОС.
- Дайте визначення ядра системи.
- Які функції виконує ядро системи.
- Яка різниця між рівнем ядра і рівнем користувача.
- Назвіть компоненти ОС.
- Які види ОС існують.
- Яким чином завантажується ОС.
- Охарактеризуйте однозадачні та багатозадачні системи.
- Наведіть приклади однозадачних та двозадачних систем
- Охарактеризуйте дно рівневіувальниць та дно рівневіувальницьки системи
- Наведіть приклади дно рівневіувальницьк та дно рівневіувальницьких систем
- Охарактеризуйте та наведіть приклади систем, що витісняють (не витісняють багатозадачність)
- Поясніть такі визначення прийняті до ОС Підтримка многонитковості, багатопроцесорна обробка
- Яким чином можна класифікувати системи багатопроцесорної обробки Поясніть Особливості апаратних платформ
- Дайте характеристику системам пакетної обробки
- Дайте характеристику системам поділу часу
- Дайте характеристику системам реального часу
- Охарактеризуйте особливості методів побудови системи.
- Які моделі ОС ви знаєте.
3. Лекція: Процеси в операційних системах. Стратегії планування процесів
У лекції описується основоположне поняття процесу, розглядаються|розглядують| його достатки|стани|, модель
представлення процесу в операційній системі і операції, які можуть виконуватися над процесса-|
ми операційною системою.
Починаючи|зачинати| з|із| цієї лекції ми знайомитимемося|ознайомлюватимемося| з|із| внутрішнім устроєм і механізмами дії опе-|
раціонних систем, розбираючи одну за іншою їх основні функції окремо і у взаємозв'язку.
Фундаментальним поняттям для вивчення роботи операційних систем є поняття процесів як основних динамічних об'єктів, над якими системи виконують певні дії. Дана лекція присвячена опису таких об'єктів, їх достатків|станів| і властивостей, їх виставі|поданню| в обчислювальних системах, а також операціям, які можуть проводитися над ними.
Мета: Ознайомити студентів з поняттям процесу, управління процесами, методами планування процесів для ОС. Перериваннями ОС.
До самостійної роботи
Розглянемо|розглядуватимемо| наступний|такий| приклад|зразок|. Два студенти запускають програму витягання|видобування| квадратного кореня.
Один хоче обчислити|вичисляти| квадратний корінь з|із| 4, а другий – з|із| 1. З точки зору|з погляду| студентів, запущена одна і та ж програма; з точки зору|з погляду| комп'ютерної системи, їй доводиться займатися двома різними обчислювальними процесами, оскільки|тому що| різні вихідні|початкові| дані приводять|наводять| до різного набору обчислень|підрахунків|.
Отже, на рівні того, що відбувається|походить| усередині|всередині| обчислювальної системи ми не можемо використовувати
термін "програма" в призначеному для користувача сенсі|змісті| слова.
Розглядаючи|розглядувати| системи пакетної обробки, ми ввели|запроваджували| поняття "завдання|задавання|" як сукупність програми
набору команд мови|язика| управління завданнями|задаваннями|, необхідних для її виконання, і вхідних даних.
З точки зору|з погляду| студентів, вони, підставивши різні вихідні|початкові| дані, сформували два різні завдання|задавання|.
Можливо, термін "завдання|задавання|" підійде нам для опису внутрішнього функціонування компьютер-|
ных| систем? Щоб|аби| з'ясувати це, давайте розглянемо|розглядуватимемо| інший приклад|зразок|. Хай|нехай| обидва студенти намагаються|пробують| обчислити |спричиняти| корінь квадратний з|із| 1, тобто|цебто| хай|нехай| вони сформували ідентичні завдання|задавання|, але|та| завантажили їх в
обчислювальну систему із|із| зрушенням|зсувом| за часом. Тоді як одне з виконуваних завдань|задавань| присту-|
пило до друку|печатки| набутого значення і чекає закінчення операції введення-виводу|висновку|, друге лише|тільки| починає|зачинає|
виконуватися. Чи можна говорити про ідентичність завдань|задавань| усередині|всередині| обчислювальної системи в даний
момент? Ні, оскільки|тому що| достаток|стан| процесу їх виконання різний. Отже, і слово "завдання|задавання|" в
призначеному для користувача сенсі|змісті| не може застосовуватися для опису що відбувається|походить| в обчислювальній систе|мі.
Це відбувається|походить| тому, що терміни "програма" і "завдання|задавання|" призначені для опису статичних
неактивних об'єктів. Програма ж в процесі виконання є динамічною, активним об’єк|том. По ходу її роботи комп'ютер обробляє різні команди і перетворить значення змінної||.
Для виконання програми операційна система повинна виділити певну кількість
оперативної пам'яті, закріпити за нею певні пристрої введення-виводу або файли (звідки повинні поступати вхідні дані і куди потрібно доставити отримані результати), тобто зарезервувати певні ресурси із спільного числа ресурсів всієї обчислювальної системи. Їх кількість і конфігурація з часом можуть змінюватися. Для опису таких активних об'єктів усередині комп'ютерної системи замість термінів "програма" і "завдання" ми використовуватимемо новий термін "процес".
Повторюваний термін переривання дії:
Настання тієї чи іншої події сигналізується перериваннями - Interrupt. Джерелами переривань можуть бути як апаратура (HardWare), так і програми (SoftWare).
Апаратура "повідомляє" про переривання асинхронно (у будь-який момент часу) шляхом пересилання в CPU через загальну шину сигналів переривань. Програма "повідомляє" про переривання шляхом виконання операції System Call. Приклади подій, що викликають переривання:
- спроба ділення на 0
- запит на системне обслуговування
- завершення операції введення - висновку
- неправильне звертання до пам'яті
Кожне переривання обробляється відповідно оброблювачем переривань (Interrupt handler), що входять до складу ОС.
Головні функції механізму переривань - це:
Ø розпізнавання чи класифікація переривань
Ø передача керування відповідно оброблювачу переривань
Ø коректне повернення до перерваної програми
Перехід від програми, що переривається, до оброблювача і назад повинний виконуватися як умога швидше. Одним зі швидких методів є використання таблиці, що містить перелік усіх припустимих для комп'ютера переривань і адреси відповідних оброблювачів. Така таблиця називається вектором переривань (Interrupt vector) і зберігається на початку адресного простору основної пам'яті (UNIX/MS DOS).
Для коректного повернення до перерваної програми перед передачею керування оброблювачу переривань, вміст регістрів процесора запам'ятовується або в пам'яті з прямим доступом або в системному стеці - System Stack.
Звичайно забороняються переривання оброблювача переривань. Однак, у деяких ОС переривання забезпечуються пріоритетами, тобто робота оброблювача переривання з більш низьким пріоритетом може бути перервана, якщо відбулося переривання з більш високим пріоритетом.
ІІ. Керування процесами.
Процес - це програмний модуль, виконуваний у CPU. Операційна система контролює наступну діяльність, зв'язану з процесами:
ü створення і видалення процесів
ü планування процесів
ü синхронізація процесів
ü комунікація процесів
ü рішення тупикових ситуацій
1 Поняття Процес. Стану процесу
Не слід змішувати поняття процес і програма. Програма - це план дій, а процес - це сама дія. Поняття процес включає:
v програмний код
v дані
v уміст стека
v вміст адресного й іншого регістрів CPU.
Таким чином, для однієї програми можуть бути створені кілька процесів, у тому випадку, якщо за допомогою однієї програми в комп'ютері виконується кілька незбіжних послідовностей команд. За годину існування процес багаторазово змінює свій стан.
Існують наступні стани процесу:
- новий (new, процес тільки створений)
- виконуємий (running, команди програми виконуються в CPU)
- що очікує (waiting, процес очікує завершення деякої події, найчастіше операції введення - виведення)
- готовий (ready, процес очікує звільнення CPU)
- завершений (terminated, процес завершив свою роботу)
Кожен процес представлений в операційній системі набором даних, які називаються process control block . У process control block процес описується набором значень, параметрів, що характеризують його поточний стан і використовуєму операційну систему для керування проходженням процесу через комп'ютер.
2. Планування процесів. Поняття черги.
Система керування процесами забезпечує проходження процесу через комп'ютер. У залежності від стану процесу йому повинний бути надати той чи інший ресурс. Наприклад, новий процес необхідно розмістити в основній пам'яті, отже, йому необхідно виділити частина адресного простору. Процесу в стані готовий повинно бути надано процесорний час. Виконуваний процес може вимагати обладнання введення - виведення і доступ до файлу.
Розподіл процесів між наявними ресурсами зветься планування процесів.
Одним з методом планування процесів, орієнтованих на ефективне завантаження ресурсів, є метод черг ресурсів. Нові процеси знаходяться у вхідній черзі, часто названою чергою робіт - завдань (job queue).
Вхідна черга розташовується в зовнішній пам'яті, у вхідній черзі процеси очікують звільнення ресурсу - адресного простору основної пам'яті.
Готові до виконання процеси розташовуються в основній пам'яті і зв'язані чергою готових процесів чи ready queue. Процеси в цій черзі очікують звільнення ресурсу процесорний час.
Процес у стані чекання завершення операції введення - виведення знаходиться в одній з черг до обладнання введення - виводу, що зветься devices queue.
При проходженні через комп'ютер процес мігрує між різними чергами під керуванням програми, що називається планувальник. (scheduler) Операційна система, що забезпечує режим мультипрограмування, звичайно має два планувальника - довгостроковий (long term scheduler) і короткостроковий (short term scheduler/CPU scheduler).
Основна відмінність між довгостроковим і короткостроковим планувальниками полягає в частоті запуску, наприклад: короткостроковий планувальник може запускатися кожні 100 мс, довгостроковий - один раз за кілька хвилин.
Довгостроковий планувальник вирішує, який із процесів, що знаходяться у вхідній черзі, повинний бути переведений у чергу готових процесів у випадку звільнення ресурсів пам'яті.
Довгостроковий планувальник вибирає процес із вхідної черги з метою створення неоднорідної мультипрограмної суміші. Це означає, що в черзі готових процесів повинні знаходитися в різній пропорції як процеси, орієнтовані на введення - виведення, так і процеси, орієнтовані на переважну роботу з CPU.
Короткостроковий планувальник вирішує, який із процесів, що знаходяться в черзі готових процесів, повинний бути переданий на виконання в CPU. У деяких операційних системах довгостроковий планувальник може бути відсутнім. Наприклад, у системах поділу часу (time sharing system), кожен новий процес відразу ж міститься в основну пам'ять.
Планування процесу.
Короткостроковий планувальник вибирає процеси з черги готових процесів і передає їх на виконання в CPU. Існують різні алгоритми чи стратегії рішення цієї задачі, що відрізняються відношенням до критеріїв планування.
Критерії планування процесора.
Використовуються наступні критерії, що дозволяють порівнювати алгоритми короткострокових планувальників:
- утилізація CPU (використання) CPU utilization. утилізація CPU теоретично може знаходитися в межах від 0 до 100%. У реальних системах утилізація CPU коливається в межах 40% для легко завантаженого CPU, 90% для важко завантаженого CPU.
- пропускна здатність CPU throughput. Пропускна здатність CPU може вимірятися кількістю процесів, що виконуються в одиницю часу.
- час обороту (turnaround time) для деяких процесів важливим критерієм є повний час виконання, тобто інтервал від моменту появи процесу у вхідній черзі до моменту його завершення. Цей час названий часом обороту і включає час чекання у вхідній черзі, час чекання в черзі готових процесів, час чекання в чергах до устаткування, час виконання в процесорі і час уведення - виводу.
- час чекання (waiting time). під часом чекання розуміється сумарний час перебування процесу в черзі готових процесів.
- час відгуку (response time) для сугубо інтерактивних програм важливим показником є час відгуку чи час, що пройшов від моменту влучення процесу у вхідну чергу до моменту першого звертання до терміналу.
Очевидно, що найпростіша стратегія короткострокового планувальника повинна бути спрямована на максимізацію середніх значень завантаженості і пропускної здатності, часу чекання і часу відгуку.
У ряді випадків використовуються складні критерії, наприклад так називаний мінімаксний критерій, тобто замість простого критерію мінімум середнього часу відгуку використовується наступний - мінімум максимального часу відгуку.
Висновок|ув'язнення|
Поняття процесу характеризує деяку сукупність набору команд, що виконуються, ассоційованих|
з|із| ним ресурсів і теперішнього моменту його виконання, що знаходиться|перебуває| під управлінням операційної|
системи.
У будь-який момент процес повністю|цілком| описується своїм контекстом, що складається з регіст-|
ровох|, системної і призначеної для користувача частин|часток|. У операційній системі процеси представляються визначеною структурою даних – PCB|, що відображає|відбиває| вміст|зміст| регістрового і системного контекстів.
Процеси можуть знаходитися|перебувати| в п'яти основних достатках|станах|: народження, готовність, виконання, чекання|очікування|, закінчив виконання.
З|із| одного режиму в інший|стан| процес переводиться|переказує| операційною системою в резуль|таті| виконання над ним операцій.
Операційна система може виконувати над процесами наступні|слідуючі|
операції: створення|створіння| процесу, завершення процесу, призупинення|припинення| процесу, запуск процесу, блокування|
| процесу, розблокування процесу, зміна пріоритету процесу.
Стратегії планування процеcу
розглядаються|розглядують| питання, пов'язані з різними рівнями планування|планування| процесів в
операційних системах. Описуються основні цілі і критерії планервання|планування|, а також параметри, на
яких воно грунтується. Приведені різні алгоритми планування|планування|.
Всякий|усякий| раз, коли нам доводиться мати справу|річ| з|із| обмеженою кількістю ресурсів і декількома їх
споживачами, будь то фонд|фундація| заробітної плати в трудовому колективі ми вимушені|змушені| займатися розподілом готівкових|наявних| ресурсів між споживачами або, іншими словами, плануванням|плануванням| використання ресурсів. Таке планування|планування| повинне мати чітко поставлені цілі (чого ми хочемо добитися за рахунок розподілу ресурсів) і алгоритми, відповідні цілям і що спираються|обпираються| на параметри споживачів.
Лише|тільки| при правильному виборі критеріїв і алгоритмів можна уникнути таких питань, як: "Чому я отримую|одержую| вдесятеро|в десять разів| менше, ніж мій шеф|шеф-кухар|?" або "А де моє морозиво?". Справжня|дана| лекція присвячена плануванню|плануванню| виконання процесів в мультипрограмних обчислювальних системах або, інакше кажучи, плануванню|плануванню| процесів.
Основні поняття планування процесів
Планування- забезпечення почергового доступу процесів до одного процесора.
Планувальник- частина операційної системи, що відповідає за це.
Алгоритм планування- використовуваний алгоритм для планування.
Ситуації коли необхідне планування:
1. Коли створюється процес
2. Коли процес завершує роботу
3. Коли процес блокується на операції введення/висновку, семафорі, і т.д.
4. При перериванні введення/висновку.
Алгоритм планування без перемикань(непріоритетний) - не вимагає переривання по апаратному таймеру, процес зупиняється тільки коли блокується або завершує роботу..
Алгоритм планування з перемиканнями (пріоритетний) - вимагає переривання по апаратному таймеру, процес працює тільки відведений період часу, після цього він припиняється по таймеру, щоб передати управління планувальнику.
Необхідність алгоритму планування залежить від завдань, для яких використовуватиметься операційна система.
Основні три системи:
1. Системи пакетної обробки - можуть використовувати непріоритетний і пріоритетний алгоритм (наприклад: для розрахункових програм).
2. Інтерактивні системи - можуть використовувати тільки пріоритетний алгоритм, не можна допустити щоб один процес зайняв надовго процесор (наприклад: сервер загального доступу або персональний комп'ютер).
3. Системи реального часу - можуть використовувати непріоритетний і пріоритетний алгоритм (наприклад: система управління автомобілем).
Завдання алгоритмів планування:
1. Для всіх систем
Справедливість - кожному процесу справедливу частку процесорного часу
Контроль за виконанням прийнятої політики
Баланс - підтримка зайнятості всіх частин системи (наприклад: щоб були зайняті процесор і пристрої введення/висновку)
2. Системи пакетної обробки
Пропускна спроможність - кількість завдань в годину
Оборотний час - мінімізація часу на очікування обслуговування і обробку завдань.
Використання процесу - щоб процесор завжди був зайнятий.
3. Інтерактивні системи
Час відгуку - швидка реакція на запити
Відповідність - виконання очікувань користувача (наприклад: користувач не готовий до довгого завантаження системи)
4. Системи реального часу
Закінчення роботи до терміну - запобігання втраті даних
Передбаченість - запобігання деградації якості в мультимедійних системах (наприклад: втрат якості звуку повинно бути менше ніж відео)
Планування в системах пакетної обробки
1 "Перший прийшов - першим обслужений"(FIFO - First In Fist Out)
Процеси ставляться в чергу у міру надходження.
FCFS є найбільш простою стратегією планування процесів і полягає в тім, що процесор передається тому процесу, що раніш всіх інших його запитавши.
Колі процес попадає в чергу готових процесів, process control block приєднується до хвоста черги.
Середній година чекання для стратегії FCFS часто дуже великий і залежіть від порядку надходження процесів у чергу готових процесів.