260 likes | 343 Views
Curs 3. Procese Fire de execu ție ( Threads ). 1.1. Modelul procesului. Bucătarul ≡ UCP Rețeta ≡ Programul Ingredientele ≡ Date de intrare Citirea rețetei Adăugarea ingredientelor ≡ Procesul Coacerea tortului.
E N D
Curs 3 • Procese • Fire de execuție (Threads)
1.1. Modelul procesului Bucătarul ≡ UCP Rețeta ≡ Programul Ingredientele ≡ Date de intrare Citirea rețetei Adăugarea ingredientelor ≡ Procesul Coacerea tortului Un proces are un program, date de intrare, date de ieșire și o stare.
1.2. Crearea unui proces Principalele evenimente care duc la crearea unui proces sunt: • Inițializarea sistemului • Execuția unui apel de sistem • Cererea unui utilizator • La execuția unor prelucrări pe loturi
1.3. Finalizarea execuției unui proces Se realizează în următoarele condiții: • Normal exit (voluntar) • Error exit (voluntar) • Fatal error (involuntar) • Prin apelul de sistem kill (involuntar)
1.4. Ierarhii de procese • Un proces părinte creează proprii săi fii care la rândul lor pot crea alte procese. • În UNIX ierarhia formată se numește grup de procese. Un proces părinte nu poate dezmoșteni procesul fiu. • În Windows nu există ierarhie de procese. Un proces părinte dezmoștenește procesul fiu prin pasarea handler-ului cu care controlează procesul fiu, unui alt proces.
1.6.1. Implementarea unui proces Câmpurile tabelei de proces
1.6.2. Implementarea unui proces • Fiecare dispozitiv de I/O are asociat un vector de întreruperi care conține adresele procedurilor serviciului de întreruperi. Să presupunem ca procesul1 se află în execuție și are loc o întrerupere hardware. • La momentul întreruperii PC, PSW(program status word) și regiștrii aferenți procesului sunt stocați în stivă. • Computerul trece apoi la adresa specificată de vectorul de întrerupere (din acest moment părăsim zona hardware) • La apelul procedurii, se salvează regiștrii procesului1 în tabela de procese (se realizează în cod de asamblare). • Se golește stiva și SP punctează către o stivă temporară utilizată de rutina procesului2(se realizează în cod de asamblare). • Se execută rutina procesului2 și se apelează o procedură scrisă în limbaj evoluat (C) care realizează task-ul pentru care procesul2 a fost lansat. • Planificatorul de procese preia controlul și decide care proces va fi lansat ulterior procesului2.
2.1. Fire de execuție-Thread (a) Trei procese, fiecare deține propriul thread (b) Un proces cu trei thread-uri
2.2.1. Modelul unui thread • Proprietăți deținute de toate thread-urile unui proces • Proprietăți individuale ale fiecărui thread
2.2.2. Modelul unui thread Fiecare thread deține propria lui stivă
2.3.1.Utilizarea thread-urilor Un procesor word cu trei thread-uri
2.3.2.Utilizarea thread-urilor A multithreaded Web server
2.3.3.Utilizarea thread-urilor Trei modalități de dezvoltare a unui server web
Implementări hibride Multiplexarea ULT pe KLT
De știut... • Definiți procesul. • Cum se creează un proces. • Cum se încheie execuția unui proces. • Caracterizați ierarhia de procese. • Descrieți starea procesului. • Cum se realizează implementarea unui proces. • Ce reprezintă un thread. • Ce înseamnă multithreading. • Descrieți modelul unui thread. • Justificați necesitatea thread-urilor. • Dați exemplu de utilizare a thread-urilor. • Ce reprezintă o mașină cu stări finite? • Care sunt avantajele și dezavantajele thread-urilor? • Descrieți ULT, KLT. • Care sunt avantajele și dezavantajele ULT, KLT? • Caracterizați implementările hibride ale thread-urilor. • Descrieți thread-urile pop-up.
Întrebare Care din următoarele NU este un avantaj al folosirii thread-urilor? • timp de comutare mai rapid • partajare facilă a informației • eliminarea completă a apelurilor de sistem • planificare avantajoasă pe sisteme multiprocesor
Întrebare Care din următoarele nu este un tip de model de thread-uri? • one-to-one • one-to-many • many-to-one • many-to-many
Întrebare Care din următoarele este partajată între thread-uri? • Stiva • Registrele • Handler de semnal • Variabilele globale
Bibliografie • A. Tanembaum, Modern Operating Systems, Prentice Hall 2001, pag 70-97. • A. Silberschatz, P. Galvin, Operating System Concepts, John Wiley and Sons Inc., 2005, pag 81-143(capitolul 3 si 4 fără cap 3.4). • A. Tanembaum, Modern Operating Systems, Prentice Hall, 2007, pag 83-117. • http://elf.cs.pub.ro/so/wiki/cursuri/curs-08 • Gh. Dodescu, Sisteme de operare, Ed. Economică, 2003, pag 37-65.