Anda di halaman 1dari 14

Arhitectura sistemului de operare.

Proces
 

Unitatea de învăţare nr. 10

Arhitectura sistemului de operare. Proces


 

Cuprins
Obiectivele unităţii de învăţare nr. 10
Proces
Task‐ul
Driver‐ul
Servici-ul
Răspunsuri şi comentarii la întrebările din testele de autoevaluare

OBIECTIVELE unităţii de învăţare nr. 10


Principalele obiective ale Unităţii de învăţare nr. 10 sunt:
 Familiarizarea cu procesele în sistemul de operare
 Familiarizarea cu task-urile
 Familiarizarea cu drivere-le
 Familiarizarea cu serviciul
Arhitectura sistemului de operare. Proces
 
Proces

Procesul este unitatea de bază pe care o execută sistemul de operare. Prin
noțiunea de proces, se încapsulează arii de memorie dedicate uneia sau mai multor
aplicații atașate procesului. De asemeni, sistemul de operare alocă unui proces
timp de execuție la procesorul sistemului, în funcție de importanța acestuia.
Procesul, pentru execuție utilizează algoritmi implementați în una sau mai multe
aplicații. Această aplicație sau aceste aplicații se execută pe mașina fizică1 în
paralel în intervalele de timp de execuție alocați procesului. Aplicațiile accesează
resursele sistemului de calcul prin intermediul driverelor sistemului de operare.
Esențial este că mai multe aplicații pot accesa aceeși resursă fizică simultan;
partajare accesului la resursă o realizează driver‐ul. Fiecare aplicație, formată din
coduri instrucțiune, se execută serial (instrucțiune după instrucțiune) în
conformitate cu algoritmul implementat prin program. Execuția aplicațiilor dintr‐
un proces are ca scop realizarea sau controlul unei sarcini.
Astfel fiecare proces are atașată o aplicație (sau mai multe module de aplicație),
denumite și task. Această aplicație se execută în momentul în care procesul este
activ. Aplicația poate fi creeată astfel încât să se execute serial, într‐un singur fir de
execuție, sau poate fi creeată pe mai multe fire de execuție în paralel. Un fir de
execuție se numește thread. Astfel un task poate fi executat monothread (adică
într‐un fir de execuție) sau în mai multe fire de execuție sau multithreadig.
Important este faptul că modulele care se execută în paralel folosesc aceeași zonă
de date pentru memoria de program (memoria de cod) și de asemeni pot dispune
și de o arie de date comună. De asemeni, aceste module de program comunică între
ele folosind mijloace de comunicație interproces specifice sistemului de operare.
Fiecare aplicație atașată procesului dispunde o arie de date pentru zonele de
date alocate pentru execuția aplicației. Această arie de date este organizată într‐un
sau mai mult segmente de memorie. De asemeni fiecare aplicație dispune de o zonă
de memorie atașată pentru memoria stivă, organizată într‐un segment stivă. Toate
segmentele de memorie alocate pentru date sunt organizate la nivel de proces în
aria de date. Iar toate segmentele de memori alocate pentru stivă sunt organizate,
la nive de proces, în aria de memorie pentru stivă.
În Fig.  1 am reprezentat harta de organizare a memoriei pentru proces care are
un singur task. Astfel se observă că, în memoria sistemului, procesul are o arie de
memorie alocată. Această arie de memorie este organizată în:
‐ aria de cod, ce conține segmentele de cod, în acest caz codul pentru task‐ul
TASK_1 (CSS_1);
                                                            
1
 Mașină fizică = sistemul numeric de comandă și control sau calculator 
Arhitectura sistemului de operare. Proces
 

 
Fig. 1 

‐ aria de date inițializate, care conține segmentele de date inițializate, caz în


care dispunem de segmenul de date al task‐ului TASK_1, DSS_1;
‐ aria de date neinițializate, care conține segmentele de date neinițializate, caz
în care dispunem de segmenul de date al task‐ului TASK_1, BSS_1 și
‐ aria de stivă, care conține segmentele de stivă, caz în care dispunem de stivă
al task‐ului TASK_1, SS_1

 
Fig. 2


Arhitectura sistemului de operare. Proces
 
Figura Fig.  2 am reprezentat harta de organizare a memoriei pentru proces
compus din trei task. Astfel se observă că, în memoria sistemului, procesul are o
arie de memorie alocată. Această arie de memorie este organizată în:
‐ aria de cod, ce conține segmentele de cod, în acest caz au fost alocate
segmente de cod pentru fiecare task (CSS_1, CSS_2, CSS_3);
‐ aria de date inițializate, care conține segmentele de date inițializate, caz în
care dispunem de segmentele de date ale celor trei task‐uri DSS_1, DSS_2,
DSS_3;
‐ aria de date neinițializate, care conține toate segmentele de date
neinițializate BSS_1, BSS_2, BSS_3 și
‐ aria de stivă, care conține segmentele de stivă, caz în care dispunem de
stivele fiecărui task în parte SS_1, SS_2, SS_3.

 
Fig. 3

În multe cazuri, în sistemul de operare sunt procese care pornesc același modul de
cod de mai multe ori, caz prezentat în exemplul din Fig.  3. Se observă că task‐urile
TASK_1 și TASK_2 folosesc același modul de cod, CSS_1. Task‐ul TASK_3, folosește
un alt modul de cod, CSS_3. Important este faptul că sistemul de operare nu alocă
segmente de cod separate pentru TASK_1 și TASK_2, el folosind același modul de
cod. In schimb fiecare task dispune de zone independente de stivă SS_1, SS_2 și
Arhitectura sistemului de operare. Proces
 
SS_3, acestea fiind atașate fiecărui task în parte. Modulele de date neinițializate
(BSS_1, BSS_2, BSS_3) și inițializate (DSS_1, DSS_2, DSS_3) sunt atașate fiecărui
task. Dacă (spre exemplul) între task‐urile TASK_2 și TASK_3 există necesitatea
partajării unei arii de date (de exemplul segmentul BSS_4), atunci acest segment va
fi alocat în memoria sistemului și va face parte din memoria alocată acestui proces
(PROCES_1). Aceast segment de memorie, BSS_4 va fi accesibil task‐urilor TASK_2
și TASK_3. Important, este faptul că, task‐ul TASK_1 nu are permisivitate în această
zonă de memorie.
În sistemul de operare, procesele sunt identificate prin nume și printr‐un
identificator unic (un număr unic alocat). Numele procesului poate fi același nu
numele din fișierul în care este stocată aplicație atașată sau poate fi altul.

De exemplul:  
‐ fișierul ce conține programul “Microsoft Word” se numește “WINWORD.EXE” iar procesul se va 
numi tot “WINWORD.EXE”; 
‐ fișierul ce conține programul “Apache 2.4” se numește “httpd.exe” iar procesul se va numi 
“Apache 2.4”; 
‐ fișierul ce conține programul “Internet Explorer 6” se numește “IEXPLORE.EXE” iar procesul se va 
numi “IEXPLORE.EXE”. 

Identificatorul procesului este generat de sistemul de operare, în momentul
în care procesul este încărcat în memoria sistemului. Astfel un proces încărcat va
căpăta un identificator, dacă procesul se va fi opri, procesul va fi eliberat din
memoria sistemului. Dacă se va reîncărca, atunci el va primi un identificator nou.
Starea proceselor într‐un sistem de operare, poate fi urmărită utilizând
programe utilitare specializate.

De exemplul pentru sistemul de operare Microsoft Windows, există utilitarul Task Manager, 
utilitar înglobat în sistemul de operare 

 
Fig. 4

Arhitectura sistemului de operare. Proces
 

Pentru sisteme compatibile POSIX, există un utilitar denumit “Process Status”, utilitarm executat 
cu linia de comandă ps 

 
Fig. 5 

 
Într‐un sistem de operare există procese formate dintr‐un singur task (Fig. 6)

Fig. 6

și procese formate din mai multe task‐uri (ce pornesc de la aceeași aplicație sau
nume sau din aplicații diferite) –vezi Fig. 7‐.

Fig. 7 

Arhitectura sistemului de operare. Proces
 
Procesele într‐un sistem de operare au două nivele de securitate2 pentru
execuție:
‐ nivel utilizator
‐ nivel sistem.
Procesele de nivel utilizator sunt procese care se execută din cont de utilizator.
Aceste procese nu au acces în mod direct la resursele sistemului (porturi, interfețe
sau blocuri de memorie). Aplicațiile care sunt atașate acestor procese pentru acces

 
Fig. 8 

la resursele sistemului vor folosi drivere (Fig.  8). Astfel o aplicație atașata unui
proces (task) se conectează la un driver, atașat unei plăci electronice, pentru a
comunica cu modulul electronic. Toate datele transferate între modulul electronic
și aplicație sunt verificate și validate de către driver. Driver‐ul va ordona și
sincroniza accesul task‐urilor la modulul electronic. Aceste procese sunt formate
din una sau mai multe aplicații. Fiecare aplicație se numește task și rulează într‐un
spațiu de memorie specific și propiu ei, spațiu de memorie fiind gestionat de
sistemul de operare.
Procesele de nivel sistem sunt procese care se execută din cont de

  Fig. 10
Fig. 9


                                                            
2
 A nu se confunda cu nivelele de securitate de access la memorie. 
Arhitectura sistemului de operare. Proces
 
administrator. Aceste procese sunt procese ce au aces direct la resursele
sistemului (porturi ‐Fig.  9‐, zone de memorie ‐Fig.  10‐, proceduri de configurare a
sistemului de operare).
Procesele care se execută din cont de administrator se clasifică în:
‐ task‐uri de sistem
‐ drivere
‐ servicii
 
Arhitectura sistemului de operare. Proces
 
Task-ul

Task‐ul este entitatea de bază, a procesului, care se execută într‐un sistem de
operare în timp real. El se execută serial (instrucțiune după instrucțiune).
Intr‐un sistem de operare există două tipuri de task‐uri:
‐ task‐ul utilizator;
‐ task‐ul de sistem.
Un task poate fi executat in sistemul de operare, direct la pornire acestuia sau
poate fi pornit dupa încărcarea sistemului de operare.
Un task utilizator este un task care rulează în contextul unui proces din
credențiale de utilizator. Acest task nu accesează direct resursele sistemului.
Un task de sistem este un task care rulează în contextul unui proces din
credețiale de administrator. Mai mult decât atât, în sistemele compatibile POSIX, se
impune pentru ca un task să poată rula ca administrator să fie compilat cu un
switch special care determină generarea unui task de sistem (se numește și task de
nivel 03 sau task de nivel 14).
Structura unui task pentru un sistem de operare în timp real non‐preemtive
este alcătuită dintr‐o funcții de inițializare și o buclă infinită, buclă în care se
execută corpul task‐ului.

De exemlul, un task scris în limbajul “C”, pentru sisteme compatibile UNIX‐POSIX: 
void main( void) {
init();
while( 1) {
………
}
exit ( 0);
}
 
unde, init() este funcția de inițializare, după care urmează corpul task‐ului într‐o buclă infinită. 

Pentru sisteme de operare de tip preemtive, atunci există o funcție principală și o
funcție de gestionare a mesajelor. Funcția de gestionare a mesajelor este apelată de
sistemul de operare. Programatorul va avea grijă ca această funcție sa nu blocheze
sistemul de operare, iar după execuția ei, funcția va trebui să revină în sistemul de
operare.

                                                            
3
 Task‐ul de nivel 0 este task‐ul ce are drepturi de execuție a operațiilor de intrare/ieșire și de gestiune directă a memoriei 
sistemului de calcul 
4
 Task‐ul de nivel 1 este task‐ul ce are drepturi de execuție a operațiilor de intrare/ieșire 
Arhitectura sistemului de operare. Proces
 


Arhitectura sistemului de operare. Proces
 




Arhitectura sistemului de operare. Proces
 

Driver-ul

Driver‐ul este task‐ul de sistem care se execută într‐un sistem de operare în
timp real pentru a asigura gestiunea operațiilor de acces la un modul electronic
conectat la un sistem de calcul. De asemeni driver‐ul gestionează ordinea de acces
a task‐urilor utilizator pentru conectarea la dispozitivul electronic.
Acest task nu se oprește nici‐odată, decât dacă echipamentul hardware este
dezinstalat din sistem, sau are o configurație neconformă sau dacă se defectează.


Servici-ul

Seriviciul este task‐ul de sistem care se execută într‐un sistem de operare în
timp real pentru a asigura accesul la resursele [software] ale sistemului de
operare.
Acest task nu se oprește nici‐odată, decât dacă sistemul de operare sau
utilizatorul cu drept de administrator cere oprirea acestui serviciu.

Arhitectura sistemului de operare. Proces
 

De reţinut!
‐ Procesul este unitatea de bază pe care o execută
sistemul de operare.
‐ Fiecare proces are atașat un task
‐ Procesele într‐un sistem de operare au două nivele de
securitate pentru execuție: nivel utilizator și nivel
sistem.
‐ Task‐ul este entitatea de bază, a procesului, care se
execută într‐un sistem de operare în timp real. El se
execută serial (instrucțiune după instrucțiune).
‐ Driver‐ul este task‐ul de sistem care se execută într‐un
sistem de operare în timp real pentru a asigura
gestiunea operațiilor de acces la un modul electronic
conectat la un sistem de calcul
‐ Seriviciul este task‐ul de sistem care se execută într‐un
sistem de operare în timp real pentru a asigura accesul
la resursele sistemului de operare.

Test de autoevaluare
1. Ce este procesul?
2. Cum se identifică un proces în sistemul de operare?
3. Care sunt nivele de execuție a unui proces?
4. Ce este un proces utilizator?
5. Ce este un proces sistem?
6. Ce este task‐ul?
7. Ce este driver‐ul?
8. Ce este serviciul?

Răspunsuri la întrebările din testele de


autoevaluare
1. Procesul este unitatea de bază pe care o execută sistemul
de operare. Prin noțiunea de proces, se încapsulează arii
de memorie dedicate uneia sau mai multor aplicații
atașate procesului.
2. Un proces se identifică prin nume și identificator.
3. Nivele de execuție a unui proces sunt: nivel utilizator și
nivel sistem.
4. Procesele de nivel utilizator sunt procese care se execută
Arhitectura sistemului de operare. Proces
 
din cont de utilizator. Aceste procese nu au acces în mod
direct la resursele sistemului (porturi, interfețe sau
blocuri de memorie).
5. Procesele de nivel sistem sunt procese care se execută din
cont de administrator. Aceste procese sunt procese ce au
aces direct la resursele sistemului.
6. Task‐ul este entitatea de bază, a procesului, care se
execută într‐un sistem de operare în timp real. El se
execută serial (instrucțiune după instrucțiune).
7. Driver‐ul este task‐ul de sistem care se execută într‐un
sistem de operare în timp real pentru a asigura gestiunea
operțiilor de acces la un modul electronic conectat la un
sistem de calcul.
8. Seriviciul este task‐ul de sistem care se execută într‐un
sistem de operare în timp real pentru a asigura accesul la
resursele [sofwtare] ale sistemului de operare.

Bibliografie
Morgan, D. “Numerical Methods – Real Time and Embedded Systems
Programming”, M&T Books, 1992
Walls, C., “Embedded Software: The Works”, O’Relly Ed., 2006
Walls, C., “Real Time Concepts for Embedded Systems”, R&D Books,
2000
Ledin, J., “Embedded Control Systems in C/C++; An Introduction on
Software Developers Using Matlab”, CMP Books, 2004