ідентифікація процесу

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

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

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

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

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

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

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

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

У деяких ОС кількість описателей визначається жорстко і заздалегідь (на етапі генерації варіанту операційної системи або в файлі конфігурації, який використовується при завантаженні ОС), в інших - у міру необхідності система може виділяти ділянки пам'яті під нові описатели. Наприклад, в OS / 2 максимально можливу кількість описателей завдань визначається в файлі конфігурації CONFIG.SYS. Слід зазначити, що в даному файлі вказується кількість не процесів, а саме завдань, і під завданням в даному випадку розуміється як процес, так і потік цього ж процесу. Наприклад, рядок в файлі CONFIG.SYS

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

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

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

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

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

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

не мають своїх власних ресурсів;

можуть користуватися тими ж файлами, віртуальними пристроями та іншими ресурсами, що і даний процес.

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

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

Отже, до переваг багатопоточності в програмуванні можна віднести наступне:

менші щодо процесу тимчасові витрати на створення потоку;

підвищення продуктивності процесу за рахунок розпаралелювання процесорних обчислень і операцій введення / виводу.

Схожі статті