Documente Academic
Documente Profesional
Documente Cultură
de Operare
2012 - 2017
Conf. dr. ing. Stefan Mocanu
Conf. dr. ing. Mihnea Moisescu Curs 5
Cuprins
1. Fire de executie
Fire de executie
Fire de executie
Fire de executie
Definitie
Un fir de executie (thread) este cea mai mica entitate sau
secventa de instructiuni care poate fi identificata si gestionata
de sine statator de catre planificatorul UC din fiecare sistem
de operare si executata de catre CPU.
Fire de executie
Single threading Multi threading
Solaris
MS-DOS
Solaris,
Unix,
NT, Linux
vechi !
Ref. A
Fire de executie
Fire de executie
a=5;
T F
a=5; a=5;
a=a+1; a=5;
Fire de executie
Thread kernel
a=5;
P
Thread initial Thread utilizator
c_t1
a=5; P T1
a=a+1; a=6;
Creare de thread-uri
Fire de executie
Fire de executie
Fire de executie
Fire de executie
Caracteristici thread-uri:
- nu sunt independente, pot exista doar in contextul unui proces
- nu au spatiu individual de memorie, partajeaza memoria procesului
gazda;
- nu au spatiu individual de adrese;
- au nevoie de mai putine informatii de stare decat procesele;
- nu au nevoie de mecanisme de comunicatie, au acces comun la
variabilele globale ale procesului gazda;
- necesita mecanisme de sincronizare pentru a evita producerea unor
dezastre
- comutarea intre thread-uri, inchiderea lor rapide
Fire de executie
Tipuri de thread-uri
Thread de tip kernel:
- entitate a kernelului si SO gestionata de programatorul UC;
- ruleaza in cadrul unui proces;
- utilizatorul/programatorul nu o poate controla, lucreaza cu CPU;
Fire de executie
Modele de threading
N:1 (many to one) - Mai multe thread-uri utilizator sunt mapate catre
un singur thread kernel;
- Kernelul nu suporta multi-threading; acesta este
realizat si gestionat la nivelul utilizatorului;
- Blocarea unui thread => blocarea intregului
proces (program)
- Un thread kernel -> un singur CPU fizic => un
program nu va putea fi executat pe mai multe
procesoare (chiar daca exista !)
Fire de executie
Modele de threading
Fire de executie
Modele de threading
Modele de threading
Model hibrid
- Caz particular de model M:N;
- Combinatie intre modelul 1:1 si modelul
M:N;
- Ambele modele pot fi utilizate in functie
de situatie
Fire de executie
Fire de executie
Variabile conditionale
- nu au valoare propriu-zisa;
- de interes este starea lor, indica aparitia unui eveniment;
- permit blocarea sau deblocarea thread-urilor;
- mai rapide decat mutex-urile pentru ca NU se testeaza
starea lor.
1. Procese zombie
- s-a discutat despre ele in cursurile anterioare !
2. Interblocari
PUC
P1 P2
X X
Stari anormale ale proceselor
3. Infometare
P1 2
100 P2
10 P3
4 P4
Ref. 0
4. Bucla infinita
- Cauze ?
- Descrieti in ce situatii ati intalnit aceasta stare anormala
5. Proces blocat
- Procesul inceteaza sa raspunda, insasi inchiderea fortata devine dificila.
- Ex. Windows: Non Responding
Planificarea Unitatii Centrale
Necesitate:
FCFS
SJF
Planificarea Unitatii Centrale