Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Особливості завершення потоків

Особливості створення потоків

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

Якщо процес створюється за допомогою системного виклику fork(), після розподілу адресного простору автоматично створюється потік усередині цього процесу (найчастіше це — головний потік застосування).

Можна створювати потоки з коду користувача за допомогою відповідного системного виклику.

У багатьох ОС є спеціальні потоки, які створює ядро системи (код ядра теж може виконуватися в потоках).

Під час створення потоку система повинна виконати такі дії.

1. Створити структури даних, які відображають потік в ОС.

2. Виділити пам'ять під стек потоку.

3. Встановити лічильник команд процесора на початок коду, який буде виконуватися в потоці; цей код називають процедурою або функцією потоку, покажчик на таку процедуру передають у системний виклик створення потоку.

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

Локальні змінні функції потоку розташовані у стеку потоку і доступні лише його коду, глобальні змінні доступні всім потокам.

 

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

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

Рекомендації щодо розробки багатопотокових програм:

 

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

§ Для потоків не підтримується така ієрархія, як для процесів. Потік, що ство­рив інший потік, має рівні з ним права. Розраховувати на те, що такий потік сам буде продовжувати своє виконання після завершення потоків-нащадків, немає сенсу.

§ Стек потоку очищається після виходу із функції потоку. Щоб цьому запобігти, не слід, наприклад, передавати нікуди покажчики на локальні змінні такої функції. Якщо необхідні змінні, значення яких мають зберігатися між викли­ками функції потоку, але при цьому вони не будуть доступні іншим потокам, треба скористатися локальною пам'яттю потоку (Thread Local Storage, TLS) - певним чином організованими даними, доступ до яких здійснюється за допо­могою спеціальних функцій.

 

Розділ4. Міжпроцесова взаємодія.

(аудиторних-6/4г. , самостійних- 8/4г.)

 

Лекція №1.

 

Тема: види міжпроцесової взаємодії.

 

План:

1.Проблеми міжпроцесової взаємодії.

2.Види міжпроцесової взаємодії:

a) методи розподілюваної пам’яті

b) методи передавання повідомлень

c) технологія відображуваної пам’яті(Л1. ст. 149-151).

3.Міжпроцесова взаємодія на базі спільної пам’яті (Л1. ст.151).

 

1.

 

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

Кожен потік виконується в рамках адресного простору свого процесу, тому часто постає задача організації взаємодії між потоками різних про­цесів. Ідеться власне про міжпроцесову взаємодію (interprocess communication, IPC). Ця технологія з'явилася задовго до поширення багатопотоковості.

Для потоків різних процесів питання забезпечення синхронізації теж є акту­альними, але вони в більшості випадків не ґрунтуються на понятті спільно вико­ристовуваних даних (такі дані за замовчуванням для процесів відсутні). Крім того, додається досить складна задача забезпечення обміну даними між захищеними адресними просторами. Підходи до її розв'язання визначають різні види міжпро­цесової взаємодії.

 

2.

 

Реалізація міжпроцесової взаємодії здійснюється трьма основними методами: передавання повідомлень, розподілюваної пам'яті та відображуваної пам'яті. Ще одним методом IPC також можна вважати технологію сигналів.Їхнє використання не зводиться тільки до організації IPC (синхронні сигнали є засобом оповіщення процесу про виняткову ситуацію); без них складно пояснити ряд базових понять керування процесами (наприклад, очікування завершення процесу).

 


Читайте також:

  1. I. Особливості аферентних і еферентних шляхів вегетативного і соматичного відділів нервової системи
  2. VI.3.3. Особливості концепції Йоганна Гайнріха Песталоцці
  3. VI.3.4. Особливості концепції Йоганна Фрідриха Гербарта
  4. А. Особливості диференціації навчального процесу в школах США
  5. Агітація за і проти та деякі особливості її техніки.
  6. Аграрне виробництво і його особливості
  7. Аграрне право як галузь права, його історичні витоки та особливості.
  8. Аналіз руху та ефективності формування грошових потоків
  9. АНАТОМІЯ І ФІЗІОЛОГІЯ ЦЕНТРАЛЬНОЇ ТА ПЕРИФЕРИЧНОЇ НЕРВОВОЇ СИСТЕМИ, ЇЇ ВІКОВІ ОСОБЛИВОСТІ
  10. Анатомо-фізіолгічні особливості
  11. Анатомо-фізіологічна перебудова організму підлітка та її вплив на його психологічні особливості й поведінку.
  12. Анатомо-фізіологічні особливості молодших школярів




Переглядів: 962

<== попередня сторінка | наступна сторінка ==>
Паралелізм розподілених застосувань | Особливості міжпроцесової взаємодії

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.01 сек.