Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lek_3_.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
257.54 Кб
Скачать

19

Лекція_3

Декомпозиція програм на множину задач

  • Визначення процесу;

  • стан процесу;

  • створення процесу;

  • ресурси процесу;

  • поділ програми на задачі.

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

1. Визначення процесу

Процес (process) – це деяка частина (одиниця) роботи, що створюється операційною системою. Важливо зауважити, що процеси і програми – необо­в’я­зково еквівалентні поняття. Програма може складатися з декількох процесів. В деяких випадках процес може бути не пов'язаний з конкретною програмою. Процеси – це артефакти операційної системи, а програми – це артефакти розро­б­ника. Такі операційні системи, як UNIX/Linux дозволяє управляти сотнями або навіть тисячами процесів, які завантажуються. Щоб деяку частину роботи мож­на було назвати процесом, вона повинна мати адресний простір, що призначає­ться операційною системою, і ідентифікатор, або ідентифікаційний номер (id процесу). Процес повинен володіти певним статусом і мати свій елемент в таб­лиці процесів. У відповідності зі стандартом POSIX він повинен містити один або декілька потоків керування, які виконуються в межах його адресного прос­тору, і використовувати системні ресурси, необхідні для цих потоків. Процес складається з множини інструкцій які виконуються, і розміщені в межах адрес­ного простору даного процесу. Адресний простір процесу розподіляється між інструкціями, даними, які належать процесу, і стеками, які забезпечують вик­лик функцій і зберігання локальних змінних.

1.1. Два види процесів

При виконанні процесу операційна система призначає йому деякий про­цесор. Процес виконує свої інструкції на протязі деякого періоду часу. Плану­ва­льник операційної системи переключається з коду одного процесу на код ін­шого, надаючи кожному процесу шанс виконати свої інструкції. Розрізняють користувацькі процеси і системні процеси. Процеси, які виконують системний код, називаються системними і застосовуються до системи в цілому. Вони зай­маються виконанням наступних службових задач, як розподіл пам’яті, обмін сторінками між внутрішнім допоміжним запам’ятовуючим пристроєм, конт­роль пристроїв та інше. Вони також виконують деякі задачі задорученням користувацьких процесів, наприклад, виконують запити на ввід-вивід даних, виділяють пам'ять та інше. Користувацькі процеси виконують власний код і інколи звертаються до системних функцій. Виконуючи власний код, користува­цький процес перебуває в користувацькому режимі (user mode). В користувань­кому режимі процес не може виконувати привілейовані машинні команди. Ви­кликаючи системні функції (наприклад read (), write () або open ()) користувань­кий процес виконує інструкції операційної системи. При цьому користувацький процес утримує процесор до тих пір, доки не буде виконаний системний вик­лик. Для виконання системного виклику процесор звертається до ядра операці­йної системи. В цей час про користувацький процес говорять, що він перебуває в привілейованому режимі, або режимі ядра (kernel mode), і не може бути вива­нтаженим ніяким іншим користувацьким процесом.

1.2. Блок керування процесами

Процеси мають характеристики, які використовуються для ідентифікації і визначення їх поведінки. Ядро підтримує необхідні структури даних і надає системні функції, які дають можливість користувачу отримати доступ до цієї інформації. Деякі дані зберігаються у блоках управління процесами (process control block – PCB), або БУП. Дані, які зберігаються в БУП-блоках, описують процес з точки зору потреб операційної системи. За допомогою цієї інформації операційна система може керувати кожним процесом. Коли операційна система переключається з одного процесу на інший, вона зберігає біжучий стан проце­су, який виконується і його контекст в області зберігання БУП-блоку, щоб нале­жним чином відновити виконання цього процесу в наступний раз, коли йому знову буде виділений центральний процесор (ЦП). БУП-блок зчитується і онов­люється різними модулями операційної системи. Модулі відповідають конт­роль продуктивності операційної системи, планування, розподілення ресурсів і доступ до механізму обробки переривань іабо модифікують БУП-блок. БУП-блок містить наступну інформацію:

  • біжучий стан і пріоритет процесу;

  • ідентифікатор процесу, а також ідентифікатори батьківського і дочір­нього процесів;

  • вказівники на виділені ресурси;

  • вказівники на область пам’яті процесу;

  • вказівники на батьківський та дочірні процеси;

  • процесор, занятий процесом;

  • регістри управління і станів;

  • стекові вказівники.

Серед данх, які містяться в БУП-блоці, є такі, що відповідають за керування процесом, тобто відображають його біжучий стан і пріоритети, вка­зують на БУП-блоки батьківського і дочірнього процесів, а також виділені ре­су­рси і пам'ять. Крім того, цей блок містить інформацію, пов’язану з плануван­ня, привілеями процесів, прапорцями, повідомленнями і сигналами, якими об­мінюються процеси (маємо на увазі між процесорною взаємодією - іnterprocess communication, або ІРС). За допомогою інформації, яка зв’язана з інформацією управління процесами, операційна система може координувати програми які виконуються паралельно. Стекові вказівники і вміст регістрів користувача, уп­равління і стану містить інформацію, зв’язану зі станом процесора. При вико­нанні процесу відповідна інформація розміщується в регістрах ЦП. При пере­ми­канні операційної системи з одного процесу на інший вся інформація з цих регістрів зберігається. Коли процес знову отримує ЦП в тимчасове користу­ва­ння, раніше збережена інформація може бути відновлена. Є ще один вид інфо­р­мації, який відповідає за ідентифікацію процесу. Маємо на увазі ідентифікатор процесу (id), або PID, і ідентифікатор батьківського процесу (PPID). Ці іденти­фікаційні номери (котрі подано додатнім цілим значенням) унікальні для кож­ного процесу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]