Зміст
Загальна структура системного програмного забезпечення. 2
Загальна структура операційної системи. 3
Поняття операційного оточення. 4
Діаграма переходу процесу зі стану в стан. Стани процесу. 5
Перетворення, як засіб керування процесами. 5
Призначення операцій призупинення та відновлення процесів. Розширення діаграми переходів процесу зі стану в стан. 8
Переключення контексту як засіб реалізації переривань. 11
Ядро ОС. Склад і основні функції. 12
Асинхронні паралельні процеси. 12
“Взаємовиключення” як спосіб взаємодії процесів. 13
Концепція “семафорів” як засіб керування “взаємовиключенням” 14
Тупики. Причини виникнення. Способи боротьби з тупиками. 14
Групи алгоритмів планування процесів 16
Невитісняючі алгоритми планування процесів. 16
Витісняючі алгоритми планування процесів. 16
Механізм багатониткової обробки процесів із внутрішніми паралелізмом. 17
Призначення підсистеми керування ресурсами ОС. 19
Можливі стратегії керування основною пам’яттю. 19
Зв’язаний розподіл основної пам’яті. Можливі варіанти. 20
Принципи кешування даних. Реалізація запитів до основної пам’яті в системі з кеш-пам’яттю. 23
Концепцiя вiртуальної пам'ятi. 24
Рівні планування роботи процесора. 24
Можливі варіанти видів планування роботи процесора. 25
Планування роботи процесора за допомогою багаторівневих черг із зворотними зв’язками. 26
Призначення підсистеми керування даними ОС. 27
Формати записів інформації 27
Логічний запис це сукупність даних, яка розглядається як одне ціле. 27
Файл. Файлова система. Формати записів файлів. 28
Зараз найбільш відомо: 28
Є дві групи методів доступу: 28
Типові засоби файлової системи. 29
Зв’язаний розподіл зовнішнього адресного простору. 30
Методи незв’язаного простору. 31
Необхідність та мета планування роботи з дисковими запам’ятовуючими пристроями. 34
Способи оптимізації пошуку циліндра дискового запам’ятовуючого пристрою. 38
Оптимізація пошуку даних на дисковому запам’ятовуючому пристрої за часом очікуваних записів. 38
Архітектура сучасної файлової системи (ФС) 39
Основні складові частини та процедура завантаження МS- DOS. 41
Керування основною пам’яттю в MS DOS. 44
Логічна структура адресного простору основної пам’яті комп’ютерів архітектури ІВМ РС. 45
Структура файлів виконання *.соm та *.ехе. 48
Логічна структура дискового запам’ятовуючого пристрою. 49
Структура логічного диска на дисковому запам’ятовуючому пристрої. 52
Структура логічного диску. 52
Призначення та структура таблиці розміщення файлів (FАТ). 53
Файли і директорії. 53
Недоліки взаємодії MS DOS та апаратної частини комп’ютера. 54
Що дає WINDOWS користувачу? 54
Засоби обміну даними в Windows. Технології Clipboard, DDE . 56
Засоби обміну даними в Windows. Технологія ОLЕ. 57
Механізм повідомлень у Windows. 59
Windows XP 62
Загальна структура системного програмного забезпечення.
System Software – означає програми і комплекти програм, які є спільними для всіх, хто використовує технічні засоби комп’ютера, які застосовуються, як для автоматизації, розробки і створення нових програмних систем, так і для організації виконання існуючих програм. З цих позицій СПЗ може бути умовно розділене на такі групи:
Операційні системи – під ОС звичайно розуміють комплекс керуючих та обробляючих програм, які з одного боку виступають інтерфейсом між апаратурою комп’ютера і користувачем з його задачами, а з другого боку призначені для найбільш ефективного використання ресурсів обчислювальної системи, та організації надійних обчислень. Довільний з компонентів прикладного ПЗ обов’язково працює під керуванням ОС. Жодна з компонент ПЗ, за виключенням самої ОС, не має безпосереднього доступу до апаратури. Навіть користувачі взаємодіють із своїми програмами через інтерфейс ОС. Довільні команди перш як попасти в прикладну програму проходять через ОС.
Системи програмування – включають в себе такі компоненти, як транслятори з мов програмування, бібліотеки програм, редактори, компоновщики та відладчики. Зовсім самостійних (відірваних від конкретних ОС) систем програмування не буває. Довільна СП може працювати лише під відповідною ОС, під яку вона була створена. Але СП може давати можливість розробляти ПЗ і під інші ОС. В такому випадку коли програми, що створюються, повинні працювати на іншій апаратній базі, маємо крос СП.
Утиліти – це спеціальні системні програми, за допомогою яких можна, як обслуговувати саму ОС, так і готувати до роботи носії даних, виконувати перекодування даних, виконувати оптимізацію розміщення даних на носії, та виконувати деякі інші роботи пов’язані із обслуговуванням обчислювальних систем. Зрозуміло, що утиліти можуть працювати під відповідною ОС.
Узагальнена структура ПЗ обчислювальної системи може бути представлена в такому вигляді:
СУБД – системи управління базами даних
Загальна структура операційної системи.
Основними функціями ОС є такі:
Сприймання від користувача завдань, або команд у вигляді директив, або у вигляді вказівок від маніпуляторів та їх обробка
Завантаження, запуск, призупинення та зупинка програм
Керування файловими системами та системами управління базами даних
Забезпечення режиму мультипрограмування, тобто виконання двох, або більше програм а одному процесорі
Забезпечення ф-цій по організації та керуванню всіма операціями вводу/виводу
Забезпечення виконання обмежень на час відповіді в режимі реального часу, що є важливим для ОС реального часу
Розподіл пам’яті, як основної так і зовнішньої, і організація віртуальної пам’яті
Планування та диспетчеризація у відповідності із заданими стратегією та дисципліною обслуговування задач
Організація механізмів обміну повідомленнями і даними між програмами, які виконуються, а також захист одних програм від впливу інших програм
Забезпечення роботи систем програмування
Таким чином ОС виконує функції керування обчислювальними процесами в комп’ютерній системі, розділяє ресурси системи між різним обчислювальними процесами і створює програмне середовище в якому виконуються прикладні програми користувача. Таке середовище називається операційним середовищем або операційним оточенням.
Взаємодія користувачів з комп’ютерними системами відбувається через інтерфейс користувача, який підтримується ОС. Надалі приймаємо, що ф-ції ОС реалізуються програмним способом, але деякі з них можуть бути представлені програмно апаратними засобами і вигляді ПЗП (наприклад BIOS).
Операційне оточення складається з деякої множини стандартних сервісних програм, які можуть бути використані в процесі виконання задач і які надають засоби для керування ресурсами обчислювальної системи, виділяючи ці ресурси користувачам по потребах (наприклад керування вв/вив).
Поняття операційного оточення.Операційне оточення разом з реальною машиною (апаратурою) створює розширену машину, яка і використовується під час виконання програм. Дякуючи операційному оточенню, кожна програма, тобто завдання для ОС, виконується ніби на окремій розширеній машині, хоча в дійсності ресурси реальної машини можуть роз приділяться між багатьма користувачами. Операційне оточення може включати декілька інтерфейсів: користувацькі і програмні.
Наприклад в Linux є інтерфейс команд рядка, інтерфейс панельний (типу NC), графічний інтерфейс XWindow з різними менеджерами вікон.
З точки зору процесора комп’ютера, як і всього комп’ютера в цілому, двійкова програма (тобто код), створений для роботи в середовищі Linux, використовує ті самі машинні команди і формати даних, що і програма створена для роботи в Windows. Але в цих двох випадках програма звертається до різних операційних середовищ. Програма створена безпосередньо під Windows не буде виконуватись під Linux. Але якщо в Linux створити повноцінне операційне середовище Windows, тоді Windows програма може бути виконана (ц називається емуляція).
Таким чином операційне середовище – це системне програмне оточення в якому можуть виконуватись програми створені за правилами роботи цього середовища.
Типи операційних систем
Не завжди можна досягнути повної якості у визначення типів ОС, оскільки вони можуть підпадати більш ніж під одну категорію класифікацій. Тому існує декілька підходів до класифікації ОС:
1 підхід: Класифікація за кількістю користувачів, які одночасно обслуговуються ОС.
Однопрграмна ОС – забезпечує роботу одної задачі одного користувача (пр. MS DOS 5.0)
Мультипрограмна ОС – дозволяє одночасно виконувати декілька задач одного користувача (Win 3.11, OS/2)
Багатокористувацькі ОС – одночасно обслуговують багато задач багатьох користувачів (Win 95,….., всі Linux…..)
Серед багатокористувацьких треба виділити багатопроцесорні ОС, які працюють на обчислювальних системах з декількома процесорами, і багатомашинні ОС.
Основна мета мультипрограмування – це підвищення продуктивності обчислювальної системи, за рахунок розподілення її ресурсів між декількома завданнями.
2 підхід: Класифікація за типом доступу, який надається інтерфейсом користувача.
1. Системи такої обробки обробляють потік завдань. Все керування по по читанню завдань і їх виконанню бере на себе ОС. Такі ОС були розповсюджені коли апаратура була дуже дорога, в теперішній час такі ОС втратили свою актуальність.
2. Діалоговий або інтерактивний доступ. Забезпечується для деякої кількості користувачів системами розподілу часу. ОС в цьому випадку використовує директиви користувачів по мірі того, як вони вводяться, намагаючись дати відповідь на кожну команду користувача за найкоротший час. Для обробки зовнішніх сигналів, які надходять з різних здавачів, і для швидкої відповіді на такі сигнали використовуються ОС реального часу. Такі системи працюють на ком’ютерах для яких час є критичним параметром (наприклад, керування літаком). Такі системи повинні забезпечувати гарантований час реакції на зовнішні події.
Але досить часто всі ознак класифікацій реалізуються в одній системі і тому реалізувати такі ОС досить важко. На рівні ф-ції і послуг, які надаються операційним оточенням є багато спільного мій ОС, які на рівні інтерфейсу користувача зовсім різні і навпаки.
Діаграма переходу процесу зі стану в стан. Стани процесу.
Перетворення, як засіб керування процесами.
Керування процесами.
Поняття обчислювальний процес є одним з основних при розгляданні ОС. Процес або задача – це програма під час виконання на процесорі із послідовним виконанням команд. Сам процесор розглядається в двох аспектах:
Він є носієм даних.
Він виконує операції пов’язані з обробкою даних.
Процесом може бути виконання утиліти, виконання прикладної програми, транслятор деякої вихідної програми. При чому коли транслюється одна програма – це один процес, а коли інша – інший процес, хоча працює один і той самий транслятор.
Розглянемо комп’ютер з одним центральним процесом, але всі наступні питання справедливі і для багатопроцесорних систем:
Процес приймає ряд дискретних станів. Зміну станів процесу можуть викликати різні події. Процес знаходиться в стані виконання, якщо в біжучий момент йому надається центральний процесор. Процес знаходиться в стані готовності, якщо він міг би одразу використовувати центральний процесор, який знаходиться в його розпорядженні. Процес знаходиться в стані заблокованості, якщо він очікує на деяку подію; приклад: завершення операції вводу-виводу для того, щоб отримати можливість продовжити виконання. Це основні стани процесу.
В однопроцесорному комп’ютері в кожен конкретний момент часу може викликатися один процес, але декілька процесів можуть знаходитись в стані готовності, а деякі бути заблоковані. Тому створюють списки: список процесів готових до виконання: 2 список або черга заблокованих процесів. Перший список або черга впорядкований за пріоритетом таким чином наступний процес який отримує в своє розпорядження центральний процесор буде першим цього списку. Другий список не впорядкований, не передбачається ніякого пріоритетного порядку розблокування процесорів, тобто їх переводу в стан готовності. Розблокування відбувається в тому порядку, в якому відбуваються події, які очікуються заблокованими процесами. ОС як правило процес з’являє при запуску довільної програми. Коли процес створено, він займає місце в кінці списку готових до виконання процесів. Під час функціонування ОС такий процес поступово просувається до початку списку в відповідності з тим, як завершиться виконання попередніх процесів. Коли процес буде першим у списку готових до виконання і коли звільниться центральний процесор, то центральний процесор буде цьому процесу і в той момент відбувається зміна стану процесу. Вибір процесу до виконання називається пуском. Це виконання за допомогою програми ОС, яка називається диспетчер. В мультипрограмних системах для того, щоб запобігти випадковому або навмисному захвату ресурсів комп’ютера одним довільним процесом ОС встановлює в спеціальному апаратному таймері переривань деяке значення, яке визначає часовий інтервал або квант часу на протязі якого біжучому процесу користувача дозволяється утримувати центральний процесор в своєму розпорядженні. Після закінчення часу таймер виробить сигнал переривань за яким керувати буде передане ОС. Після цього ОС переведе процес, який перед цим виконувався в стані готовності, а перший процес із списку готовий переведе в стан виконання.
Якщо процес, який виконувався ще до закінчення кванту часу згенерує операцією вводу-виводу він тим самим сам звільнить центральний процесор, тобто себе сам заблокує на час завершення операції вводу-виводу.
Системи з трьома активними станами процесів можлива ще одна зміна станів після завершення операції вводу-виводу. Процес перейде із заблокованого стану в стан готовності. Таким чином маємо чотири можливі зміни стану процесу. Єдина зміна станів, яка викликається самим процесом це блокування інші при зміні викликів об’єктами, які є зовнішніми по відношенню до біжучого процесу.
Пасивний стан – це програма, яка не виконується.
Процес із пасивного стану може перейти в стан готовності в таких випадках:
За командою користувача. Це має місце в таких інтерактивних або діалогових ОС, де програма може мати статус задачі, а не бути файлом виконання і тільки на час виконання вона може отримувати статус задачі, тобто процесу.
При виборі планувальника з черги процесу.
За викликом із інших задач. Один процес може створювати, ініціювати, призупинити і зупинити інший процес.
За перериванням від зовнішнього пристрою. Сигнал при виконання деякої події може записувати відповідну задачу
При надходженні запланованого часу програм із стану виконання процес може вийти з таких причин:
процес завершується. При цьому він передає керування ОС і повідомляє про своє завершення. В результаті процес переходить в пасивний стан або знищується. Знищується не сама програма, а саме активний процес, який відповідає виконанню деякої програми. В пасивний стан також може бути переведений за командою користувача.
процес переводиться ОС в стан готовності у зв’язку виникнення більш пріоритетної задачі або через завершення виділення кванту часу.
процес блокується або через запит операції вводу-виводу або через те, що йому неможливо надати ресурс на який виник запит, або за командою користувача призупинку процесу. З початком відповідної дії процес буде деблоковано і переведено в стан готовності до виконання. Таким чином силою, яка міняє стани процесу це події і один з видів подій це - переривання.
Блок керування процесом.
Для того, щоб ОС могла керувати процесуми, вона повинна володіти всією необхідною інформацією про процеси. Для цього для кожного процесу створюється спеціальна інформаційна структура, яка називається блок керування процесом (PCB) або дескриптор процесу або описувач задачі. В загальному випадку PCB вміщує таку інформацію:
Ідентифікатор процесу (PID).
Тип або клас процесу, який визначає для ОС деякі правила надання ресурсів.
Пріоритет процесу в відповідності з яким ОС надає ресурси в рамках. В рамках одного класу у процесі обслуговуються більш пріоритетні процеси.
Зміна стану, яка визначає в якому стані знаходиться процес (готовність, виконання, блокування).
Адреса захищеної області пам’яті, в якій зберігаються біжучі значення регістрів процесора, якщо процес призупиняється або переривається не завершивши роботу. Ця інформація називається контекст процесу або контекст задачі.
Інформація про ресурси, якими володіє процес або має право використовувати.
Адреса місця в основній пам’яті для організації спілкування з іншими процесами.
Параметри часу запису. Це момент часу, коли процес повинен активізовуватись, а також вказується періодичність цієї процедури.
Для дисрезидентних задач, тобто таких, які постійно знаходяться на зовнішній пам’яті і завантажуються в основну пам’ять тільки на час виконання, зберігається адреса задачі на диску в її вихідному стані. PCB як правило постійно розташований в ОП з метою прискорення роботи ОС, яка організовує їх в чергу і відображає зміну стану процесу шляхом переміщення відповідного PCB з одного стану в інший. Для кожного стану ОС веде відповідний список процесів, які знаходяться в цьому стані таким чином PCB це об’єкт, який визначає процес для ОС.
Операції над процесами.
При керуванні процесуми ОС повинна мати можливість виконувати певні операції над процесом, а саме:
Створення процесу.
Знищення процесу.
Відновлення процесу.
Зміну пріоритету процесу.
Блокування процесу.
Розблокування процесу.
Вибір процесу або пуск.
При створенні процесу відбувається:
Присвоєння процесу ім’я.
Включення всього імені в список імен процесів, які відомі системі.
Визначення початкового пріоритету процесу.
Формування блоку PCB.
Виділення процесу початкових ресурсів.
Процес може викликати новий процес. В такому випадку перший процес це батьківський процес, а знову створений – це згенерований активний процес. При такому підході створюється ієрархічна структура процесів, в якій у згенерованого процесу є тільки один батьківський процес, а у кожного батьківського може бути багато згенерованих.
Знищення процесу.
Знищення процесу – вилучення процесу із системи. Ресурси, які були у розпорядженні процесу повертаються в систему, ім’я процесу в системних списках та таблицях стираються. Блок РСВ знищується.
Призупинення та відновлення процесу.
Призначення операцій призупинення та відновлення процесів. Розширення діаграми переходів процесу зі стану в стан.
Призупинення – важлива операція, яка реалізується в багатьох різних системах по різному. Призупинений процес не може продовжувати своє виконання до того моменту, доки його не активізує довільний інший процес. Дуже часто ОС використовує призупинення для короткочасного виключення певних процесів в періоди пікового навантаження на систему.
У випадку довгострокового призупинення процесу його ресурси повинні бути вивільнені.
Рішення про необхідність вивільнення конкретних ресурсів в значній мірі залежить від природи цього ресурсу. Основна пам’ять звільнюється негайно, в той час як зовнішній запам’ятовуючий пристрій у випадку короткострокового призупинення може залишатись за проц. Призупинення та відновлення відіграють важливу роль з декількох причин:
Якщо система працює не надійно, є ознаки, що вона може відмовити, то біжучі процеси можна буде призупинити для того, щоб знову їх активізувати після виправлення помилки.
Користувач у якого окремі проміжні результати роботи викликають сумніви може призупинити процес, а не вилучити його зовсім доки не стане зрозуміло правильно чи неправильно працює цей процес.
Деякі процеси можна призупиняти в періоди пікового навантаження на систему з тим, щоб потім їх відновити.
З врахуванням призупинення та відновлення діаграма станів процесу буде мати такий вигляд:
Виникає питання: для чого переводити заблокований процес в стан призупинення?
Справа в тому, що завершення операції вводу-виводу, або подія, яка очікується може ніколи не відбутись, або можуть затриматись на невизначений час, тому перед розробниками ОС виникає вибір:
1.Виконувати призупинення заблокованого процесу.
2.Передбачити механізм, який дозволив би переводити процес із стану готовності в стан призупинення, коли завершиться операція вводу-виводу, або наступить інша очікувана подія.
Оскільки призупинення є операцією найвищого пріоритету, її треба виконувати негайно.
Обробка переривань.
В комп’ютері переривання – це подія, при якій міняється нормальна послідовність команд, яка виконується процесором.
Нормальна послідовність команд вважається така, яка визначається програмою, тобто процесом.
Переривання представляє собою механізм, який дозволяє координувати паралельне функціонування окремих пристроїв комп’ютерної системи та реагувати на особливі стани, які виникають при роботі процесора.
Переривання – примусова передача керування від програми, яка виконується до ОС, а через неї до відповідної програми обробки переривань.
Переривання відбуваються при виникненні відповідної події. Механізм переривань реалізований апаратно-програмними засобами.
Структура системи переривань в залежності від архітектури компютера системи може бути різною, але всі вони реалізують одну ідею: переривання викликає зміну порядку виконання команд процесора.
Перехід від перерваної програми до обробленої програми і назад повинен виконуватись як можна швидше. Один з методів реалізації цього є використання таблиці, яка вміщує перелік всіх допустимих для комп’ютера переривань та адреси відповідних обробників переривань. Для коректного повернення до переривань програма перед передачею управління обробнику переривань вмістиме регістрів процесора запам’ятовується або в пам’яті з прямим доступом, або в системному стеку. Таким чином, якщо відбулось переривання, то:
Керування передається ОС.
ОС запам’ятовує стан перерваного процесу, як правило ця інформація запам’ятовується в блоці PCB для перерваного процесу.
ОС аналізує тип переривань і передає керування відповідній програмі обробки цього переривання.
Ініціатором переривання зокрема може бути процес, який виконується або воно може бути викликано деякою подією, пов’язаною або навіть непов’язаною з цим процесом.
Переривання, які виникають при роботі комп’ютерної системи можна розділити на такі основні групи:
Зовнішні або асинхронні переривання.
Вони викликаються асинхронними подіями, які відбуваються поза процесом, який переривається. Це такі:
Переривання від таймера, тобто від системного годинника.
Переривання від зовнішніх пристроїв.
Переривання від збоїв живлення.
Переривання з пульта оператора системи або від користувача.
Переривання від іншого процесора або від іншої комп’ютерної системи.
Внутрішні переривання.
Викликаються подіями, які пов’язані з роботою процесора і є синхронними з операціями процесора. Це такі:
при неправильній адресації, коли в адресній частині команди, яка виконується вказано заборонену або неіснуючу адресу, вказано звертання до неіснуючого сегмента пам’яті або сторінки, при організації механізму віртуальної пам’яті;
2. при наявності в полі коду операції коду неіснуючої команди;
3. при діленні на нуль;
при переповненні або попаданні порядку в числах з рухомою комою;
при виявленні помилок парності, а також помилок в роботі різних пристроїв в апаратурі комп’ютерними засобами контролю.
3. Переривання за звертанням до супервізора.
В деяких комп’ютерах існують привілейовані команди, які може використовувати тільки ОС, а не програмний користувач. Відповідно в апаратурі передбачені різні режими роботи. При спробі виконати команду заборонену в даному режимі відбувається внутрішнє переривання і керування передається супервізору.
4. Програмні переривання.
Ці переривання відбуваються за відповідних командних переривань. За такими командами процесор виконує практично ті самі дії, що і при звичайних внутрішніх перериваннях. Оскільки сигнали переривань виникають в довільні моменти часу, то на момент переривання може існувати декілька таких сигналів, які можуть бути оброблені тільки послідовно. Щоб обробляти їх в деякому логічному порядку їм присвоюють пріоритети. За рівнями пріоритетів переривання розподіляють таким чином:
Сигнали з більш високим пріоритетом обробляють в першу чергу, обробка інших сигналів відкладається.
Переключення контексту як засіб реалізації переривань.
Переключення контексту.
Для обробки кожного з видів переривань в складі ОС передбачені програми, які називаються оброблювачі переривань (IH, Interrupt Handler).
Коли відбувається переривання, ОС запам’ятовує стан перерваного процесу і передає керування відповідному оброблювачу. Це робиться в спосіб, який називається переключення контексту. При реалізації цього способу використовується слово стану програми (PSW, Program Status Word). Ці слова керують порядком виконання команд і вміщують інформацію відносно стану процесу. Існує три типи PSW:
Нові PSW
Біжучі PSW
Старі PSW
1
Виклик супервізора
1
2
Ввід/вивід
2
3
Внутрішні переривання
В
А
3
4
Контроль програми
4
5
Таймер
5
6
Рестарт
6
Адреса наступної команди, яка має виконуватись вміщується в біжучому PSW, в якому вказані також типи переривань дозволені і заборонені в біжучий момент.
Центральний процесор реагує тільки на дозволені переривання, обробка заборонених переривань або затримок в деяких випадках ігнорується. Процесору не можна заборонити реагувати на переривання за викликом супервізора, за рестартом, а також на деякі види програмних переривань. В одно процесорній машині є тільки одне біжуче PSW, але n нових PSW, і n старих PSW. Нове PSW для біжучого типу переривань містить постійну адресу, за якою резидентно розміщується оброблювач переривань цього типу.
Коли відбувається переривання, якщо воно не заборонено для процесора відбувається автоматично, яке виконується апаратно переключення PSW таким чином:
біжуче PSW робиться старим PSW для переривань цього типу;
нове PSW для переривань цього типу робиться біжучим PSW.
Після такого заміщення біжуче PSW буде вміщувати адресу відповідного оброблювача переривань, який починає відробляти біжуче переривання. Коли обробка переривань завершиться, центральний процесор починає обслуговувати або той процес, який виконується в момент переривань, або готовий процес з найвищим пріоритетом.
Ядро ОС. Склад і основні функції.
Ядро операційної системи
Всі операції пов’язані з процесами виконуються під керуванням тої частини ОС, яка називається ядром. Ядро – це невеличка частина ОС, але це компонент який найбільш інтенсивно використовується. З цієї причини ядро звичайно розміщується в основній пам’яті, в той час як інші частини ОС знаходяться на зовнішніх запам’ятовувальних і при необхідності викликаються в ОП такий процес називається Swapping. Одна з найважливіших функцій ядра це обробка переривань. У великих багатоабонентських в процесор надходить постійний потік переривань, коли ядро обробляє біжуче переривання воно забороняє всі інші і дозволяє їх знову тільки після обробки текучого переривання. При постійному потоці переривань може утворитись така ситуація, що ядро буде блокувати переривання на протязі значного часу, тобто не буде мати можливості реагувати на переривання. Тому ядро звичайно розробляють таким чином, щоб воно виконувало мінімально можливу попередню обробку кожного переривання, а потім передавало це переривання на подальшу обробку відповідно обробнику переривань, після початку роботи якого ядро отримало Можливість дозволити обробку інших переривань. Таким чином реакція суттєво зростає.
Основні функції ядра. Ядро як правило вміщує програми тобто компоненти ядра для реалізації таких функцій:
Обробка переривань
Створення і знищення процесів
Переключення стану процесу
Диспетчеризація
Призупинення та активізація процесів
Організація взаємодії між процесами
Маніпуляція блоками PCB
Підтримка операцій вводу/виводу
Підтримка розподілу і перерозподілу пам’яті
Підтримка роботи файлової системи
Підтримка роботи виклику та повернення для звертання для процедури
Підтримка функцій обліку в роботі КС
Функції які реалізує ядро називаються примітивними – найпростіші функції в ОС.
В ієрархічних системних структурах ядро розташується безпосередньо над базовим апаратурного комп’ютера. А на вищих рівнях розташовані процеси системи та процеси користувача. Практика показала що такі системи піддаються відладці, модифікації та тестуванню.
Асинхронні паралельні процеси.
Асинхронно паралельні процеси
Процеси називаються паралельними якщо вони існують одночасно. Розвиток технології створення апаратури сприяють зменшенню габаритів апаратури , розвитку багатопроцесорних систем і як кінцевий результат реалізації максимального паралелізму на всіх рівнях роботи КС. Паралельні процеси можуть бути повністю незалежними або взаємодіючими. Взаємодіючі процеси можуть бути конкуруючими або такими що сумісно виконують спільну роботу. Як правило маємо справу з паралельними процесами яким необхідно тільки час від часу синхронізуватись та взаємодіяти. Такі паралельні процеси називаються асинхронними.
Ця програма друкує за чергою всі файли, імена яких послідовно в порядку надходження записують в загально-доступний спеціальний файл замовлень інших програм. Спеціальна змінна NEXT, яка також доступна усім процесам-клієнтам вміщує номер першої вільної для запису імені файла позиції у файлі замовлень. Процеси клієнти читають адресу з NEXT і записують у відповідну позицію файла замовлень своє ім’я і збільшують значення NEXT і записують у відповідну позицію файла замовлень своє ім’я і збільшують значення NEXT на 1. припустімо, що в деякий момент процес вирішив роздрукувати свій файл. Для цього він прочитав значення NEXT. Процес запам’ятав це значення але розмістити туди ім’я файла не встиг оскільки його виконання було перервано, наприклад через закінчення кванту часу. Черговий процес S який теж хоче роздрукувати свій файл так само прочитав значення NEXT розмістив в позицію 4 ім’я свого файлу(S2) і збільшує NEXT на 1(S3). Коли в черговий раз керування буде передано процесу R то він продовжить своє виконання у повній відповідності із значенням біжучої вільної позиції у файлі замовлень, яке було отримане під час попередньої ітерації і запише ім’я свого файла також в позицію 4 поверх імені файла, яке записав процес S. В результаті процес S ніколи не побачить свій файл роздрукованим таким чином, має місце проблема синхронізації процесів.
Складність проблеми синхронізації полягає в тому що синхронізації виконують регулярно. Це визначається взаємними швидкостями процесів і моментами їх переривання. Така відладка взаємодіючих процесів є складною задачею. Ситуація подібна тій коли два або більше процесів обробляють дані тобто такі що дозволяються і що кінцевий результат залежить від співвідношень швидкостей процесів називають перегонами або гонками. Вони мають місце не тільки в програмному але й апаратному рівні.
“Взаємовиключення” як спосіб взаємодії процесів.
Взаємовиключення – спосіб взаємодії між процесами, при якому під час звертання одного процесу до даних що розділяються всім іншим процесам це заборонено. Якщо процес звертається до змінних які розділяються то цей процес знаходить на своїй критичній ділянці або критичній області. Для всіх інших процесів, які розділяють дані можливість входу в критичні ділянки повинна бути виключена. Він не повинен блокуватись на критичній ділянці. Критичні ділянки потрібно програмувати найбіль ретельно, щоб виключити наприклад можливість зациклювання. Таким чином, маємо наступну задачу. Ми хочемо реалізувати взаємовиключення з виконаним таким чином 4-х обмежень:
задача повинна бути розв’язана програмним способом на комп’ютері який не має спеціальних команд взаємовиключення, причому:
а). кожна команда виконується як операція яка не може бути поділена
б). при одночасній спробі декількох процесорів звернутись до того самого елемента даних спрацьовує апаратна схема захисного блокування пам’яті. Будується черга яка дозволяє виконуватись тільки одне звертання.
не повинно бути ніяких припущень щодо відносних швидкостей виконання асинхронних паралельних процесів
процеси які знаходяться поза своїми критичними ділянками не можуть заважати заходити у їх власні користувацькі ділянки
не повинно бути безумовного відкидання моменту входу процесів в іх критичні ділянки
Концепція “семафорів” як засіб керування “взаємовиключенням”
Семафори
Всі найважливіші поніття які мають відношення до взаємовиключення були об’єднані в концепції семафорів. Семафор – це захищена змінна значення якої можна читати та міняти тільки за допомогою операцій Р, V також операцій ініціалізації двійкові семафори можуть приймати значення 0 та 1. семафори з рахуванням можуть приймати невід’ємні цілі значення. Операція Р-типу семафори S:
Узагальнений зміст примітиву Р(S) полягає у перевірці біжучого значення семафора S і якщо він не менше 0 то виконується перехід до наступної за даним примітивом операції, процес змінюється на деякий час з виконання і переходить в стан пасивного очікування. V(S) пов’язана із збільшенням значення семафора на 1 і переводом одного або декілька процесів в стан готовності.
Операції P та V виконуються ОС у відповідь на запит виданий деяким процесом і який вміщує ім’я семафора. Для роботи з семафорами треба мати операцію ініціалізації семафора. Семафори можна використовувати для реалізації механізму синхронізації процесів шляхом блокування розблокування. Один процес блокує себе виконуючи операцію Р з погчатковим значенням S=0 для того щоб очікувати на прихід деякої події. Інишй процес виясняє що подія яка очікуватиме відбулась і відновлює заблокований процес за допомогою операції V. Семафори з рахуванням осбливо корисні у випадку коли деякий ресурс виділяється з множини ідентичних ресурсів кожна Р-операція показує що ресурс виділяється деякому процесу а V-операція що ресурс повертає в загальну множину. Операції над семафорами можна реалізувати з використанням режиму активного очікування, але це може призвести до втрати ефективності, щоб цього уникнути подібні операції потрібно реалізовувати в ядрах.
Асинхронні паралельні процеси
Тупики. Причини виникнення. Способи боротьби з тупиками.
Тупики (дедлока, клінча):
В багатопрограмній системі процес знаходиться в стані тупика, дедлока або клінча якщо він очікує на деяку подію, яка ніколи не відбудется. Системна тупикова ситуація – це коли один або декілька процесів виявляються в стані тупика. Одна з основних функцій ОС це розподіл ресурсів, коли ресурси розподіляються між багатьма користувачами кожному з яких надається право виключного керування виділеними йому конкретними ресурсами можливе виникнення тупиків, які дадуть процесам деяких користувачів коли-небудь дійти до завершення. Розглянемо таку ситуацію:
Нехай після того, як А захопив принтер, тобто встановив блокуючу змінну в семафорі він був перерваний керування отримав процес в який спочатку захопив диск але при виконанні наступної команди був заблокований оскільки принтер захоплений процесом А і процес В став в чергу за цим ресурсом, керування знову отримує процес а, який у відповідності зі своєю програмою хоче захопити диск. Але диск захоплений процесом В і процес а блокується. Маємо ситуацію тупика. В такому стані процеси А і В можуть знаходитись безмежно довго. Можливий інший розвиток взаємодії цих процесів:
в такому випадку не виникає тупика, виникає лише черга на диску.
В цих 2-ох прикладах процес А і
процес В розділяють ресурси
тобто спільно використовують.
Якщо б мало місце незалежне
використання ресурсу кожним процесом
то така діаграма виглядає наступним чином:
Типові ситуації треба відрізняти від звичайних, хоча ті і інші виникають при сумісному використанні ресурсів зовні виглядають схоже. Процес призупиняється і очікує звільнення ресурсу. Але черга нормативне явище однаково високого коефіцієнту використання ресурсу. Графічно тупикові ситуації можна представити таким чином:
Для виникнення тупика необхідні такі умови:
умова взаємо виключення – процеси вимагають надання їм права монопольного керування ресурсами які їм виділяють
умова очікування ресурсу – процеси утримують за собою ресурси які вже виділені їм, очікуючи в той же час виділенню нових ресурсів
умова неперерозподілюваності – ресурси неможливо відібрати у процесів які їх утримують, доки ці ресурси не будуть використані для завершення роботи
умова кільцевого очікування – існує кільцевий ланцюжок процесів в якому кожний процес утримує за собою один або декілька ресурсів, які потрібні наступному процесу ланцюжка.
Якщо хоча б одна з умо не виконується, тупик не виникає. Стратегія боротьби з тупиками полягає в томк щоб порушити хоча б одну умову. В системах із спулінгом можливе виникнення тупиків коли виділена область буферної пам'яті заповнюється коли процес завершує свою роботу.
Групи алгоритмів планування процесів
Невитісняючі алгоритми планування процесів.
Витісняючі алгоритми планування процесів.
Алгоритми планування процесів
Планування включає в себе розв8язок наступних задач:
вибір момента часу для зміни процеса який виконується
вибір процеса на виконання з черги нових
переключення контекстів старого і нового процесів
Задачі 1 і 2 розв'язуються програмними засобами, а 3 в значній мірі розв'язується апаратно. Існує багато алгоритмів клонування процесів, які по різному розв'язуються ці три задачі. Найчастіше зустрічаються такі дві групи алгоритмів:
алгоритми побудовані на принципі квантування
алгоритми побудовані на принципі пріоритетів
В першому випадку зміна активного процесу відбувається якщо:
процес закінчився
виникла помилка
процес перейшов в стан очікування
закінчився квант процесорного часу який був відведений деякому процесу
В другому випадку використовується поняття пріоритету. Пріоритет – це число яке характеризує ступінь привілейованості процесу при використанні ресурсів комп'ютера, зокрема процесорного часу. Чим вищий пріоритет тим вищі привілеї. Чим вищі привілеї тим менше часу він буде проводити в чергах. Пріоритети можуть призначатись ОС або адміністратором за якимись критеріями. Він може залишатись фіксованим на протязі всього життя процеса або мінятись в часі. В останньому випадку пріоритети називають динамічними. Вибирається процес який має найбільший пріоритет інакше розв'язується проблема визначення моменту зміни процесу.
В багатьох ОС алгоритми планування побудовані з використанням як квантування так і пріоритетів. Наприклад в основі планування лежить квантування але величина кванта або порядок вибору процесів з черги готових визначається пріоритетами процесів.
Витісняючи невитісняючі алгоритми планування:
Існує два основні типи процедур планування процесів:
витісняючи preemptire
невитісняючі non – preemptire
Невитісняюча багатозадачність – це спосіб планування процесів при якому активний процес виконується до того часу доки він сам за власною ініціативою керування планувальнику ОС для того щоб той вибрав з черги інший готовий до виконання процес
Витісняюча багатозадачність – це такий спосіб планування при якому рішення про переключення процесора з виконання одного процеса на інший процес приймається планувальником ОС а не активним процесом.
Типи багатозадачності – це більш широкі поняття ніж типи пріоритетності. Пріоритети задач можуть як використовуватись так і невикористовуватисьяк при витісняючій так і при невитісняючій багатозадачності. Основна відмінність між витісняючи ми і невитісняючими плануваннями – це ступінь нейтралізації механізма планування задачі. У витісняючому випадку механізм планування задач повністю зосереджено в ОС. В цьому випадку ОС виконує такі функції:
визначає момент коли знімається з виконання остання задача
запам'ятовується контекст
вибирається з черги готових задач наступна
ця задача запускається на виконання шляхом завантаження її контексту
В невитісняючому випадку механізм планування розміщається між ОС і прикладними програмами. Прикладна програма отримає керування від ОС. Сама визначить момент завершення чергової ітерації і передає керування ОС за допомогою системного виклику. ОС формує черги задач і вибирає із врахуванням пріоритетів. Такий механізм досить складний як для користувача так і для розробників. Програміст повинен забезпечити дружнє відношення до інших програм які виконуються одночасно, тобто досить часто їм віддавати керування.
мал.1. Витісняюча багатозадачність
мал.2. Невитісняюча (кооперативна) багатозадачність
Витісняючу багатозадачність назива...