V tomto článku pochopíme viacvláknový model v operačnom systéme.
Viacvláknový model:
Multithreading umožňuje aplikácii rozdeliť svoju úlohu na jednotlivé vlákna. Vo viacerých vláknach môže byť rovnaký proces alebo úloha vykonaná počtom vlákien, alebo môžeme povedať, že existuje viac ako jedno vlákno na vykonanie úlohy vo viacvláknovom procese. S využitím multithreadingu je možné dosiahnuť multitasking.
sonu nigam
Hlavnou nevýhodou jednovláknových systémov je, že naraz môže byť vykonaná iba jedna úloha, takže na prekonanie nevýhody tohto jediného vlákna existuje viacvláknové spracovanie, ktoré umožňuje vykonávať viacero úloh.
Napríklad:
Vo vyššie uvedenom príklade klient1, klient2 a klient3 pristupujú na webový server bez akéhokoľvek čakania. V multithreadingu môže bežať niekoľko úloh súčasne.
V operačnom systéme sú vlákna rozdelené na vlákno na úrovni používateľa a vlákno na úrovni jadra. Vlákna na užívateľskej úrovni spracovávali nezávislú formu nad jadrom, a preto boli spravované bez akejkoľvek podpory jadra. Na druhej strane operačný systém priamo spravuje vlákna na úrovni jadra. Napriek tomu musí existovať určitá forma vzťahu medzi vláknami na úrovni užívateľa a na úrovni jadra.
Existujú tri zavedené modely multithreadingu, ktoré klasifikujú tieto vzťahy:
- Mnoho na jeden multivláknový model
- Jeden k jednému viacvláknovému modelu
- Mnoho až mnoho multivláknových modelov
Mnoho na jeden multivláknový model:
Model many to one mapuje mnoho vlákien užívateľských úrovní do jedného vlákna jadra. Tento typ vzťahu uľahčuje efektívne prostredie s prepínaním kontextu, ktoré sa ľahko implementuje aj na jednoduchom jadre bez podpory vlákien.
príklady java kódu
Nevýhodou tohto modelu je, že keďže v danom čase existuje iba jeden rozvrh vlákien na úrovni jadra, tento model nemôže využívať hardvérovú akceleráciu, ktorú ponúkajú viacvláknové procesy alebo viacprocesorové systémy. V tomto prípade sa celá správa vlákien vykonáva v užívateľskom priestore. Ak príde blokovanie, tento model zablokuje celý systém.
Na vyššie uvedenom obrázku model mnoho na jeden priraďuje všetky vlákna na úrovni používateľa k jednotlivým vláknam na úrovni jadra.
rozdiel dátumov v exceli
Jeden k jednému viacvláknovému modelu
Model one-to-one mapuje jedno vlákno na úrovni používateľa na jedno vlákno na úrovni jadra. Tento typ vzťahu uľahčuje paralelný chod viacerých vlákien. Táto výhoda však prichádza so svojou nevýhodou. Generovanie každého nového užívateľského vlákna musí zahŕňať vytvorenie zodpovedajúceho vlákna jadra, ktoré spôsobuje réžiu, ktorá môže brániť výkonu nadradeného procesu. Operačné systémy Windows a Linux sa snažia tento problém vyriešiť obmedzením rastu počtu vlákien.
Na obrázku vyššie jeden model spája toto jedno vlákno na úrovni používateľa s jedným vláknom na úrovni jadra.
Multithreadingový model od mnohých k mnohým
V tomto type modelu existuje niekoľko vlákien na úrovni používateľa a niekoľko vlákien na úrovni jadra. Počet vytvorených vlákien jadra závisí od konkrétnej aplikácie. Vývojár môže vytvoriť toľko vlákien na oboch úrovniach, ale nemusia byť rovnaké. Model many to many je kompromisom medzi ostatnými dvoma modelmi. V tomto modeli, ak nejaké vlákno vykoná blokovacie systémové volanie, jadro môže naplánovať spustenie iného vlákna. So zavedením viacerých vlákien tiež nie je prítomná zložitosť ako v predchádzajúcich modeloch. Aj keď tento model umožňuje vytváranie viacerých vlákien jadra, skutočný súbežnosť sa týmto modelom nedá dosiahnuť. Je to preto, že jadro môže naplánovať iba jeden proces naraz.
Mnohé až mnohé verzie multithreadingového modelu priraďujú niekoľko vlákien na užívateľskej úrovni k rovnakej alebo oveľa menšej škále vlákien na úrovni jadra na obrázku vyššie.