logo

Modele multithreading în sistemul de operare

În acest articol, vom înțelege modelul multithreading din sistemul de operare.

Model multithreading:

Multithreading permite aplicației să-și împartă sarcina în fire individuale. În multi-thread-uri, același proces sau sarcină poate fi realizată după numărul de fire de execuție, sau putem spune că există mai multe thread-uri pentru a îndeplini sarcina în multithreading. Prin utilizarea multithreading-ului, se poate realiza multitasking.

încearcă să prinzi java
Modele multithreading în sistemul de operare

Principalul dezavantaj al sistemelor single threading este că o singură sarcină poate fi efectuată la un moment dat, astfel încât pentru a depăși dezavantajul acestui single threading, există multithreading care permite efectuarea mai multor sarcini.

De exemplu:

Modele multithreading în sistemul de operare

În exemplul de mai sus, client1, client2 și client3 accesează serverul web fără nicio așteptare. În multithreading, mai multe sarcini pot rula în același timp.

Într-un sistem de operare, firele de execuție sunt împărțite în firul de execuție la nivel de utilizator și firul de execuție la nivel de kernel. Firele de execuție la nivel de utilizator s-au gestionat sub formă independentă deasupra nucleului și, prin urmare, sunt gestionate fără suport pentru nucleu. Pe de altă parte, sistemul de operare gestionează direct firele de execuție la nivel de kernel. Cu toate acestea, trebuie să existe o formă de relație între firele de execuție la nivel de utilizator și la nivel de nucleu.

Există trei modele multithreading stabilite care clasifică aceste relații:

  • Model multithreading de la mai multe la unul
  • Model multithreading unu la unu
  • Multe până la multe modele multithreading

Model de mai multe la unul multithreading:

Modelul many to one mapează mai multe fire de execuție la nivel de utilizator la un fir de nucleu. Acest tip de relație facilitează un mediu eficient de schimbare a contextului, ușor de implementat chiar și pe un nucleu simplu fără suport pentru fire.

testare manuală

Dezavantajul acestui model este că, deoarece există un singur program de fire la nivel de nucleu la un moment dat, acest model nu poate profita de accelerația hardware oferită de procesele cu mai multe fire sau de sistemele cu mai multe procesoare. În aceasta, toată gestionarea firelor se face în spațiul utilizatorului. Dacă apare blocarea, acest model blochează întregul sistem.

Modele multithreading în sistemul de operare

În figura de mai sus, modelul multi la unu asociază toate firele de execuție la nivel de utilizator cu fire de execuție la nivel de nucleu unic.

Model multithreading unu la unu

Modelul unu-la-unu mapează un singur thread la nivel de utilizator la un singur thread la nivel de kernel. Acest tip de relație facilitează rularea mai multor fire în paralel. Cu toate acestea, acest beneficiu vine cu dezavantajul său. Generarea fiecărui thread de utilizator nou trebuie să includă crearea unui fir de nucleu corespunzător care provoacă o suprasarcină, care poate împiedica performanța procesului părinte. Seria Windows și sistemele de operare Linux încearcă să abordeze această problemă limitând creșterea numărului de fire.

Actrița Rakul Preet Singh
Modele multithreading în sistemul de operare

În figura de mai sus, un model asociază acel thread la nivel de utilizator cu un singur thread la nivel de kernel.

Many to Many Model model multithreading

În acest tip de model, există mai multe fire de execuție la nivel de utilizator și mai multe fire de execuție la nivel de nucleu. Numărul de fire kernel create depinde de o anumită aplicație. Dezvoltatorul poate crea cât mai multe fire de execuție la ambele niveluri, dar este posibil să nu fie același. Modelul the many to many este un compromis între celelalte două modele. În acest model, dacă orice fir de execuție face un apel de sistem de blocare, nucleul poate programa un alt fir de execuție. De asemenea, odată cu introducerea mai multor fire, complexitatea nu este prezentă ca în modelele anterioare. Deși acest model permite crearea mai multor fire de nucleu, concurența reală nu poate fi realizată de acest model. Acest lucru se datorează faptului că nucleul poate programa doar un proces la un moment dat.

Modele multithreading în sistemul de operare

Multe sau multe versiuni ale modelului multithreading asociază mai multe fire de execuție la nivel de utilizator la aceeași varietate sau mult mai puțină de fire de execuție la nivel de nucleu din figura de mai sus.