Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

spz / spz

.pdf
Скачиваний:
33
Добавлен:
23.02.2016
Размер:
5.16 Mб
Скачать

Системне програмне забезпечення. І.Яковлєва

10

“ініціативним”, якщо по сигналу запиту на переривання від нього повинна запускатися деяка задача”]; при настанні запланованого часу запуску програми.

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

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

Із стану виконання процес може вийти по одній із наступних причин:

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

-процес переводиться супервізором операційної системи в стан готовності до виконання в зв’язку з появою більш пріоритетної задачі або в зв’язку із закінченням наданого йому кванту часу;

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

При настанні відповідної події (закінчилась операція вв/вив, звільнився необхідний ресурс і.т.д.) процес деблокується і переходить в стан готовності до виконання.

Таким чином, рушійною силою, яка міняє стан процесів, є події. Один з видів подій – це переривання.

Реалізація виконання послідовного процесу в ОС

Системне програмне забезпечення. І.Яковлєва

11

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

-ідентифікатор процесу (так званий PID – process identeficator);

-тип (або клас) процесу, який визначає для супервізора деякі правила надання ресурсів;

-пріоритет поцесу;

-змінну стану (стан виконання, стан очікування …)

-захищену область пам’яті (або адресу такої зоні), в якій зберігаються поточні значення регістрів процесора, якщо процес перервався не закінчив роботи. Ця інформація називається контекстом задачі;

-інформацію про ресурси, якими процес володіє та/або має право користуватися (вказівники на відкриті файли, інформація про незакінчені операції вводу/виведенню та т.д.);

-місце або його адресу для організації спілкування з іншими процесами;

-параметри часу запуску (тобто момент часу, коли процес повинен активуватися та періодичність цієї процедури);

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

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

В деяких ОС кількість дескрипторів визначається заздалегідь, в інших – виділяється пам’ять під дескриптори по необхідності.

Наприклад, в ОS/2 максимальна кількість дескрипторів задач задається в файлі config.sys, а у Windows NT воно в явному вигляді не задається.

Рядок в файлі config.sys

THREADS=1024

Системне програмне забезпечення. І.Яковлєва

12

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

Для апаратної підтримки операційних систем з дескрипторами задач в процесорах можуть бути реалізовані відповідні механізми. Так в мікропроцесорах Intel 80х86 . починаючи з 80286 є спеціальний регістр TR (task register), який вказує на знаходження TSS (task state segment) сегмент стану задачі.

Як ми згадали раніше, рушійною силою, яка міняє стан процесів, є події. Один з видів подій – це переривання

Процеси в ОС UNIX

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

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

Інакше кажучи, відразу після виконання системного виклику fork основний і породжений процеси є абсолютними близнюками; керування й у тім, і в іншому перебуває в крапці, що безпосередньо випливає за викликом fork. Щоб програма могла розібратися, у якому процесі вона тепер працює - в основна або породженому, функція fork повертає різні значення: 0 у породженому процесі й ціле позитивне число (ідентифікатор породженого процесу) в основному процесі.

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

Системне програмне забезпечення. І.Яковлєва

13

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

У наступному прикладі користувальницька програма, викликувана як команда shell, виконує в окремому процесі стандартну команду shell ls, що видає на екран уміст поточного каталогу файлів:

main() {

if(fork()==0) wait(0); /* батьківський процес */ else execl("ls", "ls", 0); /* породжений процесс */

}

--

1

Події (переривання) - рушійна сила, що змінює стан процесів.

1.Механізм обробки переривань.

2.Функції механізму переривань.

3.Групи переривань.

4.Розподіл переривань по рівнях пріоритету.

5.Дисципліни обслуговування переривань.

6.Обробка переривань за участю супервізорів ОС.

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

Таким чином, переривання — це примусова передача керування від виконуваної програми до системи (а через неї — до відповідної програми обробки переривань), що відбуває при виникненні визначеної події.

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

Механізм переривань реалізується апаратно-програмними засобами. Структури систем переривання (у залежності від апаратної архітектури) можуть бути самими різними, але усі вони мають одну загальну особливість

— переривання неодмінне спричиняє зміну порядку виконання команд процесором.

Механізм обробки переривань незалежно від архітектури обчислювальної системи включає наступні елементи:

1.Установлення факту переривання (прийом сигналу на переривання) і ідентифікація переривання (в операційних системах іноді здійснюється повторно, на кроці 4).

2.Запам'ятовування стану перерваного процесу. Стан процесу визначається насамперед значенням лічильника команд (адресою наступної команди, що, наприклад, в і80х86 визначається регістрами СS і ІР), умістом регістрів процесора і може включати також специфікацію режиму (наприклад, режим користувальницький, чи привілейований) і іншу інформацію.

3.Керування апаратно передається підпрограмі обробки переривання. У найпростішому випадку в лічильник команд заноситься початкова адреса

2

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

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

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

6.Відновлення інформації, що відноситься до перерваного процесу (етап, зворотний кроку 4).

7.Повернення в перервану програму.

Кроки 1-3 реалізуються апаратно, а кроки 4-7 — програмно.

Підпрограма обробки переривань

Переривання

Виконувана

програма

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

Власне тіло програми обробки переривання

Відновлення контексту перерваної раніше програми,

установка попереднього режиму роботи системи переривань

Рис. Обробка переривання

3

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

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

Отже, головні функції механізму переривань:

розпізнавання або класифікація переривань;

передача керування відповідно оброблювачу переривань;

коректне повернення до перерваної програми.

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

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

Зовнішні переривання викликаються асинхронними подіями, що відбуваються поза процесом, що переривається, наприклад:

переривання від таймера;

переривання від зовнішніх пристроїв (переривання по введенню/виведенню);

переривання по порушенню живлення;

переривання з пульта оператора обчислювальної системи;

переривання від іншого процесора чи іншої обчислювальної системи.

4

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

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

при наявності в поле коду операції незадіяної двійкової комбінації;

при діленні на нуль;

при переповненні або зникненні порядку;

при виявленні помилок парності, помилок у роботі різних пристроїв апаратури засобами контролю.

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

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

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

5

 

Засоби контролюпроцесора

Високий

 

пріоритет

 

 

 

 

 

 

 

 

Системний таймер

 

 

 

 

 

 

 

Магнітні диски

 

 

 

 

Зовнішні пристрої

Мережне обладнання

 

 

 

 

 

 

 

Термінали

Низький

 

 

 

 

Програмні переривання

 

пріоритет

 

 

 

 

Рис. Розподіл переривань по рівнях пріоритету

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

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

Програмне керування спеціальними регістрами маски (маскування сигналів переривання) дозволяє реалізувати різні дисципліни обслуговування:

6

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

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

за принципом стека, чи, як іноді говорять, по дисципліні LCFS (1аst соme first served — останнім прийшов — першим обслугований), тобто запити з більш низьким пріоритетом можуть переривати обробку переривання з більш високим пріоритетом. Для цього необхідно не накладати маски ні на один сигнал переривання і не виключати систему переривань.

Слід особливо зазначити, що для правильної реалізації останніх двох дисциплін потрібно забезпечити повне маскування системи переривань при виконанні кроків 1-4 і 6-7. Це необхідно для того, щоб не втратити запит і правильно його обслужити. Багаторівневе переривання повинне відбуватися на етапі обробки переривання, а не на етапі переходу з одного процесу на іншій.

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

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

Соседние файлы в папке spz