CATEGORII DOCUMENTE |
Fire de execuTie - modelul firelor de execuTie, utilizarea firelor de execuTie.
Fire de execuTie
Modelul firelor de execuTie
Un proces grupeaza anumite resurse si executa instrucTiuni.
Partea unui proces care Tine de execuTie se numeste fir de execuTie (thread).
Un fir de execuTie are:
un contor de program care Tine evidenTa urmatoarei instrucTiuni de executat;
registre care reTin variabilele curente de lucru;
o stiva in care este reTinuta istoria execuTiei.
Firul de execuTie ruleaza intr-un proces.
Pot exista mai multe fire de execuTie care ruleaza in cadrul aceluiasi proces.
Ele impart spaTiul de adrese, fisierele deschise si alte resurse.
Nu sunt la fel de independente unele faTa de altele cum sunt procesele.
Un fir poate citi, sterge si scrie intreaga stiva a unui alt fir.
Ca si in cazul proceselor, procesorul comuta rapid intre diferitele firele de execuTie.
Sunt create mai multe fire care ruleaza in acelasi proces si partajeaza o mulTime de resurse pt. A coopera.
Ca si procesele se pot afla in una din starile:
in execuTie;
gata de execuTie;
blocat.
Au loc aceleasi tranziTii ca in cazul proceselor.
Un fir de execuTie are propria stiva in care este memorata fiecare procedura apelata din care nu s-a revenit inca. Sunt memorate variabilele locale si adresa de revenire.
In cazul proceselor cu fire de execuTie multiple
Procesul porneste de obicei cu un fir de execuTie care are capacitatea de a crea alte fire de execuTie apeland o procedura biblioteca (ex: thread_create).
In general nu sunt ierarhizate, dar firul parinte primeste un identificator pt. firul fiu.
Terminarea unui fir de execuTie se face tot printrun apel de procedura biblioteca (ex: thread_exit). Dupa aceasta firul dispare si nu mai este planificabil.
In cazul anumitor sisteme cu fire de execuTie multiple, un fir poate astepta terminarea altui fir apelandu-se o procedura (ex: thread_wait).
Nu exista o intrerupere de ceas care sa asigure divizarea timpului, un fir trebuie sa renunTe voluntar la deTinerea procesorului apeland de ex.
thread_yield.
Utilizarea firelor de execuTie
In multe aplicaTii se desfasoara mai multe activitaTi in acelasi timp.
Modelul de programare devine mai simplu daca o astfel de aplicaTie este descompusa in mai multe fire de execuTie care ruleaza pseudo-paralel.
Spre deosebire de procese firele de execuTie partajeaza acelasi spaTiu de adrese.
Sunt mai usor de creat si de distrus decat procesele pt. ca nu au resurse atasate.
In cazul existenTei mai multor operaTii de calcule pe procesor si mai multor operaTii de I/E, firele permit suprapunerea acestora marind viteza de execuTie a aplicaTiei.
Exemplu - procesor de texte:
Presupunem ca utilizatorul scrie o carte. Pentru a gestiona schimbarile eficient se foloseste un singur fisier.
Presupunem ca sterge doua randuri de pe prima pagina si vrea sa vada imediat pagina n.
Un singur fir de execuTie intarzieri din cauza reformatarii textului.
Daca procesorul de texte este un program cu doua fire de execuTie:
un fir interacTioneaza cu utilizatorul;
celalalt se ocupa de reformatare in fundal;
imediat ce propoziTia a fost stearsa de pe prima pagina firul de execuTie interactiv comunica firului de formatare sa reformateze intreaga carte;
intre timp firul interactiv continua sa astepte evenimente de la tastatura si mouse si raspunde comenzilor simple;
firul de formatare lucreaza in fundal.
Se poate introduce si un al treilea fir care salveaza fisierul automat pe disc la un interval de cateva minute.
Un singur fir: asteptare pana cand este salvat fisierul sau intreruperi.
Sunt alese trei fire de execuTie si nu trei procese distincte pentru ca se fac operaTii asupra aceluiasi document.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1016
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved