asyan.org
добавить свой файл
1 2


Міністерство освіти І науки, молоді та спорту України

національний університет “Львівська політехніка”

Кафедра ЕОМ
Реферат

на тему:


«Керування процесами і потоками»

з дисципліни


«Системне програмне забезпечення»

Зміст



  1. Процес та його сутність…………………………………………………………………..3

  2. Поняття потоку та багатопотоковості. ………………………………………………….3

  3. Опис процесів і потоків. …………………………………………………………………4

  4. Стани процесів і потоків………………………………………………………………….6

  5. Створення і завершення процесів і потоків……………………………………………..7

  6. Керування адресним простором під час створення процесів…………………………..9

Висновок…………………………………………………………………………………...10

Список використаної літератури…………………………………………………………11

  1. ^ Процес та його сутність.



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

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

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

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

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

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

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

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

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

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

Виділення цих частин виправдане ще й тим, що в рамках одного адресного

простору може бути кілька паралельно виконуваних послідовностей команд, що

спільно використовують одні й ті ж самі дані.

Для відслідковування та аналізу активності процесів у Windows – системний Task Manager (диспетчер завдань). У ядрі Windows немає такого поняття, як завдання, тому Task Manager насправді є інструментом для керування процесами. Диспетчер завдань Windows відображає список активних процесів.

  1. ^ Поняття потоку та багатопотоковості.


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

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

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

  • стан регістрів;

  • системний стек ядра ОС (kernel stack);

  • стек користувача (user stack), розташований в адресному просторі процесу;

  • блок змінних оточення потоку.

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

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

• стек потоку (ділянка пам'яті, де перебувають локальні змінні потоку й адреси повернення функцій, що викликані у його коді).

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

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

Назвемо проблеми, які можуть бути вирішені за допомогою потоків.


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


2. Для підтримки потоків потрібно менше ресурсів, ніж для підтримки процесів (наприклад, немає необхідності виділяти для потоків адресний простір).


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


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


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


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




следующая страница >>