Реферат Курсовая Конспект
Визначення та контекстні вимоги потоку - раздел Философия, Лекція 6 Розбиття програм на множину потоків Під Потоком Розуміємо Частину Коду Програми, Що Виконується В Unix- Або Linux...
|
Під потоком розуміємо частину коду програми, що виконується в UNIX- або Linux-процесі, яка може бути регламентована певним чином. Затрати обчислювальних ресурсів, пов’язаних з створенням потоку, його підтримкою та керуванням, в операційної системи значно менші у порівнянні з аналогічними затратами для процесу, оскільки об’єм інформації окремого потоку значно менше, ніж у процесу. Кожен процес має основний, або первинний, потік. Під основним потоком процесу розуміємо програмний потік керування або потік виконання. Процес може мати декілька потоків виконання і, відповідно, стільки ж потоків управління. Кожен потік, має власну послідовність інструкцій, виконується незалежно від інших, а всі вони – паралельно один одному. Процес з декількома потоками, називається багатопоточним. Багатопоточний процес, що складається з декількох потоків, подано на рис. 1.
Всі потоки одного процесу існують в одному і тому ж адресному просторі. Всі ресурси, що належать процесу, розділяються між потоками. Потоки не володіють ніякими ресурсами. Ресурси, якими володіє процес, спільно використовуються всіма потоками даного процесу. Потоки поділяють дескриптори файлів і файлові вказівники, але кожен потік має власний програмний вказівник, набір регістрів стан та стек. Всі стеки потоків знаходяться в стековому розділі свого процесу. Розділ даних процесу спільно використовується потоками процесу. Потік може зчитувати (і записувати) інформацію з області пам’яті свого процесу. Коли основний потік записує дані в пам'ять, то довільні дочірні процеси можуть отримати до них доступ. Потоки можуть створювати інші потоки в межах того ж процесу. Всі потоки в одному процесі вважаються рівноправними. Потоки також можуть призупинити, відновити або завершити інші потоки в своєму процесі.
Потоки – це частини програми, що виконуються, і які сперечаються за використання процесора з потоками того ж самого або інших процесів. В багатопроцесорній системі потоки одного процесу можуть виконуватися одночасно на різних процесорах. Але потоки конкретного процесу виконуються тільки на процесорі, який призначений цьому процесу. Якщо, наприклад, процесори 1, 2 і 3 призначені процесу А, а процес А має три потоки, то довільний з них може бути призначений довільному процесу. В середовищі з одним процесором потоки конкурують за його використання. Паралельність досягається за рахунок перемикання контекстів. Контекст перемикається, якщо операційна система підтримує багатозадачність при наявності одного процесора. Багатозадачність дозволяє на одному процесорі одночасно виконуватися декільком задачам. Кожна задача виконується на протязі виділеного інтервалу часу. Після закінчення заданого інтервалу часу або після настання деякої події біжуча задача знімається з процесора, а йому призначається інша задача. Коли потоки виконуються паралельно в одному процесі, то про такий процес говорять, що він – багатопоточний. Кожен потік виконує свою підзадачу таким чином, що підзадачі процесу можуть виконуватися незалежно від основного потоку управління процесу. При багатозадачності потоки можуть конкурувати за використання одного процесора або призначатися іншим процесорам. Але в любому випадку перемикання контексту між потоками одного і того ж процесу вимагає менше ресурсів, ніж перемикання контексту між потоками різних процесів. Процес використовує багато системних ресурсів для відслідковування відповідної інформації, а на керування цією інформацією при перемиканні контексту між процесами необхідно значно більше часу. Більша частина інформації, що міститься в контексті процесу, описує адресний простір процесу і ресурси, якими він володіє. Переключаючись між потоками, визначеними в різних адресних просторах, контекст переключається і між процесами. Оскільки потоки в межах одного процесу не мають власного адресного простору (або ресурсів), то операційній системі приходиться відслідковувати менший об’єм інформації. Контекст потоку складається тільки з ідентифікаційного номера (id), стеку, набір регістрів та пріоритету. В регістрах міститься програмний вказівник і вказівник стеку. Текст (програмний код) потоку міститься в текстовому розділі відповідного процесу. Тому перемикання контексту між потоками одного процесу займе менше часу і потребує менший об’єм системних ресурсів.
1.1. Порівняння потоків та процесів
У потоків та процесів є багато спільного. Вони мають ідентифікаційний номер (id), стан, набір регістрів, пріоритети та прив’язку до певної стратегії планування. Подібно процесам, потоки мають атрибути, які описують їх для операційної системи. Ця інформація міститься в інформаційному влові потоку, подібно інформаційного блоку процесу. Потоки та дочірні процеси поділяють ресурси батьківського процесу. Ресурси, відкриті батьківським процесом (в його основному потоці), миттєво стають доступними всім потокам та дочірнім процесам. При цьому ніякої додаткової ініціалізації або підготовки не потрібно. Потоки та дочірні процеси незалежні від батьківського (творця) та конкурують за використання процесора. Творець процесу або потоку керує своїм потомком, тобто він може відмінити, призупинити або відновити його виконання або змінити його пріоритет. Потік або процес може змінити свої атрибути і створити нові ресурси, але не може отримати доступ до ресурсів, що належать іншим процесам. Однак між потоками та процесами є багато відмінностей.
Відмінності між потоками та процесами. Основна відмінність між потоками та процесами полягає в тому, що кожен процес має власний адресний простір, а потоки – ні. Якщо процес створює множину потоків, то всі вони будуть міститися в його адресному просторі. Тому потоки легко поділяють загальні ресурси, і просто забезпечують взаємодію між собою. Дочірні процеси мають власні адресні простори і копії розділів даних. Тому , коли процес-нащадок змінює свої змінні або дані, це не впливає на дані батьківського процесу. Якщо необхідно, щоб батьківських та дочірній процеси спільно використовували дані, необхідно створити загальну область пам’яті. Для передачі даних між батьком та нащадком використовують такі механізми міжпроцесорної взаємодії, як канали та FIFO-черги. Потоки одного процесу можуть передавати інформацію і з’єднуватися один з одним без посередньо читанням та записом спільних даних, які доступні батьківському процесу.
Потоки, що керують іншими потоками. Якщо процеси можуть керувати іншими процесами, коли між ними встановлено відносини виду ²батько-нащадок², потоки одного процесу вважаються рівноправними і знаходяться на одному рівні, незалежно від того, хто кого створив. Довільний потік, що має доступ до ідентифікаційного номера (id) деякого іншого потоку, може відмінити, призупинити, відновити виконання цього потоку або змінити його пріоритет. Відміна основного потоку викличе завершення всіх потоків процесу, тобто ліквідації процесу. Довільні зміни, внесені в основний потік, можуть впливати на всі потоки процесу. При зміні пріоритету процеси всі його потоки, які успадкували цей пріоритет, повинні також змінити свої пріоритети. Подібності та відмінності між потоками та процесами подано в табл. 1.
Таблиця 1. | Подібності та відмінності між потоками та процесами | |
Подібність | Відмінність | |
- Обоє мають ідентифікаційний номер (id), стан, набір регістрів, пріоритет та прив’язку до певної стратегії планування | - Потоки поділяють адресний простір процесу, який їх створив; процеси мають свій адресний простір | |
- І потік, і процес мають атрибути, які описують їх особливості для операційної системи | - Потоки мають прямий доступ до розділу даних свого процесу; процеси мають власну копію розділу даних батьківського процесу | |
- Як потік, так і процес мають інформаційні блоки | - Потоки можуть напряму взаємодіяти з іншими потоками свого процесу; процеси повинні використовувати спеціальний механізм міжпроцесорної взаємодії з ²братніми² процесами | |
- Обидва поділяють ресурси з батьківським процесом | ||
- Обидва функціонують незалежно від батьківського процесу | - Потоки майже не вимагають системних затрат; на підтримку процесу необхідні значні затрати системних ресурсів | |
- Їх творець може керувати потоком або процесом | - Нові потоки створюються легко; нові процеси вимагають дублювання батьківського процесу | |
- І потік, і процес можуть змінювати свої атрибути | - Потоки в значній мірі керують потоками того ж процесу; процеси керують тільки дочірніми процесами | |
- Обидва можуть створювати нові ресурси | - Зміни, що вносяться в основний потік (відміна, зміна пріоритету та інше), можуть впливати на поведінку інших потоків процесу; зміни, які вносяться в батьківський процес, не впливають на дочірні процеси | |
- Як потік, так і процес не мають доступу до ресурсів іншого процесу | ||
1.2. Переваги використання потоків
При керуванні під задачами додатку використання потоків має певні переваги.
· Для перемикання контексту необхідно менше системних ресурсів.
· Досягається більш висока продуктивність додатку.
· Для забезпечення взаємодії між задачами не потрібно спеціального механізму.
· Програма має більш просту структуру.
Перемикання контексту. При організації процесу для виконання Доручених на нього функцій бути достатньо одного основного потоку. Якщо ж процес має множину паралельних підзадач, то їх асинхронне виконання можна реалізувати за допомогою декількох потоків, на перемикання контексту яких затрати системних ресурсів будуть незначними. При обмеженому доступі до процесора або при наявності в системі тільки одного процесора паралельне виконання процесів потребує суттєвих затрат у зв’язку з необхідністю суттєвих затрат на перемикання контексту. В деяких ситуаціях контекст процесів перемикається тільки тоді, коли процесору послідовно призначаються потоки із різних процесів. Під системними затратами розуміємо не тільки системні ресурси, але і час, необхідний для перемикання контексту. Але якщо система містить достатню кількість процесорів, то перемикання контексту не є проблемою.
Рис. 3. Схема процесу, що містить два потоки
1.5. Атрибути потоку
Атрибути процесу містять інформацію, яка описує процес для операційної системи. Операційна система використовує цю інформацію для керування процесами, а також для того, щоб відрізняти один процес від іншого. Процес спільно зі своїми потоками використовує все, включаючи ресурси і змінні середовища. Розділи даних, розділ програмного коду і всі ресурси пов’язані з процесом, а не з потоками. Все, що потрібно для функціонування потоку, визначається і надається процесом. А потоки відрізняються один від одного ідентифікаційним номером (id), колекцією регістрів, які визначають стан потоку, його пріоритетом і стеком. Власне ці атрибути формують унікальність кожного потоку. Як і при використанні процесів, інформація про потоки зберігається в структурах даних і повертається функціям, що підтримуються операційною системою. Наприклад, частина інформації про потік міститься в структурі, що називається інформаційним блоком потоку, який створюється разом з потоком.
Ідентифікаційний номер (id) потоку – це унікальне значення, яке ідентифікує кожен потік під час його існування в процесі. Пріоритет потоку визначає, яким потокам надається привілейований доступ до процесора у виділений час. Під станом потоку розуміють умови, в яких він перебуває в довільний момент часу. Колекція регістрів для потоку містить програмний лічильник і вказівник стеку. Програмний лічильник містить адресу інструкцій, яку потік повинен виконувати, а вказівник стеку посилається на вершину стеку потоку.
Бібліотека потоку POSIX визначає об’єкт атрибутів потоку, що інкапсулює властивості потоку, до яких його творець може отримати доступ та модифікувати їх. Об’єкт атрибутів потоку визначає наступні компоненти:
· область видимості;
· розмір стеку;
· адресу стеку;
· пріоритет;
· стан;
· стратегії планування і параметри.
Об’єкт атрибутів потоку може бути пов'язаний з одним або декількома потоками. При використанні цього об’єкту поведінка потоку або групи потоків визначається профілем. Всі потоки, які використовують об’єкт атрибутів, набувають всі властивості, визначені цим об’єктом. На рис. 3 подано атрибути, пов’язані з кожним потоком. Як видно, обидва потоки (А і В) поділяють об’єкт атрибутів, але вони підтримують свої окремі ідентифікаційні номери і колекції регістрів. Після того як об’єкт атрибутів створено та ініційовано, його можна використовувати в довільних звертаннях до функцій створення потоків. Отже, можемо створити групу потоків, які будуть мати ²малий стек і низький пріоритет² або ²великий стек, високий пріоритет і стан відособлення². Відособлений (detached) потік – це потік, який не синхронізований з іншими потоками в процесі. Інакше кажучи, не існує потоків, які б очікували до тих пір, доки не завершиться відособлений потік. Отже, якщо ж такий потік існує, то його ресурси (а власне id) миттєво приймається для повторного використання. Для встановлення та зчитування значень цих атрибутів передбачені спеціальні методи. Після створення потоку його атрибути неможна змінити до тип пір, доки він існує.
Атрибут області видимості описує, з якими потоками конкретний потік конкурує за володіння системними ресурсами. Потоки сперечаються за ресурси в межах двох областей видимості: процесу (потоки одного процесу) і системи (всі потоки в системі). Конкуренція потоків в межах одного і того ж процесу відбувається за дескриптори файлів, а конкуренція потоків в межах всієї системи – за ресурси, які виділяються системою (наприклад, фізична пам’ять). Потоки конкурують з потоками, які мають область видимості процесу, та з потоками інших процесів за використання процесора в залежності від змагального режиму і областей видимості ресурсів (колекція процесорів). Потік, що володіє системною областю видимості, буде обслуговуватися з врахуванням його пріоритету та стратегії планування, яка діє для всіх потоків в межах всієї системи. Члени POSIX-об¢єкта атрибутів потоку подано в табл. 3.
Таблиця 3. Члени об’єкта атрибутів потоку | ||
Атрибути | Функції | Опис |
detachtate | int pthread_attr_ setdetachtate (pthread_ attr_t *attr, int detachtate); | Атрибут detachtate визначає, чи є новий потік відособлений. Якщо це правда, то його не можна об’єднати ні з яким іншим потоком |
guardsize | int pthread_attr_ setguardsize (pthread_ attr_t *attr, size_t guardsize); | Атрибут guardsize дозволяє керувати розміром захисної області стеку нового потоку. Він створює буферну зону розміром |
inhetitsched | int pthread_attr_ setnhetitsched (pthread_ attr_t *attr, int inhetitsched); | Атрибут inhetitsched визначає як будуть встановлені атрибути планування для нового потоку, тобто чи буде успадковане від потоку-творця або встановлено об’єктом атрибутів |
param | int pthread_attr_ setschedparam (pthread_ attr_t *restrict attr, const struct ched_param *restrict param); | Атрибут param – це структура, якою можна скористатись для встановлення пріоритету нового потоку |
schedpolicy | int pthread_attr_ setschedpolicy (pthread_ attr_t *attr, int policy); | Атрибут schedpolicy визначає стратегію планування створюваного потоку |
contentionscope | int pthread_attr_ setscope (pthread_ attr_t *attr, int contentionscope); | Атрибут contentionscope визначає з якою множиною потоків буде змагатися створений потік за використання процесорного часу. Область видимості процесу означає, що потік буде змагатися зі множиною потоків одного процесу, а область видимості системи означає, що потік буде змагатися з потоками в масштабі всієї системи |
stackaddr stacksize | int pthread_attr_ setstack (pthread_ attr_t *attr, void *stackaddr, size_t stacksize); | Атрибути stackaddr і stacksize |
stackaddr | int pthread_attr_ setstackaddr (pthread_ attr_t *attr, void *stackaddr); | Атрибути stackaddr визначає базову адресу стеку, що виділяється для створюваного потоку |
stacsize | int pthread_attr_ setstacsize (pthread_ attr_t *attr, size_t stacsize); | Атрибут stacsize визначає мінімальний розмір стеку в байтах, що виділяється для створюваного потоку |
– Конец работы –
Эта тема принадлежит разделу:
На сайте allrefs.net читайте: Лекція_6.
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Визначення та контекстні вимоги потоку
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов