Multithreading

Ve výpočetní technice se multithreading (nazývaný také souběžnost , více vláken nebo více vláken ) týká simultánního (nebo kvazi-simultánního) zpracování několika vláken (prováděcích vláken ) v rámci jednoho procesu nebo úkolu ( aplikačního programu ).

Na rozdíl od multitasking , v němž je několik nezávislých programů od sebe zabrala téměř současně být provedeny, závity aplikačního programu se není utěsněna od sebe navzájem, tedy tzv sporech příčina chyby způsobené synchronizace je třeba se vyhnout.

Jak multithreading, tak multitasking lze provádět buď pouze na jednom jádru procesoru, nebo je lze také kombinovat s multiprocesingem (skutečné paralelní provádění několika jádry procesoru).

software

Vzhledem k tomu, že vícejádrové procesory se stále více rozšiřují, je softwarové multithreading na ústupu; Je zde zpravidla zapojeno pouze jedno jádro procesoru - z hlediska hardwaru (a obecně operačního systému) existuje pouze jedna větev provádění programu. Zdánlivě existující simultánnost je generována interně v softwaru, tj. V rámci aplikačního programu a je jím pouze řízena, ve skutečnosti pomocí zručného řazení ( prioritizace „ vlákna “) a logické abstrakce procesu multiplexu . Jednotlivá „vlákna“ procesu / úkolu mohou velmi rychle reagovat na časově kritické události, zatímco jiná vlákna provádějí zdlouhavé výpočty. Software pro střih videa může například vypočítat scénu „na pozadí“ (vlákno 1), zatímco reaguje na vstup uživatele „v popředí“ (vlákno 2).

Bez další hardwarové podpory snižuje multithreading v malém rozsahu celkový výkon systému kvůli režii vznikající při změně kontextů ; V případě procesů, které by měly být na sobě nezávislé, může aplikace místo toho dosáhnout velkých zvýšení výkonu.

Rozlišuje se také, zda je multithreading implementován pouze v aplikačním programu nebo zda je podporován operačním systémem. Pokud je implementován čistě na straně aplikace, programátor má plnou kontrolu nad tím, které vlákno přijímá, které prostředky a kdy. Jelikož se však celý program operačnímu systému jeví pouze jako sekvence, je zcela zmrazen, jakmile požaduje zdroje / služby, které aktuálně nejsou k dispozici - to je primární problém při zpracování uživatelského vstupu na grafickém uživatelském rozhraní a zpracování interní údaje a postupy.

Pokud operační systém podporuje více vláken, může znát ty části aplikace, které nejsou blokovány - aplikace může (částečně) pokračovat v práci.

Hardware

Tyto vícevláknové založené na hardwaru se liší od softwaru související s tím, že hardware procesoru podporuje zdánlivý nebo skutečný současné zpracování více vláken. Software musí tuto schopnost využívat a musí být odpovídajícím způsobem rozdělen do vláken a odpovídajícím způsobem je vytvořit / zaregistrovat v operačním systému.

Moderní operační systémy rozdělují zátěž aplikace pomocí multithreadingu plně automaticky na všechna existující jádra procesoru - s maximální taktovací frekvencí jednoho jádra to zajišťuje vylepšenou reaktivitu operačního systému a zvyšuje výkon každé jednotlivé aplikace.

V symetrických víceprocesorových systémech může být výpočetní práce procesu / úlohy distribuována do několika systémových procesorů prostřednictvím multithreadingu.

Je třeba přesně rozlišovat mezi hardwarovým multi- threadingem a multi- processingem . U vícevláknových vláken běží vlákna ve stejném kontextu úlohy , což je mnohem snazší implementovat pro hardware, např. B. není vyžadována žádná druhá tabulka MMU / stránka . Se skutečným multiprocesem je každá sekvence samostatným procesem, ale outsourcing vláken na fyzicky dostupná jádra procesoru lze také klasifikovat jako „skutečný souběžný“.

Hardwarové vícevláknové zpracování má za následek pouze okrajovou režii během změny kontextu za předpokladu, že počet softwarových vláken, které vyžadují výpočetní čas, nepřekročí počet vláken podporovaných hardwarem, a tak si každé vlákno může vždy uchovat „své“ prostředky CPU (zejména sadu registrů).

Kromě toho (jak s hardwarovým multithreadingem, tak s multitaskingem) lze funkční jednotky procesoru, které momentálně nepoužívá výpočetní proces, použít jiné vlákno (obvykle se nazývá hyper-threading ). Tím, že se vyhnete rizikům v potrubí , lze zabránit neproduktivním hodinovým cyklům a zvyšuje se celkový výkon systému na procesor nebo jádro procesoru.

webové odkazy