Scrigroup - Documente si articole

     

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


Contextul procesului - UNIX

linux



+ Font mai mare | - Font mai mic



Contextul procesului - UNIX

Contextul procesului reprezinta continutul spatiului sau de adrese (al utilizatorului), continutul registrilor hardware si structurile de date ale nucleului care au legatura cu procesul. Formal, contextul procesului este format din contextul de nivel utilizator (user-level context), contextul registru (register context), si contextul de nivel sistem (system-level context). Contextul de nivel utilizator cuprinde zonele de text, date, stiva utilizator si memorie partajata care ocupa spatiul virtual de adrese al procesului. Parti ale spatiului virtual de adrese al procesului care nu rezida permanent in memoria principala datorita politicii de swapping sau paginare constituie inca o parte a contextului de nivel utilizator.



Contextul registru cuprinde urmatoarele componente.

Numaratorul de program specifica adresa instructiunii urmatoare pe care o va executa UCP; aceasta este o adresa virtuala in nucleu sau in spatiul de memorie al utilizatorului.

Registrul de stare al procesorului (PS) specifica starea hardware a masinii pe care ruleaza procesul. De exemplu, registrul de stare contine subcampurile care indica rezultatul ultimelor calcule care pot fi zero, pozitive sau negative, sau daca s-a produs o depasire si bitul de transport este setat, si altele. Alte subcampuri importante care se gasesc de obicei in registrul de stare sunt cele care indica nivelul de executie curenta a precesului (pentru intreruperi) si modul de executie curent precum si cel mai recent (cum ar fi nucleu sau utilizator). Subcampurile care dau modul de executie curent determina daca procesul poate executa instructiuni privilegiate si daca poate accesa spatiul de adrese al nucleului.

Pointerul stivei contine adresa curenta a urmatoarei intrari in stiva nucleu sau in stiva utilizator, determinata de modul de executie. Arthitectura masinii dicteaza daca pointerul stivei pointeaza catre urmatoarea intrare libera din stiva sau catre ultima intrare folosita.

In mod similar, masina dicteaza directia de crestere a stivei spre adresele numerice mai mari sau mai mici, dar aceste probleme nu fac obiectul acestei discutii.

Registrii generali contin date generate de proces in timpul executiei. Pentru a simplifica in continuare discutia, sa diferentiem doi registri generali, registrul 0 si 1, folositi aditional pentru transmiterea informatiilor intre proces si nucleu.

Contextul de nivel sistem al procesului are o "parte statica" (primele trei articole ale listei urmatoare) si o "parte dinamica" (ultimele doua componente). Procesul are o parte statica a contextului de nivel sistem pe toata durata existentei sale, dar poate avea un numar variabil de parti dinamice. Partea dinamica a contextului de nivel sistem trebuie sa fie vazuta ca o stiva de cadre context pe care nucleul le introduce si le extrage la aparitia diferitelor evenimente. Contextul de nivel sistem contine urmatoarele componente.

Intrarea procesului in tabela de procese defineste starea procesului descrisa in sectiunea 7.1, si contine informatii de control care sunt permanent accesibile nucleului.

Zona u area a procesorului contine informatii de control care trebuie sa fie accesate numai in contextul procesului. Parametri de control generali cum ar fi prioritatea procesului sunt stocati in tabela de procese pentru ca ei trebuie sa fie accesati in afara contextului procesului.

Intrarile tabelei private de regiuni, tabelele de regiuni si tabelele de pagini, definesc maparea adreselor virtuale in adrese fizice si deci definesc regiunile de text, date si stiva precum si alte regiuni ale procesului. Daca unele procese partajeaza regiuni comune, regiunile sunt considerate parti ale contextului fiecarui proces, pentru ca fiecare proces manipuleaza regiunile independent. O parte a procesului de gestiune a memoriei indica acele zone ale spatiului de adrese virtuale al procesului care nu sunt rezidente in memorie.

Stiva nucleului contine cadrele de stiva ale procedurilor nucleului cand un proces se executa in modul nucleu. Desi procesele executa un cod nucleu identic, ele au copii proprii ale stivei nucleului ce specifica apelurile proprii ale functiilor nucleului. De exemplu, un proces poate invoca apelul sistem creat si apoi trece in asteptare pana cand nucleul ii asigneaza un nou inod, iar alt proces poate invoca apelul sistem read si trece in asteptare pana cand se va face transferul de date de pe disc in memorie. Ambele procese executa functii nucleu, dar ele au stive separate ce contin propriile secvente de apeluri de functii. Nucleul trebuie sa fie capabil sa refaca continutul stivei nucleu pentru reluarea executiei procesului in modul nucleu.

Implementarile de sistem plaseaza de obicei stiva nucleului in zona u area a procesului, dar aceasta este logic independenta si poate exista in zone de memorie alocate independent. Stiva nucleu este goala cand procesul se executa in modul utilizator.

Partea dinamica a contextului de nivel sistem a procesului contine un set de cadre, vizualizate ca o stiva LIFO (last-in-first-out). Fiecare cadru al contextului de nivel sistem contine informatiile necesare pentru refacerea cadrului precedent, incluzand contextul registru al nivelului precedent.

Nucleul introduce un cadru context in stiva cand apare o intrerupere, cand procesul executa un apel sistem, sau cand procesul face o schimbare de context. Nucleul scoate un cadru context din stiva cand revine din tratarea unei intreruperi, cand procesul revine la modul utilizator dupa ce nucleul a executat complet un apel sistem, sau cand procesul face o schimbare de context. Astfel schimbarea de context determina introducerea si scoaterea unui cadru context de nivel sistem: nucleul introduce un cadrul context al vechiului proces si scoate cadrul context al noului proces. Intrarea in tabela de procese memoreaza informatiile necesare pentru refacerea cadrului context curent.

Figura 7.8 Componentele contextului unui proces

Figura 7.8 descrie componentele ce alcatuiesc contextul unui proces. In partea stanga a figurii este prezentata partea statica a procesului.

Aceasta contine contextul de nivel utilizator, care contine zona de text a procesului (instructiunile), zona de date, zona de stiva si zona de memorie partajata (daca exista), si partea statica a contextului de nivel sistem, care contine intrarea in tabela proceselor, zona u area, si intrarile tabelei private de regiuni(informatii de mapare a adreselor virtuale ale contextului de nivel utilizator).

Partea dreapta a figurii prezinta partea dinamica a contextului. Aceasta contine cateva cadre de stiva, iar in fiecare cadru este salvat contextul registru al cadrului anterior si stiva nucleu a aceluiasi cadru. Cadrul 0 al contextului de nivel sistem este o copie a contextului de nivel utilizator; cresterea stivei se face aici in spatiul de adresa al utilizatorului, si stiva nucleu este nula. Sageata pointeaza de la partea statica a contextului de nivel sistem catre cadrul din varful partii dinamice a contextului reprezentand informatii logice stocate in intrarea din tabela de procese pentru a da posibilitatea nucleului sa refaca cadrul context curent al procesului.

Un proces ruleaza in cadrul contextului sau curent. Numarul de cadre context este limitat de numarul de nivele de intrerupere suportat de masina. De exemplu, daca o masina suporta diferite nivele de intrerupere pentru intreruperile software, terminale, discuri, toate celelalte periferice, si ceas, ea suporta 5 nivele de intrerupere, si deci, procesul poate contine maxim 7 cadre context: cate unul pentru fiecare nivel de intrerupere, unul pentru apelurile sistem, si unul pentru nivelul utilizator.

Aceste 7 nivele sunt suficiente sa cuprinda toate cadrurile context chiar daca intreruperile apar in "cea mai rea" secventa posibila, pentru ca o intrerupere a nivelului dat este blocata (datorita faptului ca UCP o amana) in timp ce nucleul satisface intreruperile acelui nivel sau ale unui nivel superior.

Desi nucleul se executa permanent in contextul unui proces, functia logica pe care o executa nu este in mod necesar legata de proces. De exemplu, daca un driver de disc intrerupe masina pentru ca returneaza date, el intrerupe rularea procesului iar nucleul executa rutina de tratare a intreruperii intr-un nou cadru context de nivel sistem al procesului aflat in executie, chiar daca datele apartin unui alt proces. Rutinele de tratare intreruperilor in general nu acceseaza sau modifica partile statice ale contextului procesului, atat timp cat aceste parti nu au legatura cu intreruperea.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1097
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