nisfarm.ru

C závit - co to je?

Co mají společné trička a počítačové programy? Oba se skládají z mnoha vláken! Zatímco nit v košili drží látku v jediném ostří C Thread (doslova - „vlákna“ nebo „nitě“), operační systémy integrují všechny programy pro provádění sériových nebo paralelních činností současně. Každý podproces v programu identifikuje proces, který je spuštěn při požadavku systému (systémový podproces C). To optimalizuje provoz takového složitého zařízení jako osobního počítače a pozitivně ovlivňuje jeho rychlost a výkon.

Definice

V závitu C nebo v podprocesu je nejmenší posloupnost příkazů spravovaných nezávislým plánovačem, který je obvykle nedílnou součástí operačního systému.c vlákno

Závity mají obvykle určitou prioritu, což znamená, že některé vlákna mají přednost před ostatními. Jakmile procesor dokončí zpracování jednoho vlákna, může spustit další čekací frontu. Čekací doba zpravidla nepřesahuje několik milisekund. Počítačové programy implementující "multithreading" mohou provádět několik podprocesů najednou. Většina moderních operačních systémů podporuje C závit na systémové úrovni. To znamená, že pokud se jeden program pokusí převzít všechny procesorové zdroje, systém násilně přepne na jiné programy a vynutit program podpory procesoru, aby sdílel zdroje rovnoměrně.

Termín "vlákno" může také odkazovat na řadu souvisejících zpráv v on-line diskuzi. Webové bulletinové desky se skládají z různých témat nebo odvětví. Odpovědi zaslané v reakci na původní publikace jsou součástí stejného vlákna. V e-mailu může vlákno odkazovat na řadu odpovědí ve formě příkazů "zpět" a "dopředu", které se vztahují ke konkrétní zprávě, a strukturovat strom konverzace.

Multithreading C Thread v systému Windows

V programování po počítači je jedním závitováním zpracování jednoho příkazu najednou. Opačný vzorek s jedním závitem je vícenásobný. Oba termíny jsou široce používány ve funkční programovací komunitě.

Multithreading je podobný multitaskingu, ale umožňuje zpracovat několik podprocesů najednou, ale ne několik procesů. Protože jsou podprocesy menší a jsou řízeny jednoduššími pokyny, může se v rámci procesů vyskytovat i víceúrovňová vlákna.

Příklady úlohy C Thread

Vícevláknový operační systém může současně provádět více úkolů na pozadí, například protokolování změn souborů, indexování dat a správa oken. Webové prohlížeče, které podporují víceúrovňovou správu, mohou otevřít více oken se současným provozem jаvascript a Flash. Pokud je program plně multi-threaded, různé procesy by se neměly navzájem ovlivňovat, pokud má procesor dostatečný výkon pro zpracování.

Stejně jako multitasking, multithreading také zlepšuje stabilitu programů. Multithreading může zabránit zhroucení programu a zabránění zhroucení počítače. Vzhledem k tomu, že každý podproces je zpracováván samostatně, chyba v jednom z nich nemůže narušit provoz počítače. Multithreading tak může vést k menšímu počtu poruch v operačním systému jako celku.vlákno spánku c

Multitasking

Multitasking zpracovává několik úkolů v paralelním režimu a také charakterizuje činnost počítače. Procesor může zpracovat několik procesů najednou s absolutní přesností. Spracovává však pouze pokyny, které mu softwarový program předá. Proto, aby mohly plně využívat schopnosti CPU, musí být schopen zpracovat více než jeden úkol najednou a také multitasking.

Historická retrospektiva




Včasné operační systémy by mohly spustit několik programů najednou, ale plně nepodporovaly multi-tasking. Jeden program může při provádění určité operace spotřebovávat všechny zdroje procesoru. Hlavní úkoly operačního systému, například kopírování souborů, neumožnily uživateli provádět jiné úkoly (například otevírání nebo zavírání oken).

Moderní operační systémy zahrnují plnou podporu multitaskingu - několik softwarových řešení může pracovat současně, aniž by narušovalo vzájemnou funkčnost.

Multitasking také zlepšuje stabilitu počítače. Například pokud některý z procesů selže, nebude to mít vliv na ostatní spuštěné programy, protože počítač zpracovává každý proces zvlášť. To může být v porovnání s procesu psaní písmen: pokud jste ve středu listu a již psali část textu, ale váš webový prohlížeč neočekávaně, nebudete ztrácet práce již provedeny.c vlákno úkol

Jednoduché a víceprocesorové systémy

Implementace technologií streamingu a procesorů se v závislosti na operačním systému liší, ale nejčastěji tok tvoří součást procesu. Současně může existovat několik podprocesů v jednom procesu, provádění a sdílení zdrojů. Konkrétně procesní vlákna C Thread používají kdykoliv spustitelný kód a hodnoty proměnných v ko-režimu.

Systémy s jediným procesorem implementují vícenásobné zavádění: Centrální procesor (CPU) přepíná mezi různými toky softwaru. V multiprocesorovém i vícejádrovém systému probíhá řada závitů paralelně, přičemž každý procesor nebo jádro provádí současně samostatný závit.

Druhy toků

Plánovací procesy většiny moderních operačních systémů přímo podporují jak časování a zpracování multi-stream, zatímco jádro operačního systému umožňuje vývojářům řídit tok poskytuje potřebné funkce prostřednictvím rozhraní systémových volání. Některé implementace podprocesů se nazývají jádra jádra, zatímco světelné procesy (LWP) jsou typ vlákna, který má stejný stav informací. Softwarová řešení mohou mít v uživatelském prostoru vlákna, pokud jsou používány s časovači (Thread časovače C), signály nebo jinými metodami přerušit svou dělá, dělá nějaký druh načasování ad hoc.

Toky a procesy: rozdíly

Toky se liší od klasických multitaskingových procesů s následujícími vlastnostmi:

  • procesy jsou obvykle nezávislé, zatímco podprocesy existují jako podmnožiny procesu;

  • procesy nesou mnohem více informací než vlákna;

  • procesy mají vyhrazené adresové prostory;

  • procesy interagují pouze prostřednictvím mechanismů systémové komunikace;

  • Kontextové přepínání mezi vlákny v procesu probíhá rychleji než přepínání kontextu mezi procesy.

Preventivní a společné plánování

V multiuživatelských operačních systémech je preventivní multithreading více rozšířeným přístupem pro řízení běhu přes přepínání kontextu. Nicméně preventivní plánování může vést k neoprávněným programátorům s prioritou a selháním. Na rozdíl od toho, multithreading kloubu spoléhá na vlákna, které se zdrží provádění kontroly. To může způsobit problémy, pokud je sdílený multitasking podproces blokován čekáním na prostředek.spojení c-thread

Vývoj technologie

Až do počátku roku 2000. na většině stolních počítačích byl k dispozici pouze jeden jednojadrový procesor, který nepodporoval hardwarové podprocesy. V roce 2002 společnost Intel implementovala podporu pro simultánní multithreading na procesoru Pentium 4, který se nazývá Hyper-Threading. V roce 2005 byl představen dvoujádrový procesor Pentium D a dvoujádrový procesor AMD Athlon 64 X2.

Procesory v integrovaných systémech s vyššími nároky na akce v reálném čase jsou schopny podporovat vícenásobné zpracování, zkrátit dobu přepínání závitů a použít samostatný soubor registrů pro každý podproces.

Modely

Uvádíme seznam hlavních modelů implementace.

1: 1 (vlákno na úrovni jádra) - témata vytvořená uživatelem v jádře jsou nejjednodušší možnou implementací podprocesů. OS / 2 a Win32 používají tento přístup zpočátku, zatímco v Linuxu knihovna C Závitový spoj implementuje tento přístup pomocí NPTL nebo starších LinuxThreads. Tento přístup využívají také systémy Solaris, NetBSD, FreeBSD, macOS a iOS.

N: 1 (podproces uživatele) - tento model zajišťuje, že všechny podprocesy na úrovni aplikace jsou mapovány na jeden plánovaný objekt na úrovni jádra. Tímto přístupem může být přepnutí kontextu provedeno velmi rychle a navíc může být provedeno i na jádrech, které nepodporují zpracování dat. Jedním z hlavních nedostatků je však to, že neprobíhá zrychlení hardwaru na vícevláknových procesorech nebo počítačích. Například: pokud je potřeba provést jeden z podprocesů při požadavku I / O, celý proces je zablokován a nelze použít streaming. V programu GNU Portable je výjimka C Thread používána jako stream zpracování uživatelské úrovně.

M: N (hybridní implementace) - model zobrazuje řadu toků aplikací pro některé číslo N buněk jader nebo "virtuální procesory". Jedná se o kompromis mezi vlákny na úrovni jádra ("1: 1") a uživatele ("N: 1"). Systémy pro streamování "M: N" jsou složitější, protože vyžadují jak kód jádra, tak uživatelský kód. V implementaci M: N je knihovna zpracování podprocesů zodpovědná za plánování podprocesů v dostupných naplánovaných entitách. Tím je kontext nejoptimálnější, protože se vyhýbá systémovým voláním. To však zvyšuje složitost a pravděpodobnost inverze, stejně jako neoptimální plánování bez rozsáhlé (a nákladné) koordinace mezi plánovačem prostředí uživatele a plánovačem jádra.std c

Příklady provedení hybridního - aktivace plánovač používané provádění POSIX NetBSD postavený knihovny (Model M: N, na rozdíl od provádění modelu jádra 1: 1, nebo uživatelsky prostorových modelů).

Světelné procesy používané staršími verzemi operačního systému Solaris (soubor nástrojů Std Thread C).

Podpora programovacích jazyků

Mnoho formálních systémů podporuje funkčnost vláken. Implementace C a C ++ implementují tuto technologii a poskytují přístup k vlastním API pro operační systém. Některé programovací jazyky vyšší úrovně, jako je Java, Python a .NET Framework, vystavují vývojářům podprocesy při abstrahování specifických rozdílů v implementaci podprocesů v běhu. Jiné jazykové rozšíření se také pokouší abstraktní koncept souběžnosti a streamování od vývojáře. Některé jazyky jsou určeny pro postupné paralelní použití grafických procesorů.

windows c vlákno

Některé implementace vyložil jazyky, které podporují paralelní zpracování a streaming, ale ne paralelní spouštění toků v důsledku globálního zámku krytu (GIL). GIL - zámek pro vzájemné vyloučení, vykonán tlumočníka, který může zabránit jak interpretovat kód aplikace do dvou nebo více nití najednou, což limituje paralelismus ve vícejádrových systémech.

Jiné implementace interpretovaných programovacích jazyků, jako je například Tcl, použijte rozšíření tématu spánku C. Tím se zabrání maximální limit Gil, za použití modelu, kdy obsah a kód by měl být explicitně „sdílené“ mezi závity.

Programovací jazyky, akce aplikačně orientované, jako je Verilog, a expanze Thread spánek C, mají různý threading model, který podporuje maximální počet simulačních zařízení.c výjimka vlákna

Praktická multithreading

Multithreaded knihovna volání funkce je zahájeno vygenerovat nový proud, který přijímá funkční hodnotu jako parametr. Potom nový paralelní tok zpracování a rozběhne funkce a pak se vrátit. Programovací jazyky patří vlákno knihovna, včetně globálních funkcí, synchronizace, které vám umožní vytvářet a úspěšně realizovat multithreading s podmínkou, nejsou tam žádné chyby, používání mutexy, stav proměnných, kritické sekce, monitorů a dalších typů synchronizace.

Sdílet na sociálních sítích:

Podobné
© 2021 nisfarm.ru