Un fir de execuție este o singură secvență în cadrul unui proces. Firele sunt numite și procese ușoare, deoarece posedă unele dintre proprietățile proceselor. Fiecare fir aparține exact unui proces. Într-un sistem de operare care acceptă multithreading, procesul poate consta din mai multe fire. Dar firele de execuție pot fi eficiente numai dacă CPU-ul este mai mult de 1, altfel două fire de execuție trebuie să schimbe contextul pentru acel singur CPU.
Ce este Thread în sistemele de operare?
Într-un proces, un fir se referă la o singură activitate secvenţială care este executată. aceste activități sunt cunoscute și sub denumirea de thread of execution sau thread control. Acum, orice proces de sistem de operare poate executa un fir. putem spune că un proces poate avea mai multe fire.
De ce avem nevoie de Thread?
- Firele rulează în paralel îmbunătățind performanța aplicației. Fiecare astfel de fire are propria stare și stiva CPU, dar împărtășesc spațiul de adresă al procesului și al mediului.
- Threadurile pot partaja date comune, astfel încât să nu fie nevoie să fie utilizate comunicarea intraprocesuala . La fel ca și procesele, firele de execuție au și stări precum gata, în execuție, blocat etc.
- Prioritatea poate fi atribuită firelor la fel ca și procesului, iar firul cu cea mai mare prioritate este programat mai întâi.
- Fiecare fir are al lui Bloc de control al firului (TCB) . Asemenea procesului, are loc o schimbare de context pentru fir și conținutul registrului este salvat în (TCB). Întrucât firele de execuție împart același spațiu de adresă și resurse, sincronizarea este, de asemenea, necesară pentru diferitele activități ale firului de execuție.
Componentele firelor
Acestea sunt componentele de bază ale sistemului de operare.
- Spațiu de stivă
- Set de înregistrare
- Contor de programe
Tipuri de fire în sistemul de operare
Firele sunt de două tipuri. Acestea sunt descrise mai jos.
- Subiect la nivel de utilizator
- Fir la nivel de kernel

list vs set in java
Fire
1. Fire la nivel de utilizator
Thread la nivel de utilizator este un tip de fir care nu este creat folosind apeluri de sistem. Nucleul nu are de lucru în gestionarea firelor de execuție la nivel de utilizator. Firele la nivel de utilizator pot fi implementate cu ușurință de către utilizator. În cazul în care firele de execuție la nivel de utilizator sunt procese cu o singură mână, firele de execuție la nivel de nucleu le gestionează. Să ne uităm la avantajele și dezavantajele Thread-ului la nivel de utilizator.
Avantajele thread-urilor la nivel de utilizator
ce face ravel în python
- Implementarea thread-ului la nivel de utilizator este mai ușoară decât a thread-ului la nivel de kernel.
- Comutare de context Timpul este mai mic în Thread la nivel de utilizator.
- Thread la nivel de utilizator este mai eficient decât Thread la nivel de kernel.
- Datorită prezenței numai a numărătorului de programe, a setului de registre și a spațiului de stivă, are o reprezentare simplă.
Dezavantajele thread-urilor la nivel de utilizator
- Există o lipsă de coordonare între Thread și Kernel.
- În cazul unei erori de pagină, întregul proces poate fi blocat.
2. Fire la nivel de kernel
A thread la nivel de nucleu este un tip de fir care poate recunoaște cu ușurință sistemul de operare. Kernel Level Threads are propriul său tabel de fire unde ține evidența sistemului. Kernel-ul sistemului de operare ajută la gestionarea firelor. Firele de nucleu au timp de schimbare a contextului oarecum mai lung. Kernel ajută la gestionarea thread-urilor.
Avantajele thread-urilor la nivel de kernel
- Are informații actualizate despre toate firele.
- Aplicațiile care blochează frecvența trebuie gestionate de firele la nivel de kernel.
- Ori de câte ori orice proces necesită mai mult timp pentru procesare, Thread-ul la nivel de kernel îi oferă mai mult timp.
Dezavantajele thread-urilor la nivel de kernel
- Thread-ul la nivel de kernel este mai lent decât thread-ul la nivel de utilizator.
- Implementarea acestui tip de thread este puțin mai complexă decât un thread la nivel de utilizator.
Pentru mai multe, consultați Diferența dintre thread-ul la nivel de utilizator și thread-ul la nivel de kernel .
Diferența dintre proces și fir
Diferența principală este că firele din același proces rulează într-un spațiu de memorie partajat, în timp ce procesele rulează în spații de memorie separate. Firele de execuție nu sunt independente unele de altele, așa cum sunt procesele și, ca rezultat, firele de execuție partajează cu alte fire de execuție secțiunea de cod, secțiunea de date și resursele sistemului de operare (cum ar fi fișierele deschise și semnalele). Dar, ca un proces, un fir are al lui contor de programe (PC) , setul de înregistrări și spațiul de stivă.
Pentru mai multe, consultați Diferența dintre proces și fir .
arbore avl
Ce este Multi-Threading?
Un fir este cunoscut și ca un proces ușor. Ideea este de a realiza paralelismul prin împărțirea unui proces în mai multe fire. De exemplu, într-un browser , mai multe file pot fi fire diferite. MS Word folosește mai multe fire de execuție: un fir pentru a formata textul, un alt fir pentru a procesa intrările etc. Mai multe avantaje ale multithreading-ului sunt discutate mai jos.
Multithreadingul este o tehnică utilizată în sistemele de operare pentru a îmbunătăți performanța și capacitatea de răspuns a sistemelor informatice. Multithreading permite mai multor fire de execuție (adică, procese ușoare) să partajeze aceleași resurse ale unui singur proces, cum ar fi procesorul, memorie , și Dispozitive I/O .

Proces cu un singur thread vs. cu mai multe fire
Avantajele Thread în sistemul de operare
- Receptivitatea : Dacă procesul este împărțit în mai multe fire de execuție, dacă un fir de execuție își finalizează execuția, atunci rezultatul său poate fi returnat imediat.
- Comutare de context mai rapidă : Timpul de schimbare a contextului între fire este mai mic în comparație cu comutarea contextului procesului. Comutarea contextului procesului necesită mai multă suprasarcină de la CPU.
- Utilizarea eficientă a sistemului multiprocesor : Dacă avem mai multe fire într-un singur proces, atunci putem programa mai multe fire pe mai multe procesoare. Acest lucru va face execuția procesului mai rapidă.
- Distribuirea resurselor : Resurse precum codul, datele și fișierele pot fi partajate între toate firele dintr-un proces. Notă: Stivele și registrele nu pot fi partajate între fire. Fiecare thread are propriul său stivă și registre.
- Comunicare : Comunicarea între mai multe fire este mai ușoară, deoarece firele au un spațiu de adrese comun. în timp ce în proces trebuie să urmăm câteva tehnici de comunicare specifice pentru comunicarea între cele două procese.
- Debit îmbunătățit al sistemului : Dacă un proces este împărțit în mai multe fire de execuție și fiecare funcție de execuție de execuție este considerată un singur job, atunci numărul de joburi finalizate pe unitatea de timp crește, crescând astfel randamentul sistemului.
Întrebări frecvente pe Thread în sistemul de operare – Întrebări frecvente
Care este starea firului în sistemul de operare?
Există patru stări diferite ale unui fir.
- nou
- rulabil
- blocat
- terminat
De ce firul este mai bun decât procesul?
Threadurile necesită mai puține resurse, în timp ce procesele necesită mai multe resurse. de aceea firul este mai bun decât procesul.
De ce multithreading-ul este mai rapid?
În timp ce procesorul sistemului informatic execută doar o instrucțiune la un moment dat atunci când este utilizat multithreading, diferite fire de execuție din mai multe aplicații sunt efectuate atât de repede încât pare că programele rulează simultan.