Багатопотоковість або багатонитковість (англ. multithreading) — властивість операційної системи або застосунку, яка полягає в тому, що процес, породжений в операційній системі, може складатися з кількох потоків, що виконуються паралельно, або навіть одночасно на багатопроцесорних системах. При виконанні деяких завдань таке розділення може досягти ефективнішого використання ресурсів комп'ютера. Такі процеси виконання ще називають потоками.
Основна ідея
Суттю багатопотоковості є квазі-багатозадачність на рівні одного виконуваного процесу, тобто всі потоки виконуються в адресному просторі процесу. Окрім цього, всі потоки процесу мають не тільки спільний адресний простір, але і спільні дескриптори файлів. Процес, що виконується, має як мінімум один (головний) потік.
Багатонитковість (як доктрину програмування) не слід плутати ані з багатозадачністю, ані з багатопроцесорністю, не зважаючи на те, що операційні системи, що реалізовують багатозадачність, як правило реалізують і багатонитковість.
Переваги
Переваги багатонитковості наступні:
- спрощення програми в деяких випадках, за рахунок використання загального адресного простору;
- менші відносно процесу часові витрати на створення нитки і взаємодію між нитками;
- підвищення продуктивності процесу за рахунок розпаралелювання процесорних обчислень і операцій вводу/виводу.
Типи реалізації потоків
Потік в просторі користувача
Кожен процес має таблицю потоків, аналогічну таблиці процесів ядра.
Переваги цього типу наступні:
- можливість реалізації на ядрі, що не підтримує багатопотоковість;
- швидше переключення, створення і завершення потоків;
- процес може мати власний алгоритм планування.
Недоліки:
- відсутність переривання по таймеру усередині одного процесу;
- при використанні блокуючого системного запиту решта всіх потоків блокується;
- відсутній виграш у швидкодії на багато-процесорних системах;
- складність реалізації.
Потік в просторі ядра
Разом з таблицею процесів в просторі ядра є таблиця потоків.
Змішана реалізація
Нитки працюють в режимі користувача, але при системних викликах перемикаються в режим ядра. Перемикання в режим ядра і назад є ресурсоємною операцією і негативно позначається на продуктивності системи. Тому було введено поняття волокна — полегшеної нитки, що виконується виключно в режимі користувача. В кожної нитці може бути декілька волокон. Подібний тип багатонитковості реалізований в ОС Windows.
Види взаємодій потоків
У багатопотоковому середовищі часто виникають задачі, пов'язані з використанням паралельними виконуваними потоками одних і тих же даних або пристроїв. Для вирішення подібних проблем використовуються такі методи взаємодії потоків, як взаємовиключення (м'ютекси), семафори, критичні секції і .
- взаємовиключення (mutex, м'ютекс) — це об'єкт синхронізації, який встановлюється в особливий сигнальний стан, коли не зайнятий якимось потоком. Тільки однин потік володіє цим об'єктом у будь-який момент часу, звідси і назва таких об'єктів (від англійського mutually exclusive access — взаємно виключний доступ) — одночасний доступ до загального ресурсу виключається. Після всіх необхідних дій м'ютекс звільняється потоком, надаючи іншим потокам доступ до загального ресурсу.
- Семафори є доступні ресурси, які можуть займатися кількома потоками в один і той же час, поки обсяг ресурсів не спустіє. Тоді додаткові потоки повинні чекати, поки необхідна кількість ресурсів не буде знову доступна. Семафори дуже ефективні, оскільки вони дозволяють одночасний доступ до ресурсів.
- Події. Події корисні в тих випадках, коли необхідно послати повідомлення потоку, що відбулася певна подія. Наприклад, при асинхронних операціях вводу/виводу з одного пристрою, система встановлює подію в сигнальний стан коли закінчується якась з цих операцій. Однин потік може використовувати кілька різних подій в декількох операціях, що перекриваються, а потім чекати приходу сигналу від будь-якого з них.
- Критичні секції забезпечують синхронізацію подібно м'ютексам за винятком того, що об'єкти, що представляють критичні секції, доступні в межах одного процесу. Події, м'ютекси і семафори також можна використовувати в однопроцесному застосунку, проте критичні секції забезпечують швидший і ефективніший механізм синхронізації взаємного виключення.
Посилання
Див. також
- Планування ниток
- Конкуренція ниток
- Багатониткова безпека
- Нитки у Windows
- Паралельні обчислення
- Рівночасні обчислення
- Процесорний час
Ця стаття потребує додаткових для поліпшення її . (січень 2016) |
Це незавершена стаття про операційні системи. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Bagatopotokovist abo bagatonitkovist angl multithreading vlastivist operacijnoyi sistemi abo zastosunku yaka polyagaye v tomu sho proces porodzhenij v operacijnij sistemi mozhe skladatisya z kilkoh potokiv sho vikonuyutsya paralelno abo navit odnochasno na bagatoprocesornih sistemah Pri vikonanni deyakih zavdan take rozdilennya mozhe dosyagti efektivnishogo vikoristannya resursiv komp yutera Taki procesi vikonannya she nazivayut potokami Osnovna ideyaSuttyu bagatopotokovosti ye kvazi bagatozadachnist na rivni odnogo vikonuvanogo procesu tobto vsi potoki vikonuyutsya v adresnomu prostori procesu Okrim cogo vsi potoki procesu mayut ne tilki spilnij adresnij prostir ale i spilni deskriptori fajliv Proces sho vikonuyetsya maye yak minimum odin golovnij potik Bagatonitkovist yak doktrinu programuvannya ne slid plutati ani z bagatozadachnistyu ani z bagatoprocesornistyu ne zvazhayuchi na te sho operacijni sistemi sho realizovuyut bagatozadachnist yak pravilo realizuyut i bagatonitkovist Perevagi Perevagi bagatonitkovosti nastupni sproshennya programi v deyakih vipadkah za rahunok vikoristannya zagalnogo adresnogo prostoru menshi vidnosno procesu chasovi vitrati na stvorennya nitki i vzayemodiyu mizh nitkami pidvishennya produktivnosti procesu za rahunok rozparalelyuvannya procesornih obchislen i operacij vvodu vivodu Tipi realizaciyi potokivDokladnishe Nitka informatika Potik v prostori koristuvacha Kozhen proces maye tablicyu potokiv analogichnu tablici procesiv yadra Perevagi cogo tipu nastupni mozhlivist realizaciyi na yadri sho ne pidtrimuye bagatopotokovist shvidshe pereklyuchennya stvorennya i zavershennya potokiv proces mozhe mati vlasnij algoritm planuvannya Nedoliki vidsutnist pererivannya po tajmeru useredini odnogo procesu pri vikoristanni blokuyuchogo sistemnogo zapitu reshta vsih potokiv blokuyetsya vidsutnij vigrash u shvidkodiyi na bagato procesornih sistemah skladnist realizaciyi Potik v prostori yadra Razom z tabliceyu procesiv v prostori yadra ye tablicya potokiv Zmishana realizaciya Nitki pracyuyut v rezhimi koristuvacha ale pri sistemnih viklikah peremikayutsya v rezhim yadra Peremikannya v rezhim yadra i nazad ye resursoyemnoyu operaciyeyu i negativno poznachayetsya na produktivnosti sistemi Tomu bulo vvedeno ponyattya volokna polegshenoyi nitki sho vikonuyetsya viklyuchno v rezhimi koristuvacha V kozhnoyi nitci mozhe buti dekilka volokon Podibnij tip bagatonitkovosti realizovanij v OS Windows Vidi vzayemodij potokivU bagatopotokovomu seredovishi chasto vinikayut zadachi pov yazani z vikoristannyam paralelnimi vikonuvanimi potokami odnih i tih zhe danih abo pristroyiv Dlya virishennya podibnih problem vikoristovuyutsya taki metodi vzayemodiyi potokiv yak vzayemoviklyuchennya m yuteksi semafori kritichni sekciyi i vzayemoviklyuchennya mutex m yuteks ce ob yekt sinhronizaciyi yakij vstanovlyuyetsya v osoblivij signalnij stan koli ne zajnyatij yakimos potokom Tilki odnin potik volodiye cim ob yektom u bud yakij moment chasu zvidsi i nazva takih ob yektiv vid anglijskogo mutually exclusive access vzayemno viklyuchnij dostup odnochasnij dostup do zagalnogo resursu viklyuchayetsya Pislya vsih neobhidnih dij m yuteks zvilnyayetsya potokom nadayuchi inshim potokam dostup do zagalnogo resursu Semafori ye dostupni resursi yaki mozhut zajmatisya kilkoma potokami v odin i toj zhe chas poki obsyag resursiv ne spustiye Todi dodatkovi potoki povinni chekati poki neobhidna kilkist resursiv ne bude znovu dostupna Semafori duzhe efektivni oskilki voni dozvolyayut odnochasnij dostup do resursiv Podiyi Podiyi korisni v tih vipadkah koli neobhidno poslati povidomlennya potoku sho vidbulasya pevna podiya Napriklad pri asinhronnih operaciyah vvodu vivodu z odnogo pristroyu sistema vstanovlyuye podiyu v signalnij stan koli zakinchuyetsya yakas z cih operacij Odnin potik mozhe vikoristovuvati kilka riznih podij v dekilkoh operaciyah sho perekrivayutsya a potim chekati prihodu signalu vid bud yakogo z nih Kritichni sekciyi zabezpechuyut sinhronizaciyu podibno m yuteksam za vinyatkom togo sho ob yekti sho predstavlyayut kritichni sekciyi dostupni v mezhah odnogo procesu Podiyi m yuteksi i semafori takozh mozhna vikoristovuvati v odnoprocesnomu zastosunku prote kritichni sekciyi zabezpechuyut shvidshij i efektivnishij mehanizm sinhronizaciyi vzayemnogo viklyuchennya PosilannyaDiv takozhPlanuvannya nitok Konkurenciya nitok Bagatonitkova bezpeka Nitki u Windows Paralelni obchislennya Rivnochasni obchislennya Procesornij chas Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno sichen 2016 Ce nezavershena stattya pro operacijni sistemi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi