Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Starile si tranzitiile proceselor - UNIX

linux



+ Font mai mare | - Font mai mic



Starile si tranzitiile proceselor   - UNIX

Asa cum s-a aratat in capitolul 2, timpul de viata al unui proces poate fi conceptual divizat intr-un set de stari care descriu procesul. Urmatoarea lista contine setul complet de stari ale procesului:



Procesul este in executie in modul utilizator.

Procesul este in executie in modul nucleu.

Procesul nu este in executie dar este gata pentru executie indata ce

nucleul il planifica.

Procesul este in asteptare si se gaseste in memoria principala.

Procesul este gata de executie, dar incarcatorul( procesul 0) trebuie

sa incarce procesul in memoria principala inainte ca nucleul sa-l

poata planifica pentru executie. Capitolul 12 va reanaliza aceasta

stare intr-un sistem cu paginare.

Procesul este in asteptare si incarcatorul a transferat procesul la un

dispozitiv de memorare secundar facand loc pentru alte procese in

memoria principala.

Procesul se intoarce din modul nucleu in modul utilizator, dar

nucleul il intrerupe si face o comutare de context pentru a planifica

alt proces. Diferenta intre aceasta stare si starea 3 ("gata de

executie") va fi descrisa ulterior.

Procesul este de curand creat si se afla intr-o stare de tranzitie;

procesul exista dar nu este gata de executie si nici in asteptare.

Aceasta este o stare de inceput pentru toate procesele, cu exceptia

procesului 0.

Procesul a executat apelul sistem exit si este in starea zombie.

Procesul nu va mai exista mult, dar el lasa o inregistrare ce

contine codul de iesire si cateva statistici de timp pentru a fi

folosite de procesul parinte. Starea zombie reprezinta o stare

finala a procesului.

Figura 7.1 contine diagrama completa a tranzitiilor de stare ale unui proces. Se considera un proces tipic care strabate complet modelul tranzitiilor de stare. Evenimentele descrise sunt artificiale intrucat proceselor nu li se intampla intotdeauna asa, dar ele ilustreaza diferitele tranzitii de stare. Procesul intra in starea "creare proces " cand  procesul parinte executa apelul sistem fork si trece eventual intr-o stare in care este gata de executie (3 sau 5). Pentru simplificare, presupunem ca procesul intra in starea "gata de executie in memorie". Planificatorul de procese va alege eventual procesul pentru executie si va intra in starea "executie in mod nucleu", unde partea sa de apel sistem fork este incheiata.

Cand procesul termina de executat apelul sistem, el poate trece in starea "executie in mod utilizator". Dupa o perioada de timp, ceasul sistem poate intrerupe procesorul si procesul intra iar in starea "executie in mod nucleu". Cand rutina de tratare a intreruperii de ceas termina de tratat intreruperea de ceas, nucleul poate decide sa planifice un alt proces pentru executie, astfel primul proces intra in starea "intrerupt" si celalalt se va executa. Starea "intrerupt" este intr-adevar aceeasi ca si starea "gata de executie in memorie" (linia punctata din figura ce uneste cele doua stari subliniaza echivalenta lor), dar ele sunt descrise separat pentru a accentua ca procesul care se executa in modul nucleu poate fi intrerupt numai cand este pe punctul de a se intoarce la modul utilizator. Ulterior, nucleul poate schimba un proces din starea "intrerupt" daca este necesar.

In cele din urma, planificatorul va alege procesul pentru executie si acesta se va intoarce la starea "executie in modul utilizator". Cand un proces executa un apel sistem, el paraseste starea "executie in modul utilizator" si intra in starea "executie in modul nucleu". Presupunem ca apelul sistem necesita o operatie de I/O de pe disc si procesul trebuie sa astepte pentru ca aceasta sa se termine. El intra in starea "asteptare in memorie", punandu-se singur in asteptare pana cand este anuntat ca operatia I O s-a terminat. Ulterior cand operatia I/O se termina, hardware-ul intrerupe UCP si rutina de tratare a intreruperii trezeste procesul, determinand trecerea lui in starea "gata de executie in memorie".

Presupunem ca sistemul executa mai multe procese care nu au loc simultan in memoria principala si programul incarcator evacueaza procesul pentru a face loc altui proces care este in starea "gata de executie pe disc". Cand este evacuat din memoria principala procesul intra in starea "gata de executie pe disc". In cele din urma incarcatorul alege procesul care este cel mai potrivit sa se incarce in memoria principala si acesta reintra in starea "gata de executie in memorie". Planificatorul va alege eventual procesul pentru executie si acesta va intra in starea  "executie in modul nucleu" si isi va continua executia. Cand un proces se termina, el invoca apelul sistem exit, astfel trece in starea "executie in modul nucleu" si in final in starea "zombie".

Procesul are controlul asupra catorva tranzitii de stare la nivelul utilizator. In primul rand, procesul poate crea alte procese. Totusi, starea din care intra procesul din starea "creare proces" ( "gata de executie in memorie" sau "gata de executie pe disc") depinde de nucleu: procesul nu are controlul asupra acestor tranzitii de stare. In al doilea rand, un proces poate face apeluri sistem pentru trecerea din starea "executie in modul utilizator" in starea "executie in modul nucleu" si intra in nucleu la dorinta sa. Totusi, procesul nu are controlul asupra momentului cand va reveni in nucleu; evenimentele pot dicta ca acesta sa nu se mai intoarca niciodata dar procesul poate intra in starea "zombie" (vezi sectiunea 8.2 la semnale). In sfarsit procesul se poate termina la cererea sa, dar cum s-a precizat inainte, evenimentele externe pot dicta terminarea unui proces fara invocarea explicita a apelului sistem exit. Toate celelalte tranzitii de stare urmaresc un model rigid codificat in nucleu, reactionand la evenimente in mod previzibil conform regulilor formulate

in acest capitol si urmatoarele.

 

Figura 7.1 Diagrama tranzitiei de stare a procesului

Doua structuri de date ale nucleului descriu starea unui proces: intrarea in tabela de procese si u area. Tabela de procese contine campuri care trebuie sa fie intotdeauna accesibile nucleului, dar u area contine campuri care trebuie sa fie accesibile numai la executia procesului. Deci nucleul aloca spatiu pentru u area numai cand creeaza un proces: el nu are nevoie de structuri u area pentru intrarile din tabela de procese care nu sunt asignate unor procese.

Campurile din tabela de procese sunt urmatoarele:

Campul de stare care identifica starea procesului.

Intrarea in tabela de procese contine campuri care permit nucleului sa localizeze procesul si zona sa u area in memoria principala sau pe un dispozitiv extern. Nucleul foloseste informatia pentru a face o comutare de context, cand acesta trece din starea gata de executie in memorie in starea executie in modul nucleu sau din starea intrerupt in starea executie in modul utilizator. In plus, el foloseste informatia cand incarca (pagineaza) procese in si din memoria principala (intre cele doua stari "in memorie" si cele doua stari "pe disc ". Intrarea in tabela de procese contine deasemenea un camp care da marimea procesului, astfel incat nucleul stie cat spatiu trebuie sa aloce procesului.

Mai multi identificatori ai utilizatorului (utilizator ID sau UID) determina diferite drepturi pentru proces. De exemplu, campurile utilizator ID descriu seturile de procese care pot transmite semnale altor procese asa cum va fi explicat in capitolul urmator.

Identificatorii procesului (proces ID sau PID) specifica relatia dintre procese. Aceste campuri ID sunt setate cand procesul intra in starea creare proces in urma apelului sistem fork.

Intrarea in tabela de procese contine un descriptor de evenimente cand procesul este in starea "asteptare ". Acest capitol ii va examina folosirea in algoritmii pentru sleep si wake-up.

Parametri de planificare permit nucleului sa determine ordinea in care procesele trec in starile executie in modul nucleu si in starea executie in modul utilizator.

Campul semnal retine semnalele trimise unui proces dar care nu sunt inca tratate (sectiunea 8.2).

Diferite contoare de timp dau timpul de executie al procesului si utilizarea resurselor nucleului, timpi folositi pentru contabilizarea procesului si pentru calcularea prioritatii de planificare a procesului. Campul contor de timp setat de utilizator este folosit pentru a transmite un semnal de alarma unui proces (sectiunea 9.3).

U area contine urmatoarele campuri ce caracterizeaza starile procesului:

Un pointer spre tabela de procese identifica intrarea ce corespunde zonei u area.

Identificatorii de utilizator real si efectiv determina diferite privilegii permise procesului cum ar fi drepturile de acces la fisier (vezi sectiunea 8.6).

Campurile contor de timp inregistreaza timpul pe care procesul (si descendentii lui) il consuma in executie in modul utilizator si in modul nucleu.

O zona de reactie la semnale indica cum doreste procesul sa reactioneze la semnale.

Campul de control al terminalului indica terminalul de intrare asociat procesului, daca exista.

Un camp de eroare inregistreaza erorile intalnite in timpul apelului sistem.

Un camp valoare de revenire contine rezultatul apelurilor sistem.

Parametrii I/O descriu cantitatea de date transferate, adresa zonei de date sursa (tinta) din spatiul utilizatorului, deplasamentul in fisier si altele.

Directorul curent si radacina curenta descriu sistemul de fisiere in care se afla procesul.

Tabela descriptorilor de fisiere utilizator inregistreaza fisierele pe care procesul le-a deschis.

Campurile de limitare restrictioneaza marimea procesului si dimensiunea unui fisier pe care il poate scrie.

Campul permisiunilor de acces mascheaza permisiunile de acces stabilite pentru fisierele create de proces.

Aceasta sectiune a descris tranzitiile de stare ale proceselor la un nivel logic. Fiecare stare are caracteristici fizice gestionate de nucleu, in special spatiul de adrese virtuale al procesului.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1272
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved