Первая страница
Наша команда
Контакты
О нас

    Головна сторінка



“Інформаційні управляючі системи та технології” 080402 “Інформаційні технології проектування” Одеса 2010

“Інформаційні управляючі системи та технології” 080402 “Інформаційні технології проектування” Одеса 2010




Сторінка7/24
Дата конвертації10.03.2017
Розмір1.41 Mb.
1   2   3   4   5   6   7   8   9   10   ...   24

Розділ 3 Керування процесами і потоками


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

3.1 Базові поняття процесів і потоків

3.1.1 Процеси і потоки в сучасних ОС


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

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

Програма – це деяка послідовність машинних команд, що зберігається на диску, в разі необхідності завантажується у пам’ять і виконується.

Елеме́нт (лат. elementum - стихія, первинна речовина) - нерозкладний (у даній системі) компонент складних тіл, матеріальних систем, теоретичних побудов; будь-який об'єкт, пов'язаний певними відношеннями з іншими об'єктами в єдиний комплекс.
У програмуванні, команда - це наказ комп'ютерній програмі діяти як деякий інтерпретатор для вирішення задачі. У загальнішому випадку, команда - це зазначення деякому інтерфейсу (наприклад командній оболонці) командного рядка.
Можна сказати, що під час виконання програму представляє процес.

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

Для успішного виконання прогами потрібні певні ресурси. До них належать:


  • ресурси, необхідні для послідовного виконання пограмного коду (передусім, процесорний час);

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

Ці групи ресурсів визначають дві складові частини процесу:

  • послідовність виконуваних команд процесора;

  • набір адрес пам’яті (адресний простір), у якому розташовані ці команди і дані для них.

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

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

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

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

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

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

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

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



Адресний простір процесу не завжди відповідає адресам оперативної пам’яті. Наприклад, у ньому можуть відображатисяфайли або регістри контолерів введення –виведення, тому запис за певною адресою в цьому просторі призведе до запису у файл, або до виконання операції введення-виведення.
Вве́дення у храм Пресвято́ї Ді́ви Марії́ - велике християнське богородичне свято. Святкується 21 листопада за юліанським календарем, 4 грудня - за григоріанським.
Таку технологію називають відображенням у пам’ять (memory mapping).

3.1.2 Моделі процесів і потоків


Максимально можлива кількість процесів (захищених адресних просторів ) і потоків, які в них виконуються, може варіюватися в різних системах.

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

  • У деяких вбудованих системах теж є один адресний простір (один процес), але в ньому дозволене виконання багатьох потоків.
    Вбудо́вана, вбудо́вувана систе́ма (англ. embedded system) - спеціалізована комп'ютерна система або обчислювальний пристрій, призначений для виконання обмеженої кількості функцій, часто, з обмеженнями реального часу.
    У цьому разі можна організовувати паралельні обчислювання, але захист даних не реалізовано.

  • У системах, подібних до традиційних версій UNIX, допускаэться наявнсть багатьох процесів, але в рамках адресного простору процесу виконується тільки один потік. Це традиційна однопотокова модель процесів. Поняття потоку в данній моделі не застосовують, а використовують термін “перемикання між процесами”, “планування процесів”, “послідовність команд процесу” тощо (тут під процесом розуміють єдиний потік).

  • У більшості сучасних ОС (таких, як лінія Windows XP, сучасні версії UNIX) може бути багато процесів, а в адресному просторі кожного процесу – багато потоків. Ці системи підтримують багатопотоковість або реалізують модель потоків. Процес у такій системі називають багатопотоковим процесом.

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

3.1.3 Складові елементи процесів і потоків


До елеметів процесу належать:

  • захищений адресний простір;

  • дані, спільні для всього процесу (ці дані можуть спільно використовувати всі його потоки);

  • інформація про використання ресурсів (відкриті файли, мережні з’єднання);

  • інформація про потоки процесу;

Потік містить такі елементи:

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

  • стек потоку (ділянка пам’яті, де перебувають локальні змінні потоку й адреси повернення функцій, що викликані у його коді);
1   2   3   4   5   6   7   8   9   10   ...   24



  • 3.1 Базові поняття процесів і потоків
  • 3.1.2 Моделі процесів і потоків
  • 3.1.3 Складові елементи процесів і потоків