Реалізація поняття послідовного процесу в ос (дескриптори задач)

Реалізація поняття послідовного процесу в ос (дескриптори задач)

Головна | Про нас | Зворотній зв'язок

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

1. ідентифікатор процесу PID

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

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

4. змінну стану процесу

6. інформація про ресурсах, якими процес володіє

8. параметри часу запуску (момент і періодичність)

Дескриптори постійно знаходяться в оперативній пам'яті в одному зі списків (черг).

Супервизор переміщує дескриптори з одного списку в інший залежно від стану процесу.

Для стану очікування зазвичай організовується стільки списків, скільки є ресурсів, які можуть викликати стан очікування.

Поняття процес було введено для реалізації ідеї мультипрограммирования.

Але самі процеси можна розбити на ряд завдань, які можуть виконуватися паралельно. Такі підпроцеси називаються потоками thread нитками.

Нить особливо ефективна для виконання розподілених додатків.

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

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

Між потоками немає повного захисту.

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

Дескриптор будується як для потоків, так і для процесів. Відмінність полягає в тому, що дескриптор потоку зберігає тільки контекст завдань, яка припинена, а дескриптор процесу містить додаткові поля, які описують ресурси, виділені цього процесу. Ця інформація зберігається в спеціальному регістрі TSR.

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

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

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

Механізм переривання реалізується апаратно-програмними засобами. У різних архітектурах переривання неодмінно тягне за собою зміну порядку виконання команд процесором.

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

1. встановлення факту переривання (прийом сигналу і ідентифікація переривання)

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

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

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

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

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

1. Розпізнавання або класифікація переривання.

2. Передача управління відповідного обробника переривання

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

2. Від зовнішнього пристрою введення / виводу

3. При порушенні харчування

4. З пульта оператора

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

Внутрішнє переривання пов'язане з роботою процесора, наприклад

2. При наявності в поле коду операції, що не задіяної двійковій комбінації

3. при розподілі на нуль,

4. При переповненні або зникненні порядку

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

Іноді виділяють переривання, звернене до супервізору ОС.

Існує власне програмне переривання, яке відбувається за відповідною командою в програмі.

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

У порядку убування пріоритету:

1. Засіб контролю процесора

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

3. Переривання від зовнішнього пристрою (магнітні диски, мережеве обладнання, термінали)

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

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

Наявність сигналу переривання не обов'язково повинно переривати виконання програм. Для цього створені засоби захисту переривання:

1. Відключення системи переривання повністю

2. Маскування \ заборона окремих сигналів переривання

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

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

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

2. з абсолютними пріоритетами. тобто завжди обслуговується переривання з вищим пріоритетом. На час обробки переривання маскуються переривання нижчого пріоритету.

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

У сучасних ОС причини переривання визначає ОС (супервізор переривань) і виконує дії, необхідні при даному перериванні і в даній ситуації.

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