V tomto článku porozumíme vícevláknovému modelu v operačním systému.
Vícevláknový model:
Multithreading umožňuje aplikaci rozdělit svůj úkol do jednotlivých vláken. Ve vícevláknech lze stejný proces nebo úlohu provést podle počtu vláken nebo můžeme říci, že existuje více než jedno vlákno pro provedení úlohy ve vícevláknech. S využitím multithreadingu lze dosáhnout multitaskingu.
jednoduchý program python
Hlavní nevýhodou jednovláknových systémů je to, že najednou lze provádět pouze jeden úkol, takže k překonání nevýhody tohoto jediného vlákna existuje vícevláknové zpracování, které umožňuje provádět více úloh.
Například:
Ve výše uvedeném příkladu klient1, klient2 a klient3 přistupují k webovému serveru bez čekání. V multithreadingu může běžet několik úloh současně.
V operačním systému jsou vlákna rozdělena na vlákno na úrovni uživatele a vlákno na úrovni jádra. Vlákna na uživatelské úrovni zpracovávala nezávislou formu nad jádrem, a proto byla spravována bez jakékoli podpory jádra. Na druhé straně operační systém přímo spravuje vlákna na úrovni jádra. Nicméně mezi vlákny na úrovni uživatele a na úrovni jádra musí existovat určitá forma vztahu.
Existují tři zavedené modely multithreadingu, které klasifikují tyto vztahy:
- Mnoho do jednoho vícevláknového modelu
- Jeden ku jednomu vícevláknový model
- Mnoho až mnoho vícevláknových modelů
Mnoho na jeden multivláknový model:
Model many to one mapuje mnoho vláken uživatelských úrovní do jednoho vlákna jádra. Tento typ vztahu usnadňuje efektivní prostředí pro přepínání kontextu, které lze snadno implementovat i na jednoduchém jádře bez podpory vláken.
řetězec podřetězec
Nevýhodou tohoto modelu je, že vzhledem k tomu, že v daném okamžiku existuje pouze jeden plán vláken na úrovni jádra, tento model nemůže využívat hardwarovou akceleraci nabízenou vícevláknovými procesy nebo víceprocesorovými systémy. V tomto případě se veškerá správa vláken provádí v uživatelském prostoru. Pokud dojde k zablokování, tento model zablokuje celý systém.
Na výše uvedeném obrázku model mnoho na jeden přidružuje všechna vlákna na uživatelské úrovni k jednomu vláknům na úrovni jádra.
Jeden ku jednomu vícevláknový model
Model one-to-one mapuje jedno vlákno na úrovni uživatele na jediné vlákno na úrovni jádra. Tento typ vztahu usnadňuje paralelní běh více vláken. Tato výhoda má však své nevýhody. Generování každého nového uživatelského vlákna musí zahrnovat vytvoření odpovídajícího vlákna jádra způsobujícího režii, která může bránit výkonu nadřazeného procesu. Operační systémy řady Windows a Linux se snaží tento problém řešit omezením růstu počtu vláken.
obrázek markdown
Na obrázku výše jeden model přidružuje toto jedno vlákno na uživatelské úrovni k jedinému vláknu na úrovni jádra.
Multithreadingový model Many to Many Model
V tomto typu modelu existuje několik vláken na uživatelské úrovni a několik vláken na úrovni jádra. Počet vytvořených vláken jádra závisí na konkrétní aplikaci. Vývojář může vytvořit tolik vláken na obou úrovních, ale nemusí být stejné. Model many to many je kompromisem mezi ostatními dvěma modely. V tomto modelu, pokud nějaké vlákno provede blokující systémové volání, může jádro naplánovat spuštění jiného vlákna. Se zavedením více vláken také není přítomna složitost jako u předchozích modelů. Ačkoli tento model umožňuje vytvoření více vláken jádra, nelze tímto modelem dosáhnout skutečné souběžnosti. Je to proto, že jádro může naplánovat pouze jeden proces najednou.
Mnoho až mnoho verzí vícevláknového modelu přidružuje několik vláken na uživatelské úrovni ke stejnému nebo mnohem menšímu množství vláken na úrovni jádra na obrázku výše.