рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Визначення та контекстні вимоги потоку

Визначення та контекстні вимоги потоку - раздел Философия, Лекція 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_ set­guardsize (pthread_ attr_t *attr, size_t guardsize); Атрибут guardsize дозволяє керу­вати розміром захисної області стеку но­во­го потоку. Він створює буферну зону розміром
inhetitsched int pthread_attr_ setnhe­titsched (pthread_ attr_t *attr, int inhetitsched); Атрибут inhetitsched визначає як бу­дуть встановлені атрибути планування для нового потоку, тобто чи буде ус­па­дковане від потоку-творця або вста­новлено об’єктом атрибутів
param int pthread_attr_ setsch­ed­param (pthread_ attr_t *restrict attr, const struct ch­ed­_param *restrict param); Атрибут param – це структура, якою можна скористатись для встановлення пріоритету нового потоку
schedpolicy int pthread_attr_ setsch­ed­­policy (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_ setstac­kaddr (pthread_ attr_t *attr, void *stackaddr); Атрибути stackaddr визначає базову адресу стеку, що виділяється для створюваного потоку
stacsize int pthread_attr_ setstac­size (pthread_ attr_t *attr, size_t stacsize); Атрибут stacsize визначає мінімальний розмір стеку в байтах, що виділяється для створюваного потоку

– Конец работы –

Эта тема принадлежит разделу:

Лекція 6 Розбиття програм на множину потоків

На сайте allrefs.net читайте: Лекція_6.

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Визначення та контекстні вимоги потоку

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Розбиття програм на множину потоків
· Визначення, анатомія та планування потоку; · моделі створення та функціонування потоку; · бібліотека Pthread · а · Якщо робота підпрограм в програмі є

Планування потоків
Коли підходить час для планування процесу, процесор приймає один з його потоків. Якщо процес має тільки один потік, то власне він (тобто основний потік) призначається процесору. Якщо процес містить

Моделі створення і функціонування потоків
Мета потоку – виконати певну роботу від імені процесу. Якщо процес містить декілька потоків, кожен потік виконує деякі підзадачі як частини зага­льної задачі, що виконується процесом. Потокам делег

Бібліотека Pthread
Бібліотека Pthread являє собою Арі інтерфейс для створення і керування потоками в додатках. Бібліотека Pthread базується на стандартизованому інтер­фейсі програмування, який був визначений комітето

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги