Sunteți pe pagina 1din 50

Cuprins

ETTI-SO
11
PROCESE SI
FIRE DE
EXECUTIE
Proiect SO
Autori: Dobroiu Madalina 431A;Fratila Dragos Sorin 433A;Petrache Victor
431A;Petrescu Mihai Cristian 433A;Ra! "ogdan 431A; Stoian Adriana 431A
Capitolul 1: Concepte fundamentale- Rata Bogdan(431A) 4
1.1.Notiuni introductive############################################################################################## 4
1.2.Fire de e$ecutie############################################################################################## 4
1.3.Functionalitatea unui fir de executie########################################################################## %
1.4.Starile proceselor################################################################################################# &
1.5.Comunicarea intre procese##################################################################################### &
1.6.Semofarizare si monitorizare################################################################################### '
1.7.odelele de threading suportate de sistemele !in32#####################################################'
1.".Calculul performantelor######################################################################################### (
Capitolul 2 Apelurile de sistem de gestiune a proceselor n Linu- !etrescu "i#ai Cristian
(433A) 1$
2.1.Sistemul de operare #inux#################################################################################### 1)
2.1.1.Nucleul###################################################################################################### 1)
2.1.2.S$ell%ul###################################################################################################### 14
2.1.3.Sistemul de fisiere######################################################################################## 14
2.1.4.&estiunea proceselor##################################################################################### 1*
2.1.5.Crearea unui proces###################################################################################### 1%
2.1.6.Comenzi pentru 'estiunea proceselor (N)* #inux################################################1&
Capitolul 3: Apelurile A!% pentru gestionarea &o'-urilor si ale proceselor - (ictor !etrac#e
(431A) 1)
3.1 Ce este un +,)-################################################################################################# 1(
3.2 .)N/0.S +,)################################################################################################ 1(
3.3 #)N(* 1ernell +,)########################################################################################### +)
Capitolul 4: Comparatie intre implementarea proceselor si firelor de eecutie la Linu si
*indo+s- "adalina ,o'roiu(431A) 22
4.1.,rocese 2n #inux################################################################################################ ++
4.1.1 )mplementarea in #inux################################################################################# ++
4.1.2.Crearea proceselor 3###################################################################################### +4
4.1.3.4ularea unui pro'ram executa5il######################################################################+%
4.1.4.+fi6a unui copac de procese############################################################################ +%
4.1.5. 7nlocuirea ima'inii unui proces#######################################################################+&
4.1.6.+6teptarea termin8rii unui proces######################################################################+&
4.1.7.9erminarea unui proces################################################################################## +(
4.1.".Copierea descriptorilor de fi6ier########################################################################+(
4.1.:.o6tenirea descriptorilor de fi6ier dup8 opera;ii for<=exec#######################################+(
4.1.1>. ?aria5ile de mediu##################################################################################### 3)
4.1.11. /epanarea unui proces################################################################################3)
4.2 ,rocese 2n .indo!s####################################################################################### 31
4.2.1.)mplementarea in .indo!s############################################################################# 31
4.2.2.Crearea unui proces 3##################################################################################### 3+
4.2.3.+6teptarea termin8rii unui proces######################################################################34
4.2.4.9erminarea unui proces################################################################################## 3*
4.2.5.?aria5ile de mediu######################################################################################## 3%
Capitolul -. /mularea programelor "0 1 ,20- Adriana 0toian(431A) 33
5.1 Notiuni /0S#################################################################################################### 3&
5.2 /efinitie emulatoare########################################################################################### 3&
5.3 @mulatoare S%/0S########################################################################################## 3'
5.4 @xemple de emulatoare S%/0S###########################################################################3'
1. /0SAox######################################################################################################## 3'
2. 4ealSpec v>.:6.16############################################################################################ 3(
Capitolul 4 : !rocesul de 'ootare a sistemului de operare: comparatie *indo+s si Linu- 5ratila
,ragos 0orin( 433 A) 41
6.1.Aootarea sistemului de operare #inux######################################################################41
6.1.1.,rocesul de initializare B)N)9 ,rocessC###############################################################4+
6.1.2.Fisierele de initializare din =etc=initta5################################################################4+
6.1.3.Fisierele din =etc=rc.d=rc.sDsinit#########################################################################4+
6.1.4./irectorul =etc=rc.d=init.d################################################################################ 43
6.1.5.Nivelele de executie ale #inux%ului###################################################################44
6.1.6.odificarea nivelelor de executie#####################################################################44
6.1.7./irectoarele nivelelor de executie#####################################################################44
6.1.".Sc$im5area nivelului curent de executie#############################################################4*
6.1.:.@liminarea unui serviciu dintr%un nivel de executie################################################4%
6.1.1>.+dau'area de servicii unui nivel de executie######################################################4%
6.2. ,rocesul de 5ootare .indo!s############################################################################### 4%
6.2.1..indo!s 1.x=2.x########################################################################################## 4%
6.2.2..indo!s 3.x=:x########################################################################################### 4%
6.2.3..indo!s N9=2>>>=*,=Server 2>>3##################################################################4&
6.2.4..indo!s ?ista=Server 2>>"=.indo!s 7#############################################################4'
Capitolul 1: Concepte fundamentale- Rata Bodan!"#1$%
1.1.6otiuni introducti7e
Firele de executie fac trecerea de la pro'ramarea secventiala la pro'ramarea
concurenta. (n pro'ram secvential reprezinta modelul clasic de pro'ram3 are un inceputE o
secventa de executie a instructiunilor sale si un sfarsit. Cu alte cuvinteE la un moment dat
pro'ramul are un sin'ur punct de executie. (n pro'ram aflat in executie se numeste proces.
(n sistem de operare monotas<in'E cum ar fi fi S%/0SE nu este capa5il sa execute decat un
sin'ur process la un moment datE in timp ce un sistem de operare multitas<in'E cum ar fi
(N)* sau .indo!sE poate rula oricate procese in acelasi timp FconcurentGE folosind diverse
strate'ii de alocare a procesorului fiecaruia dintre acestea. +m reamintit acest lucru deoarece
notiunea de fir de executie nu are sens decat in cadrul unui sistem de operare multitas<in'. (n
fir de executie este similar unui proces secventialE in sensul ca are un inceputE o secventa de
executie si un sfarsit. /iferenta dintre un fir de executie si un proces
consta in faptul ca un fir de executie nu poate rula independent ci
tre5uie sa ruleze in cadrul unui proces.
(n pro'ram isi poate defini insa nu doar un fir de executie ci
oricateE ceea ce inseamna ca in cadrul unui proces se pot executa
simultan mai multe fire de executieE permitand efectuarea concurenta
a sarcinilor independente ale acelui pro'ram.
(n fir de executie poate fi asemanat cu o versiune redusa a
unui procesE am5ele ruland simultan si independent pe o structura
secventiala formata de instructiunile lor. /e asemeneaE executia
simultana a firelor in cadrul unui proces este similara cu executia
concurenta a proceselor3 sistemul de operare va aloca procesorul
dupa o anumita strate'ie fiecarui fir de executie pana la terminarea
lor. /in acest motiv firele de executie mai sunt numite si procese
usoare.
Care ar fi insa deose5irile intre un fir de executie si un
proces - )n primulE rand deose5irea maHora consta in faptul ca firele
de executie nu pot rula decat in cadrul unui proces. 0 alta deose5ire
rezulta din faptul ca fiecare process are propria sa memorie Fpropriul sau spatiu de adreseG iar
la crearea unui nou proces Ffor<G este realizata o copie exacta a procesului parinte3 cod si dateE
in timp ce la crearea unui fir nu este copiat decat codul procesului parinteE toate firele de
executie avand acces la aceleasi dateE datele procesului ori'inal. +sadarE un fir mai poate fi
privit si ca un context de executie in cadrul unui proces.
1.2.Fire de e&ecutie
5irele de eecutie sunt niste fluxuri de instructiuni care se executa in interiorul unui
proces si pot fi vazute ca un pro'ram ce nu are spatiu de adresa propriu desi se afla in
executie. @le ruleaza in cadrul unui proces si ii partaHeaza spatiu de adresa al acestuia. Fiecare
proces are cel putin un fir de executie care ruleaza in interiorul sau. (neori exista mai multe
fire de executie in interiorul aceluiasi proces cand apare nevoia de lucru in paralel asupra
acelorasi date. /esi firele de executie partaHeaza spatiul de adresa al aceluiasi procesE ele au
nevoie de resurse individuale cum ar fi stivaE re'istrii si contorul pro'ram care permit mai
multor fire de executie din cadrul aceluiasi proces sa urmeze cai diferite de instructiuni sunt
utile in multe privinteE insa uzual ele sunt folosite pentru executarea unor operatii
consumatoare de timp fara a 5loca procesul principal3 calcule matematiceE asteptarea eli5erarii
unei resurseE desenarea componentelor unei aplicatii &()E etc. /e multe ori oriE firele isi
desfasoara activitatea in fundal insaE evidentE acest lucru nu este o5li'atoriu.
)n #inux procesul init este parintele
tuturor proceselor ce ruleaza pe acel sistem.
9oate procesele care au rezultat dintr%un
parinte se numesc procese fiu.
Fiecare proces din sistem are un
proces care l%a creatE numit proces parinte
Fsau tataG si de la care ImostenesteI un
anumit ansam5lu de caracteristici Fcum ar fi
proprietarulE drepturile de accesE s.a.GE si
poate creaE la randul luiE unul sau mai multe
procese fii.
Fiecare proces are asi'nat un ,)/
Fprocess identificationGE ce este un numar
intre' pozitiv si care este unic pe durata
vietii acelui proces F)n orice momentE nu
exista )n sistem doua procese cu acelasi
,)/G.
)n (N)* pentru a afla ,)/%ul unui
proces fiu utilizata functia for<FG care ii este adresata procesului parinte.
)n pro'rameE de re'ula parinteE ,)/%ul poate fi folosit ca atri5ut de catre functii de
control Fwaitpid() sau kill()G pentru a executa anumite actiuni asupra procesului specificat.
/aca sistemul de operare are implementat suport pentru procfsE atunci in fisierul =proc=pid se
'asesc informatii despre procese.
)n #inux procesul idle denota ca un process nu se mai termina niciodata avand un ,)/
> iar init process nu va mai face nimic asteptand terminarea procesului fiu sa i se dea 1)##
avand un ,)/ 1 din acest process se tra' toate procesele din acel sistem. )n .indo!s folosim
procese ec$ivalente numite 08stem %dle !rocess si 08stem.
(n aspect foarte important al proceselor este ca acestea au intotdeauna spatii de adresa
distincteE fiecare dintre ele ruland ca si cum toata memoria ar fi a sa. /in aceasta rezulta ca
procesele sunt izolate intre ele si nu se pot accesa unul pe celalalt in mod direct. 9otusi exista
comunicare intre ele prin mecanisme ),C F)nter%,rocess CommunicationG precum3 memorie
partaHataE soc<eturiE coada de mesaHe sau semafoare.
,entru a se folosii eficient un procesorE acesta tre5uie sa execute concomitent mai
multe procese. /eoarece un procesor nu poate sa execute la un moment dat decat un sin'ur
procesE fiecarui proces activ in acel moment ii este alocata o 5ucata de timp Ftime sliceG prin
intermediul unui planificator Fsc$edulerG. /aca un procesE de exempluE foloseste o operatie
)=0 pentru o perioada indelun'ata si nu pune procesorul in mod idle intr%un anumit intervalE se
porneste un cronometru careE atunci cand expiraE intrerupe procesul consumator de resurse si
aloca resursele unui nou proces. +stfel este asi'urat faptul ca un proces nu poate sa detina
monopol asupra procesorului.
/in ce am zis mai sus rezulta doua idei fundamentale despre procese3
4uleaza independent pentru ca au zone de codE stiva si date distinct
9re5uie sa fie planificate la executie astfel ca ele sa ruleze in paralel la nivelul
aplicatiei
1.3.5unctionalitatea unui fir de eecutie
,rocesul are in componenta sa mai multe fire de executie care sunt executate in
paralalel avand in comun toate resursele caracterisiticile si resursele principale a procesuluiE
fire de executie ruleaza in paralel si au acces la aceasi zona de date dar executa portiuni
diferite de cod. +ceasta punere in comun a zonei de date are ca si consecinta faptul ca firele
de executie vad toate varia5ile procesului si odata cu modificarea unui fir fiind vazuta si de
celelante fire.
Firele de executie in comparatie cu pro'ramarea modularizata duce la o pro'ramare
flexi5ila si aduce o im5unatatire in timpE prin incapsulare se reduce accesul utilizatorului
direct la vari5ileFaflandu%se la in spatii de adrese diferiteG si odata cu acestea are loc o
securitatea mai 5una. )n timp ce firele de executie au un dezavantaH deoare acestea folosesc
5ucati de cod si memori comuneE o eroare poate duce la propa'area in mai multe directi si
odata cu acestea o vulnera5ilitate in sistem. (n avantaH net superior al firelor de executie in
fata proceselor este paralelismul. +cest avantaH consta in posi5ilitatea de folosire mult mai
eficienta a resurselor sistemului pentru o prelucrare mult mai rapida a datelor.
,rocess s!itc$in' este operatia prin care tre5uie comutate toate resursele care apartin
proceselorE salvalvarea re'istrului procesorului si se face o remaparea a zonelor de memorie
care apartin noului proces.
#a nivelul sistemului de operareE executia in paralel a firelor de executie este o5tinuta
in mod asemanator cu cea a proceselorE realizandu%se o comutare intre fireE conform unui
al'oritm de planificare. Spre deose5ire de cazul proceselorE insaE aici comutarea poate fi
facuta mult mai rapidE deoarece informatiile memorate de catre sistem pentru fiecare fir de
executie sunt mult mai putine decat in cazul proceselorE datorita faptului ca firele de executie
au foarte putine resurse proprii. ,racticE un fir de executie poate fi vazut ca un numarator de
pro'ramE o stiva si un set de re'istriE toate celelalte resurse Fzona de dateE identificatori de
fisier etcG apartinand procesului in care ruleaza si fiind exploatate in comun.
9ernel este mediatorul intre pro'rame si $ard!areE locul unde sunt depozitate
driverele. 1ernel%ul ofera suport pentru filtrarea pac$etelor ce trec prin retea si 'estioneaza
procesele ce ruleaza in memorie. Functiile <ernel%ului sunt foarte ampleE iar scopul acestui
turorial este sa trateze in linii mari su5iectul. @xista mai multe tipuri de <ernel3 monoliticeE
$i5rideE micro<erneluriE nano<erneluri si exo<erneluri.
1ernel%ul #inux%ului este modular. +sta inseamna ca unele drivere pot fi compilate
su5 forma de module. +vantaHul o5tinut astfel consta in faptul ca driverul va sta in memorie
numai cand este necesar. +sta inseamna o functionare mai rapida a sistemului si o 5oot%are
mai rapida. /e aceeaE este 5ine sa folositi module pentru driverul de placa de reteaE placa de
sunetE partitii vfatE dosE N9FSE sm5fsE ipta5les si multe alte drivere care ofera posi5ilitatea de
a fi compilate ca modul. /atorita utilitarului <erneldE introdus odata cu versiunea 1.3 a <ernel%
uluiE modulele sunt incarcate in mod automat cand sunt solicitate de un pro'ramE asta
insemnand ca nu mai e nevoie de comanzi ca insmod si modpro5e.
1ernelul stoc$eaza lista de procese intr%o lista circulara du5lu inlantuita numita tas:
list Flista de proceseG. Fiecare element din tas< list este un descriptor al fiecarui proces si
contine toate informatiile despre respectivul proces. /escriptorul de proces este de tipul struct
tas<Jstruc< care este definit in linux=sc$ed.$. B1C
Fiecare proces este reprezentat in memorie printr%un contextK descriptor de
procescare contine3
Starea procesului
+dresa instructiunii urmatoare
Starea re'istrilorC,(
)nf relative la planficare3 prioritatea.
)nformatii relative la pa'inile de memorie alocate.
)nformatii le'ate de conta5ilizarea res. (tilizate
Caracteristici )=0 Llista fisierelor desc$ise.
(n descriptor de fisiere este un index pentru intrarile dintr%o structura de date ce este
rezidenta in <ernel si contine detalii despre toate fisierele desc$ise de catre sistem. +cest
descriptor este necesar pentru ca in acelasi moment doua aplicatii sa nu acceseze acelasi fisier
si astfel sa se aHun'a la coruperi de fisiere sau la pierderi de date.
@xista trei valori pentru descriptorul de fisiere3
M N> L Standard input FstdinGO
M N1 L Standard output FstdoutGO
M N2 L Standard error FstderrG.
1.4.0tarile proceselor
1. Ready F,re'atit pentru executieG
2. Running F)n executieG ,rocesul este pre'atit pentru executie dacaE cu toate ca
instructiunile sale sunt 'ata pentru a fi executateE este lasat intr%o coada de asteptare din cauza
ca un alt proces este in executie la momentul respectiv de timp.
3. Waiting/Blocked Fasteapta=este 5locatG (n proces poate fi 5locat deoarece in setul sau
de instructiuni exista instructiunea de suspendare a executiei sau pentru ca efectueaza o
operatie in afara procesorului Fadresare memorieE etcG care este foarte consumatoare de timp.
4. /ead F1illG are loc atuncea cand utilizatorul=pro'ramul are o eroare in executie si este
nevoita intreruperea firului de exectie. +cesta stare nu este reversi5ila fata de celelante 3 stari
enumeratate mai sus
,rocesele care se 'asesc in Starile 4eadD si Aloc<ed sunt introduse in cozi de procese3
procesele 4eadD sunt introduse in coada 4eadDE procesele Aloc<ed sunt introduse in coada
Aloc<ed care sunt cozi de )=0.
,rocesele 4eadD si 4unnin'E Aloc<ed poate fi reflexive adica se poate produce o
trecere 4eadD%P4unnin' sau 4eadD%PAloc<ed si vice versaE iar executia lor poate fi
planificata.
1.-.Comunicarea intre procese
Comunicarea intre procese se poate face folosind pipe-uri FconducteG. QConductaR
este o cale de le'atura care poate fi sta5ilita intre doua procese inrudite. @aE 5ineintelesE are
doua apete3 unul in care se pot scrie date si altul prin care datele pot fi citite. ,ipe%urile permit
o comunicare unidirectionala. Sistemul de operare permite conectarea a unuia sau mai multor
procese la fiecare din capetele unui pipeE deci este posi5il sa existe mai multe procese care
scriuE respectiv mai multe procese care citesc din pipe. +stfel se formeaza comunicarea intre
procesele care scriu si procesele care citesc din pipe%uri.
Comunicarea intre procese se poate realiza si folosind semnalele Fo exprimare a
evenimentelor care apar asincron in sistemG. (n proces este capa5il de a 'enera sau a primi
semnale. )n cazul in care un proces primeste un semnalE el poate ale'e sa reactioneze la
semnalul receptionat intr%unul dintre urmatoarele moduri3
1. sa execute actiunea implicita la primirea unui semnal.
2. sa capteze semnalul si sa%l trateze Fsignal handlerG
3. sa i'nore semnalul respectiv
Semnalele pot fi de mai multe tipuriE care corespund in 'eneral unor actiuni specifice.
Fiecare semnal are asociat un numarE iar acestor numere le corespund unele constante
sim5olice definite in 5i5liotecile sistemului de operare. Standardul ,0S)*.1 defineste cateva
semnale care tre5uie sa existe in orice sistem (N)*.
1.4.0emofari;are si monitori;are
Definitie: Situatiile in care reultatul e!ecutiei unui sistem format din mai multe procese
(fire de e!ecutie) depinde de "itea lor relati"a de e!ecutie se numesc conditii de cursa (in
englea: race conditions).
,entru a evita ca la iesirea din functia 'oFG Bin cazul !indo!sC sau pt$readJexit FlinuxG
toate t$read%urile sa%si termine executia setului de instructiuni in acelasi timpE tre5uie
implementat un al'oritm de sincronizare si planificare.
,ro5lema sincronizarii nu se pune numai la t$read%uriE ci si la procese. )n cazul in care
mai multe procese=fire de executie folosesc resurse comuneE rezultatul final al executiei lor
poate sa nu fie foarte sta5il deoarece conteaza ordinea in care procesele =firele de executie
returneaza rezultatele executarii seturilor de instructiuni.
Conditiile de cursa apar atunci cand tre5uiesc executate=modificate parti din pro'ram
care sunt puse la comun Fsunt folosite si de alte procese=t$read%uriG. +ceste portiuni care
acceseaza parti din pro'ram puse la comun se numesc one (sectiuni critice 1 critical
sections). /aca ne asi'uram ca t$readurile care ruleaza nu executa cod in acelasi timp in
zonele criticeE pro5lema sincronizarii este rezolvata. +cest procedeu poarta denumirea de
eclu;iune mutuala.
0 alta metoda de sincronizare este metoda Semafoarelor. Semaforul este un tip de
date a5stract ce poate avea o valoare intrea'a nene'ativa si asupra caruia se pot efectua
operatiile3 initE up si down. )nitL initializeaza semaforulE do!n L realizeaza o operatie de
decrementareE daca valoarea este pozitiva. /acavaloarea este nulaE procesul se 5loc$eaza.
0peratia up incrementeaza valoarea semaforuluiE daca nu exista un process 5locat pe acel
semafor. /aca existaE valoarea semaforului ramane zero iar unul dintre procese care este
5locat va fi de5locat.
Ca si metode de sincronizare mai avem mecanisme System sau VIPC. Semafoarele si
memoria partaHata fac parte din mecanismele de comunicare si sincronizare a proceselor
cunoscute ca SDstem ?),C. ,rin mecanismul de memorie partaHata doua sau mai multe
procese pot pune in comun o zona de memorie. Fiind o resursa pusa la comunE accesul la zona
de memorie partaHata tre5uie sa fie sincronizat.
1.3."odelele de threading suportate de sistemele +in32
1. odelul thread%ului unic FSingle Thread ModelG. +cest tip de thread presupune
rularea unui sin'ur thread la un moment dat. 4estul thread%urilor tre5uie sa astepte.
,rincipalul dezavantaH al acestui tip de thread il reprezinta timpii lun'i de executie pentru
sarcini mici. Corespunde din punct de vedere conceptual
prelucrarii pe loturi F#atch processingG.
2. odelul $partment %hread FSingle Thread Apartment Model 1 0<AG. )n acest
modelE pot exista mai multe thread%uri care se executa in cadrul aplicatiei. )n S9+E fiecare
thread este izolat )ntr%un QapartamentR separat )n cadrul procesului. Fiecare proces poate avea
mai multe apartamenteE care pot partaHa date )ntre ele. )n acest cazE aplicatia este
raspunzatoare pentru sta5ilirea duratei fiecarui thread din cadrul fiecarui apartament. 9oate
cererile sunt ordonate folosind Windows &essage 'ueueE astfel )ncat un sin'ur apartament
poate fi accesat la un moment dat. +vantaHul acestui model fata de modelul thread%ului unic
este ca se pot procesa simultan mai multe cereri ale utilizatorului. 9otusiE nu este atinsa )nca
eficienta maximaE deoarece sarcinile se vor executa una dupa alta. Corespunde din punct de
vedere conceptual multipro'ramarii.
3. odelul &ultithread $partment FFree Thread Apartment Model 1 5<AG. odelul
&ultithread $partment presupune existenta unui sin'ur apartament. Nu este nevoie de
ordonareE deoarece toate thread%urile apartin aceluiasi apartament si pot partaHe resursele.
+ceste aplicatii se executa mai rapid decat cele care implementeaza modelul unic sau S9+E
deoarece sistemul este mai putin solicitat si poate fi optimizat sa elimine timpii morti.
Corespunde din punct de vedere conceptual diviziunii )n timp Ftime sharingG.+ceste tipuri de
aplicatii sunt foarte complexeE deoarece tre5uie sa se asi'ure ca thread%urile nu acceseaza
simultan aceleasi resurse Fprincipiul pipelineG. @steE astfelE a5solut necesar sa se furnizeze un
sistem de 5locare a resurselor. +cesta tre5uie implementat cu atentieE deoarece poate conduce
la 5locarea totala a sistemului.
1.=.Calculul performantelor
(tilizand de n ori mai multe resurse )n paralelE un al'oritm nu va rula de n ori mai
repedeE datorita fenomenului de timp suplimentar Fo"erheadGE indus prin aplicarea
paralelismului. +cest timp suplimentar apare din urmatoarele cauze3
interactiunea )ntre procese Ftransmiterea rezultatelor intermediare sau partialeG si
sincronizarea proceselorO
inactivitatea temporara FidlingGE care )nseamna ca exista procese inactive pe anumite
perioade de timpE datorita )ncarcarii ine'ale si a asteptarii sincronizariiO
calculele suplimentareE care nu apar )n formularea seriala a al'oritmului.
,arametrii de intrare care contri5uie la calculul performantelor sunt3
timpul de executie secvential sau serialE %S Ftimpul masurat de la )nceputul si pana la
sfarsitul executiei al'oritmului pe un calculator secventialGO
timpul de executie paralelE %( Ftimpul masurat de la )nceputul executiei si pana la
terminarea ultimului su#task paralelGO
numarul de procesoareE p.
Cu aHutorul acestoraE se pot calcula urmatorii parametri de iesire3
suprasarcinaE %) F%otal (arallel )"erheadG K diferenta dintre timpul total de lucru
)nsumat al tuturor procesoarelor si timpul necesar celui mai rapid al'oritm secventialO
accelerareaE S FSpeedupG K raportul dintre timpul necesar rezolvarii unei pro5leme pe
un procesor si timpul necesar rezolvarii aceleiasi pro5lem )n paralel pe p procesoare
identiceO
eficienta utilizarii calculatorului paralelE * K S = pO
costulE + K %
(
SpE care reflecta timpul total de lucru )nsumat al procesoarelor.

Capitolul ' $pelurile de (i(tem de e(tiune a proce(elor
)n *inu&- Petre(cu +i,ai Cri(tian !"##$%
2.1.0istemul de operare Linu
Sistemul de operare #inux cuprinde in principal 3 componente maHore3
aG Nucleul F1ernelG
5G Sistemul de fisiere
cG S$ell%ul
1ernel%ul administreaza operatiile computerului. S$ell%ul asi'ura o interfata pentru
interactiunea dintre utilizator si calculator iar sistemul de fisiere asi'ura un miHloc de
or'anizare si 'estionare a informatiilor pe discurile $ard ale calculatorului. )n continuare voi
detalia cele 3 componente.
1
2.1.1.6ucleul
Nucleul este partea centrala a sistemului de operareE care asi'ura servicii catre pro'ramele
de aplicatii pentru realizarea 'estiunii proceselorE a memorieiE a intrarilorE a iesirilor si a
timpului. 1ernel%ul se afla cel mai aproape de C,( si $ard!are. @ste un fisier executa5il care
se incarca atunci cand porneste calculatorul. Nucleul F1ernelG este un intermediar intre
interfata furnizata de apelurile sistem si ec$ipamentele fizice din sistemul de calcul.Nucleul
F1ernelG este componenta care asi'ura servicii de sistem pentru pro'ramele de aplicatii
asi'urand 'estiunea proceselorE a memorieiE a intrarilor=iesirilor si a timpului.
2
1ernelul este inima sistemului de operare. @l se ocupa cu 'estionarea fisierelor de pe dis<E
porneste pro'ramele si le ruleaza concurentE aloca memorie sau alte resurse diferitelor
proceseE primeste si trimite pac<ete de date din respectiv la alte calculatoare.1ernelul face
foarte putine el insusi dar pune la dispozitie unelte cu care pot fi construite diferite servicii.
/e asemenea nu permite accesarea directa a $ar!are%uluiE fortand folosirea uneltelor pe care
le pune la dispozitie. +stfel <ernelul furnizeaza o anumitaprotectie pentru useri. (neltele puse
la dispozitie de <ernel sunt utilizate prin intermediul apelurilor sistem. ,ro'ramele de sistemeE
si celelalte pro'rame ruleaza deasupra <ernelului.
1ernelul este compus din cateva parti importante3 mana'ementul
proceselorEmana'ementul memorieiE drivele pentru componentele $ard!areE drivele pentru
sistemul de fisiereE mana'ementul reteleiE si altele.
1
Qodern operatin' sDstemsRE+ndre! S. 9anen5aumEt$ird editionO
+
Qodern operatin' sDstemsRE+ndre! S. 9anen5aumEt$ird editionO
Functiile 1ernel%ului sunt3
3
1. 'estiunea proceselorE efectuand controlul executiei acestora prin implementarea unor
comenzi de creareE terminareE suspendare si comunicatie intre procese si planificarea
pentru executie a proceselor conform unei politici de tip partaHat.
2. 'estionarea fisierelor prin alocarea sau eli5erarea memoriei externe pentru stocarea si
re'asirea eficienta a informatiei
3. 'estionarea dispozitivelor periferice
4. 'estionarea memoriei prin alocarea si eli5erarea memoriei principale pentru procesele
aflate in executie.
5. +dministreaza functii precum3 spatiul S!apE /emoniE si Sistemele de Fisiere.
4
Spatiul S!ap L @ste o parte rezervata de pe $ard dis< pentru <ernelE acesta utilizand%o in
timpul procesarii. ,ortiuni de pro'rame care ruleaza pot fi TaruncateR $ard dis<%ului si apoiE
la nevoieE aduse inapoi. +cest spatiu s!ap se afla in realitate pe $ard dis<E insa seamana cu o
memorie aditionala sau 4+ additionalE uneori fiind numit memorie virtuala.
/emonii % ,ro'rame sau procese care realizeaza o sarcina particulara sau monitorizeaza
discurile sau executia pro'ramelor. /emonii sunt procese speciale care pornesc dupa ce se
3
Qodern operatin' sDstemsRE+ndre! S. 9anen5aumEt$ird editionO
4
$ttp3==!!!.scri5d.com=doc=114>>:2>=sisteme%de%operare
incarca sistemul de operare. /emonii asteapta apoi sa faca ceva in spriHinul S0. ,ot fi porniti
sau opriti daca este necesar. (n exemplu este cel al demonului imprimanteiE lpsc$ed Fline
printer sc$edulerG. +cesta se lanseaza cand sistemul porneste si apoi asteapta in fundal pana
cand cineva are nevoie sa tipareasca ceva. /emonii din lumea #inuxului sunt similari cu
Serviciile din .indo!s N9=2>>> sau cu Net.are #oada5le odules FN#sG din Novell
Net.ar.
5
Nucleul este alcatuit din urmatoarele componente3
6
1. interfata cu procesele utilizator % care se realizeaza exclusiv prin intermediul apelurilor
de sistemO
2. su5sistemul de control al operatiilor de intrare iesire % care controleaza modul de lucru
cu dispozitivele perifericeE aloca spatiu pentru fisiereE 'estioneaza spatiul li5er din
memoria externaE etc.
3. su5sistemul de control al proceselor % care realizeaza planificareaE sincronizarea si
comunicarea intre proceseE precum si 'estionarea memorieiO
4. interfata cu $ard!are%ul realizeaza tratarea intreruperilor si comunicarea directa cu
componentele fizice ale sistemului electronic de calcul.
(n proces su5 sistemul #inux este caracterizat de toate operatiile ce tre5uie sa se
desfasoare in timp pentru a satisface cerintele unui pro'ram ce a fost lansat in executie. )n
cazul unui pro'ram aflat in executieE la un moment dat pot exista mai multe procese. @le se
numesc instante ale acestui pro'ram.
Sistemul de operare #inux foloseste un sistem de procese numit multitas<in' pentru a
aloca timpul de lucru al procesorului mai multor utilizatori in acelasi timp. )n realitate nu este
vor5a de procese care se ruleaza in acelasi timp ci unele dupa altele la intervale de timp de
ordinul milisecundelor. Sistemul de operare aloca timpul in asa fel incat sa lase impresia de
continuitate pentru fiecare utilizator. )n timp ce unul dintre acestia lucreaza la terminalul
sauEel imparte cu ceilalti resursele de calcul.
)ntr%un sistem de operare multiutilizatorE se pot executa mai multe pro'rame
simultan.@xistand o sin'ura C,(E in realitate un sin'ur pro'ram se executa efectiv la un
moment datE iar celelalte se vor executa atunci cand C,( le va acorda cuante de timp. )n
timpul executiei unui pro'ramE celelalte pro'rame sunt rezidente in 4+E cu conditia ca nici
unul sa nu solicite toata memoria. /e aici decur' 2 sarcini ale nucleului 3
7
planificarea proceselor O
impartirea in cuante de timp intre proceseO
'estiunea memorieiO
atri5uirea de zone de memorie li5era la procese si eventuala evacuare sau incarcare a
unui proces in=din disc.
#inux este un sistem foarte dinamic. ,rocesele pot fi de scurta durata Fexecutarea unei
comenzi de la linia de comandaG sau de lun'a durata Fun serviciu de reteaG. /in acest motivE in
'eneral mana'ementul proceselor si pro'ramarea lor este foarte importanta. ,racticE
*
Qodern operatin' sDstemsRE+ndre! S. 9anen5aumEt$ird editionO
%
Qodern operatin' sDstemsRE+ndre! S. 9anen5aumEt$ird editionO
&
Qodern operatin' sDstemsRE+ndre! S. 9anen5aumEt$ird editionO
procesorul executa un timp instructiunile unuia dintre proceseE apoi sistemul de operare va
impune ca procesorul sa execute pentru un timp instructiunile altui proces si asa mai departe.
+cest mod de executie a proceselorE care simuleaza paralelismulE se numeste executie
concurenta. )n implementarea concurentei tre5uie rezolvate urmatoarele pro5leme3
"
un proces ale carui instructiuni sunt executate de procesor sa poata fi eliminat din
aceasta pozitie privile'iata si inlocuit cu altulO
procesul astfel eliminat sa poata fi executat din nouE la un moment ulteriorE fara ca
intreruperea executiei sale sa%l afecteze in vreun felO
sa se decidaE pentru fiecare procesE cat timp vor fi executate instructiunile acestuiaO
sa se asi'ure accesul tuturor proceselor la resursele comune puse la dispozitie de
calculator.
Fiecare proces se aflaE in orice momentE intr%una din urmatoarele stari3
runnin' % instructiunile sale sunt executate de catre procesor in momentul respectivO
readD % este in asteptarea momentului in care instructiunile sala vor fi executateO
!aitin' % asteapta efectuarea unui apel sistem pe care l%a solicitat.
0rice sistem de operare pune la dispozitia pro'ramatorilor o serie de servicii prin
intermediul carora acestora li se ofera acces la resursele $ard!are si soft!are 'estionate de
sistem3 lucrul cu tastaturaE cu discurileE cu dispozitivul de afisareE 'estionarea fisierelor si
directoarelor etc. +ceste servicii se numesc apeluri sistem. /e cele mai multe oriE operatiile pe
care ele le pot face asupra resurselor 'estionate sunt operatii simpleE cu destul de putine
facilitati. /e aceeaE frecventE se pot intalni in 5i5liotecile specifice lim5aHelor de pro'ramare
colectii de functii mai complicate care 'estioneaza resursele respectiveE dar oferind
pro'ramatorului niveluri suplimentare de a5stractizare a operatiilor efectuateE precum si
importante facilitati in plus. +cestea sunt functiile de 5i5lioteca. 9re5uie su5liniat faptul ca
functiile de 5i5lioteca cu aHutorul carora se poate 'estiona o anumita resursa sunt
implementate folosind c$iar functiile sistem corespunzatoareE specifice sistemului de operare.
,rocesele se executaE atat in mod utilizatorE cat si in mod nucleuE de aceea acestora li se
asociaza o stiva nucleu ce va contine informatiile necesare functiilor de acces la nucleu.
,rocesul trece din modul utilizator in modul nucleu atunci cand apeleaza o functie de sistem
sau cand este 'enerata o intrerupere de sistem Fprocese privile'iateG.
:
(n apel de sistem este o interfata intre utilizator%un spatiu in aplicare si un serviciu care
este oferit de nucleu.+pelurile de sistem puse la dispozitie de #inux pentru 'estionarea
proceselor sunt3 for< si exec pentru crearea unui proces si respectiv modificarea ima'inii unui
procesE !ait si !aitpid pentru asteptarea terminarii unui proces si exit pentru terminarea unui
proces. ,entru copierea descriptorilor de fisier #inux pune la dispozitie apelurile de sistem
dup si dup2.
)n concluzie nucleul F1ernelG este constituit din doua componente principale3
1>
'
Q,rimii pasi in #inuxRESa5in Aura'aE /ra'os +costac$ioaieE arius arusteriO
(
Q,rimii pasi in #inuxRESa5in Aura'aE /ra'os +costac$ioaieE arius arusteriO
1)
Q,rimii pasi in #inuxRESa5in Aura'aE /ra'os +costac$ioaieE arius arusteriO
sistemul de 'estiune a fisierelorO
sistemul de 'estiune a proceselor.
Functiile 'enerale ale unui sistemului de 'estiune a fisierelor sunt3operatii cu fisiere
FcreareE citireE scriereE copiereE ster'ereE concatenareEetc.GO alocare de spatiu dinamic pentru
fisiere pe U/ sau F/O accesul la fisiereO administrarea spatiului li5er pe U/ sau F/O
sc$im5area structurii sistemului de fisiere.
Functiile 'enerale ale sistemului de 'estiune a proceselor sunt3 trecerea proceselor prin
diverse stari FcreareE asteptareE executieE terminareGO planificarea proceselor pentru a avea
acces la procesorO comunicarea intre proceseO sincronizarea proceselor.
2.1.2.0#ell-ul
S$ell%ul reprezinta interpretorul de comenzi al sistemului de operare care are rolul de a
interpreta comenzile date de utilizatorE realizand o interfata intre acesta si sistemul de operare
si de asemenea ofera facilitati de pro'ramare intr%un lim5aH propriu avand caracteristicile
asemanatoare cu ale lim5aHelor de nivel inaltE permitand scrierea si utilizarea de pro'rame.)n
concluzieEun s$ell este o interfata intre utilizator si <ernel. +ctioneaza ca un interpretor sau ca
un translator. Cu alte cuvinteE s$ell%ul accepta comenzi scrise de utilizatorE le interpreteazaE si
apoi executa pro'ramele corespunzatoare. S$ell%urile pot fi linie de comanda sau 'rafice.
,entru a verifica ce s$ell utilizezi la un moment dat se poate folosi comanda ps Fprocess
statusG.
11
S$ell%ul citeste si interpreteaza cererile introduse de utilizator. +poi comunica instructiuni
<ernel%ului care duce la indeplinire cererile formulate de utilizator. S$ell%ul este deci le'atura
directaE interfata directa a utilizatorului cu sistemul de operare. /e o5iceiE cele mai multe
cereri sunt pentru a rula pro'rame.
2.1.3.0istemul de fisiere
Sistemul de fisiere cuprinde ansam5lul fisierelor memorate su5 forma de comenziE
pro'rame traducatoareE pro'rame utilitareE sisteme pentru lucrul cu colectii dedateE pro'rame
aplicativeE precum si fisiere de date asociate or'anizate intr%o structura standard de directoare
si su5directoare.
Sistemul de fisiere asi'ura o modalitate de a separa si de a or'aniza informatia pe un $ard
dis<. Structura de fisiere a sistemului #inux este o ierar$ie de directoareE su5directoare si
fisiere care sunt 'rupate in functie de anumite scopuri. Sistemul de fisiere este inte'rat cu
1ernel%ul in scopul asi'urarii unei structuri or'anizatorice pentru soft!are%ul si pentru datele
utilizatorilor. Structura de fisiere su5divide $ard dis<%urileE facandu%le mai usor de administrat
si usurandu%ne localizarea fisierelor. Uard dis<%urile pot fi divizate in sisteme de fisiereE
directoareE su5directoare si fisiere. Sistemul de fisiere or'anizeaza datele intr%un mod similar
11
Qodern operatin' sDstemsRE+ndre! S. 9anen5aumEt$ird editionO
unui dulap. Sistemul de fisiere este dulapulE directoarele sunt asemenea sertarelorE
su5directoarele asemenea dosarelor isr fisierele pot fi asemanate u foile prinse in dosar.
(n fisier este o colectie de informatii FdateE o aplicatieE sau documenteG. )n #inux un fisier
poate cuprinde orice. Cand se creeaza un fisierE #inux%ul ii atri5uie acestuia un numar de
identificare intern unic. +cest numar de index este utilizat pentru a putea localiza fisierul pe
$ard dis<.
12
/eciE un sistem de fisiere este un ansam5lu de fisiere si directoare. Sistemele de fisiere
sunt dependente de dimensiunea si structura disculuiE precum si de structura interna a
#inuxului. )ntr%un sistem multiuser Fmulti utilizatorGE poate exista la un moment dat un numar
mare de fisiere stocate. /in aceasta cauzaE utilizatorii au nevoie de un sistem care sa le
permita identificarea rapida si simpla a fisierelor.
/e o5iceiE directoarele si fisierele utilizatorilor se afla stocate pe un alt sistem de fisiere
decat cel pe care se afla directoarele si fisierele sistemului de operare. /aca exista un numar
mare de utilizatori atunci fisierele utilizatorilor se pot intinde pe mai mult de un sistem de
fisiere.
Sistemul de fisiere se refera la modul in care #inuxul implementeaza fisierele si
directoarele.
2.1.4.>estiunea proceselor
(n proces se desfasoara in timp si are un caracter dinamic. )nitierea unui proces poate fi
efectuata numai de catre un alt proces activ. Cand este conectat primul utilizatorE 1ernel%ul
asi'ura o copie a S$ell%ului ce se ruleaza doar pentru elE ivindu%se existenta unei alte structuri
ierar$ice de procese create printr%un mecanism numit 5ifurcatie Ffor<G prin care 1ernel
inlocuieste un proces existent prin 2 procese3
13
procesul initialFparinteGO
procesul initiat de procesul initial FfiuG care imparteFpartaHeazaG toate fisierele cu
procesul parinte. /upa 5ifurcatieE am5ele procese se executa independent
Fexceptie3cand solicitam explicit ca procesul parinte sa astepte terminarea procesului
fiu prin directiva .+)9E in continuare procesul fiu poate 'eneral la randul lui o noua
5ifurcatieG.
@xplicand mai pe lar'Efiecare proces din sistem are un proces care l%a creatE numit proces
parinteE Fsau tataG si de la care ImostenesteI un anumit ansam5lu de caracteristici Fcum ar fi
proprietarul sau drepturile de accesG.
Fiecare proces are asi'nat un ,)/ Fprocess identificationKidentificator de procesGE ce este
un numar intre' pozitiv si care este unic pe durata vietii acelui proces Fin orice momentE nu
exista in sistem doua procese cu acelasi ,)/G. +ceste numere sunt alocate proceselor in mod
crescatorE incepand cu > in momentul cand se creeaza procesul.@xista un proces specialE cel
cu ,)/ K >E care este creat atunci cind este initializat F5oot%atG sistemul pe calculatorul
respectiv. +cesta nu are proces tataE fiind radacina ar5orelui de procese ce se vor crea pe
1+
Qodern operatin' sDstemsRE+ndre! S. 9anen5aumEt$ird editionO
13
$ttp3==!!!.scri5d.com=doc=114>>:2>=sisteme%de%operare
parcursul timpului Fpina la oprirea calculatoruluiG. Celelalte procese sunt create cu aHutorul
functiei sistem for<.
14
(n pro'ram executa5il este incarcat in memorie prin functia de sistem exec. )n termenii
<ernel%ului #inuxE un proces este reprezentat de o structura destul de mareEnumita
tas<Jstruct.+ceasta structura contine toate datele necesare pentru a reprezenta un proces si de
a intretine relatii cu alte procese Fparinti si copiiG.
/e la user%spaceE procesele sunt reprezentate prin procesul de identificare F,)/sG. /in
perspectiva utilizatoruluiE un ,)/ este o valoare numericaE care identifica in mod unic un
proces. ,)/s pot fi refolositeE dupa ce un proces moare. )n spatiul de utilizatorE puteti creea
procese in mai multe moduri.,uteti executa un pro'ram Fcare duce la crearea unui nou procesG
sauE puteti invoca un for< sau exec sistem de apel. (n apel exec inlocuieste procesul actual cu
noul pro'ram.
15
2.1.-.Crearea unui proces
odul cel mai simplu prin care se poate crea un nou proces este prin folosirea functiei de
5i5lioteca sDstem3
16
int sDstemFconst c$ar ScommandGO
+pelul acestei functii are ca efect executia ca o comanda s$ell a comenzii reprezentate prin
sirul de caractere command. )n (N)* sin'ura modalitate de creare a unui proces este prin
apelul de sistem for<3
17
pidJt for<FvoidGO
@fectul este crearea unui nou proces % procesul copilE copie a celui care a apelat for< %
procesul parinte. Copilul primeste un nou ,)/ de la sistemul de operare.
+steptarea terminarii unui proces este realizata de familia de functii !ait care suspenda
executia procesului apelant pana cand procesul FproceseleG specificate in ar'umente fie s%au
terminat fie au fost oprite FS)&S90,G.
1"
pidJt !aitpidFpidJt pidE int SstatusE int optionsGO
?aloarile uzuale ale ar'umentului pid sunt identificatorul unui proces copil Fspre exempluE
returnat de for<G sau %1E in cazul in care se doreste asteptarea oricarui proces copil.
14
$ttp3==!!!.scri5d.com=doc=114>>:2>=sisteme%de%operare
1*
$ttp3==tldp.or'=#/,=intro%linux=$tml=sectJ>4J>3.$tml
1%
$ttp3==polis$linux.or'=console=mana'in'%processes%in%linux=
1&
$ttp3==polis$linux.or'=console=mana'in'%processes%in%linux=
1'
$ttp3==polis$linux.or'=console=mana'in'%processes%in%linux=
1:
2.1.6.Comenzi pentru 'estiunea proceselor (N)* #inux

1. ps
0fera informatii despre procesele active in acel momentE despre pro'ramele care ruleaza.
+ceste informatii pot include identificatorul procesului F,)/GE identificatorul parinteluiF,,)/G
E terminalul de control al procesului F99GE starea procesului FS9+9% secventa de 5 litereE
fiecare precizand un anumit aspect relativ la proces%starea executieiE daca ima'inea procesului
se afla in memorieE prioritateGE durata procesului F9)@G. Starea procesului poate fi in
executieE !%in asteptareE s%suspendatE t%opritE z%terminatE o%inexistent. +ceste date pot fi
valoroase atunci cand aveti nevoie pentru a opri manual un pro'ram sau daca tre5uie doar
pentru a determina ce pro'ram incetineste sistemul.
2>

2. :ill
functia3IomoaraI un proces in curs de executie
sintaxa3<ill BoptiuniC FpidG
/istru'e procesul cu identificatorul FpidG. Semnalul de distru'ere si'ura se da prin
folosirea optiunii %:E altfel nefiind si'ur ca distru'erea se va realiza. 0ptiunea %: se va folosi
doar cand prima forma a comenzii nu da rezultate.
21
1(
$ttp3==!!!.scri5d.com=doc=114>>:2>=sisteme%de%operare
+)
$ttp3==articles.tec$repu5lic.com.com=51>>%1>"7"J11%5>25322.$tml
+1
$ttp3==articles.tec$repu5lic.com.com=51>>%1>"7"J11%5>25322.$tml
3. sleep
functia3suspenda temporar executia unui proces
sintaxa3sleep FtimpG
9impul este dat in secunde
4. time
functia3furnizeaza timpul de executi al unei comenzi
sintaxa3time FcomandaG
Se lanseaza in executie FcomandaGE iar la sfirsitul executiei se afiseaza timpul de executie
si timpul sistemE in secunde.
22
-. s#
functia3 lanseaza in executie interpretorul S$ell
sintaxa3 s$ FfisierG
@xecuta un fisier de comenzi S$ell.
++
$ttp3==articles.tec$repu5lic.com.com=51>>%1>"7"J11%5>25322.$tml
+3
$ttp3==!!!.scri5d.com=doc=114>>:2>=sisteme%de%operare
Capitolul #: $pelurile $PI pentru e(tionarea -o.-urilor (i
ale proce(elor - /ictor Petrac,e !"#1$%
3.1 Ce este un A!%?
+,) Fapplication pro'rammin' interfaceG reprezinta un set de re'uli si specificatii
utilizate de pro'ramele soft!are pentru a comunica intre ele. +cestea au rolul de a facilita
interactiunea pro'ramelor intre eleE similar cu felul in care interfetele vizuale aHuta la
interactiunea intre om si calculator.
(n +,) poate fi creat pentru aplicatiiE li5rariiE sisteme de operare etc. ca un mod de a
define Tvoca5ularulR acestora si conventiile pentru cereri de resurse. +cestea pot contine
specificatii pentru rutineE structuri de dateE clase de o5iecte si protocoale folosite pentru
comunicarea dintre pro'ramul folosit de catre utilizator si pro'ramul ce implementeza +,)%ul.
+,)%urile pot fi3
&enerale % un set complet de +,)E care este 2ncorporat in 5i5liotecile unui lim5aH
de pro'ramareE de exemplu3 Standard 9emplate #i5rarD in CVV sau Wava +,)
0pecifice % menite sa a5ordeze o pro5lema specificaE de exemplu &oo'le aps
+,) sau +,) Wava pentru Servicii .e5 *#.
,ependente de lim'a& % ceea ce inseamna ca este disponi5il doar prin utilizarea
elementelor de sintaxa ale unui anumit lim5aHE ceea ce face +,)%ul mai usor de
utilizat.
%ndependente de lim'a& L scrisE astfel incat sa poata fi apelat din mai multe
lim5aHe de pro'ramare diferite. +ceasta este o caracteristica de dorit pentru +,)%
urile orientate pe servicii care nu sunt le'ate de un process specific sau de sistem si
pot fi furnizate ca apeluri de procedura la distanta sau ca servicii !e5.
24
3.2 *%6,2*0 A!%

.indo!s +,) Ffostul .in32 +,)G reprezinta setul de +,)%uri disponi5ile in sistemele
de operare icrosoft .indo!s .
25
+pelurile de sistem ale sistemului de operare !indo!s pentru 'estionarea proceselor
de sistem sunt3
/num!rocesses L aceasta functie completeaza un vector de valori /.04/
cu identificatorii tuturor proceselor din sistemE pe scurt face enumerarea
tuturor proceselor active din sistem.
+4
$ttp3==en.!i<ipedia.or'=!i<i=+pplicationJpro'rammin'Jinterface
+*
$ttp3==en.!i<ipedia.or'=!i<i=.indo!sJapi
2pen!rocess L folosit pentru a desc$ide un proces local existent in sistem. +re
ca parametru identificatorul de proces primit dupa utlizarea /num!rocesses
Close@andle 1 utilizat pentru a inc$eia utilizarea unui anumite proces.
Create!rocess 1 crea;a un nou proces
Create!rocessAsAser 1 creaza un nou process care va fi rulat numai de catre
utilizator specificat ca parametru
>etCurrent!rocess%d 1 returnea;a identificatorul de proces al procesului
apelant
>et/n7ironment(aria'le 1 returnea;a 7aloarea 7aria'ilei specificate din
'locul de mediu al procesului apelant
>et/itCode!rocess L returneaza statutul de terminare al procesului
specificat.
>et!rocess%d 1 returnea;a identificatorul unui proces specificat
0et!riorit8Class 1 returnea;a clasa de prioritate a procesului specificat
0et!rocessAffinit8"as: 1 seteaza afinitatea mastii unui processor pentru
t$read%urile unui proces specific.
<erminate!rocess 1 inc$ide procesul specificat si toate t$read%urile sale
+cestea reprezinta o parte din +,)%urile .indo!s pentru 'estionarea proceselorE setul
intre' de functii se poate 'asi in cadrul documentatie oferite de catre compania icrosoft
pentru sistemele de operare .indo!s.
26
3.3 L%6AB 9ernell A!%
1ernelul #inux este intr%o continua evolutieE linuxul in sine fiind un sistem de operare
de tipul 0,@N%S0(4C@E <ernelul sau suferind im5unatatiri intr%un mod constant. +ceste
im5unatatiri sunt aduse su5 forma unor noi +,)%uri unele mai sta5ileE altele mai putin sta5ileE
neavand un sistem strict de standardizare ca in cazul .indo!s%ului.
+pelurile +,) pentru 'estionarea proceselor utilizate in cadrul #inux sunt 3
for:() L va crea un nou process su5ordonat procesului parinte identic cu acesta
dar avand un nou id de process.
7for: () 1 va crea un proces su5ordonat si va 5loca procesul parinte
eit() 1 va inc$ide procesul curent
clone() 1 creeaza un proces su5ordonatE care imparte memoria si descriptorii
de fisier cu procesul parinte.
+ait C +aitpid 1 asteapta inc$eierea unui proces
setpgidCgetpid 1 seteaza 'rupul unui proces
setsid L creeaza o sesiune noua si seteaza id%ului 'rupului de proces
setgid 1 seteaza indentificatorul unui 'rup
:illpg 1 trimite semnalul de inc$idere unui 'rup de procese
:ill 1 trimite semnalul de inc$idere catre un anumit proces
eec7 C eec7p 1 utilizate pentru executarea unui proces
+%
$ttp3==msdn.microsoft.com=en%us=li5rarD=ms6"4"47X2"vK?S."5X2:.aspxNprocessJfunctions
eec7e 1 executa un proces intr%un mediu asi'nat
/atorita faptului ca #)N(* este un sistem aflat in continua dezvoltareE aceasta lista de +,)%
uri poate fi modificata intr%un mod constantE lucru ce duce la im5unatatirea <ernel%lui
sistemului si implicit la im5unatatirea sistemului de operare #)N(*.
27
+&
$ttp3==!!!.Dolinux.com=9(904)+#S=For<@xec,rocesses.$tml
Capitolul ": Comparatie intre implementarea
proce(elor (i 0relor de e&ecutie la *inu& (i 1indo2(-
+adalina Do.roiu!"#1$%
9oate sistemele de operate moderne se 5azeaz8 pe ni6te concepte de 5az8 precum
proceseleE memoriaE fi6ierele etc. Nu este necesar ca un utilizator normal a unui sistem de
operare s8 cunoasc8 aceste concepte dar un pro'ramator ar tre5ui s8 le cunoasc8 pentru a
putea dezvolta aplica;ii cYt mai eficienteE care utilizeaz8 corect toate resursele sistemului de
calculE de preferin;8 porta5ile de pe un sistem de operare pe altul.
Cea mai simpla defini;ie a unui proces este3 ,n proces este un program aflat -n curs
de e!ecu.ie.
(n sistem de operare modern are sarcina de a crea 6i termina proceseE suspenda 6i
continua proceseE sincroniza procese prin metode specificeE asi'ura comunicarea 2ntre
proceseE rezolva situa;iile de impas etc. ,entru a realiza aplica;iiE pro'ramatorul se va folosii
de aceste func;ii ale sistemului de operare. ,ro5lema este ca sistemele de operare a5ordeaz8
diferit aceste func;iiE fiecare a5ordare avYnd unele avantaHe dar 6i unele dezavantaHe.
Cele mai utilizate sisteme de operare 2n prezent sunt cele 5azate pe (N)* 6i diferitele
versiuni ale sistemelor .indo!s. ,8rerile despre aceste dou8 feluri de sisteme difer8E unii
spunYnd ca sistemele 5azate pe (N)* au un avantaH fa;8 de sistemele .indo!s pentru c8
ofer8 o flexi5ilitateE sta5ilitate 6i securitate mai mareE pe de alt8 parte al;ii pretind c8 sistemele
.indo!s au un avantaH deoarece sunt mai u6or de folosit. 7n timp diferen;ele 2ntre aceste dou8
sisteme s%au mic6orat.
4.1.!rocese n Linu
4.1.1 %mplementarea in Linu
)n #inux nu exista o diferenta precisa intre procese si fire de executie.(n proces TparinteR
poate crea mai multe procese TcopilR care acceseaza acelasi spatiu de memorie alocat
procesului parinte.+tunci cand unul dintre copii incearca sa modificeFsa scrieG o zona de
memorie a procesului parinteEeste creata o copie a acelei zone de memorie pe care va opera in
continuare procesul copilEnefiind astfel nevoie sa fie creata o copie a intre' spatiului de
memorie al procesului parinte pentru fiecare copil Fse folosest emecanismul copD%on%
!riteG.,rocesele copil pot fi asemanate cu firele de executie
2"
.
,entru 'estionarea proceselor in #inuxE<ernelul aloca fiecarui proces o structura de date
numita task/structFdefinita in fisierul linux=include=linux=sc$ed.$ din codul sursa al
<erneluluiG.4ezulta o colectie de structuri de date task/struct care va fi reprezentata su5 doua
forme3
su5 forma de vectorFta5el de cautareG de structuri task/structO
su5 forma de lista circulara du5lu%inlantuita de structuri task/struct.
+'
/avid + 4uslin'E <#e Linu 9ernelE 1:::E carte disponi5il8 'ratuit la
adresa3 $ttp3==tldp.or'=#/,=tl<=tl<.$tml
)n reprezentarea su5 forma de ta5elEfiecarui proces ii este asociat un identificator de
procesF,)/G.4elatia dintre ,)/ si indexul unei structuri task/struct in vector este
urmatoareaFin versiunea 2.4 a <erneluluiG 3 0nde! 1 (((((0D) 22 3) 4 ((0D)) 5 ((0D6$S6/S7
8 9)) Eunde ,)/U+SUJSZ este dimensiunea ta5elului de cautare.
4eprezentarea su5 forma de lista circulara du5lu%inlantuita este folosita pentru a sta5ili
ordinea de executie a proceselor.
2:
Structura task/struct este foarte complexa insa campurile ei pot fi impartite in urmatoarele
cate'orii
Stari3 0rice proces isi sc$im5a starea in functie de contextul in care se afla.
,utem avea urmatoarele tipuri de stari 3
in e!ecutie 3 procesul ruleaza sau este capa5il sa ruleze dar asteapta sa fie preluat de
catre
microprocesorO
in asteptare : procesul asteapta un eveniment sau eli5erarea unei resurseOprocesele in
asteptare pot fi
intrerupti5ileFpot fi oprite cu anumite semnale de oprireG si neintrerupti5ileFfunctionarea lor
este
conditionata de partea $ard!are si nu pot fi intrerupte folosind semnaleGO
oprit : procesul a primit un semnal de oprireO
7om#ie : sunt procese oprite dar care inca mai au o structura task/struct alocata in
ta5elul de cautare.
)nformatii utile coordonarii proceselor3in functie de aceste informatii sunt
distri5uite resursele si prioritatile de executie proceselor.
)dentificatori3)/ de utilizatorE)/ de 'rup s.a. O in functie de aceste informatii sunt
sta5ilite drepturile de acces ale proceselor la sistemul de fisiere.
Comunicare intre procese% sunt suportate diverse mecanisme de comunicare intre
procese 3 semafoareEsemnaleEcozi de mesaHeEteviEmemorie partaHata.
#e'aturi 3 orice proces are un proces parinte.,arintele tuturor proceselor din
#inux este procesul initF1G.Structura tas<Jstruct contine pointeri catre parintele
procesului respectivEcatre alte procese care au acelasi parinteFTfratiRGEcatre
procesele copil.
Cronometre 3 contoare care tin evidenta timpului consumat de fiecare proces in
parte.)n functie de aceste contoare procesul isi poate trimite anumite semnale la
anumite momente de timp in executia sa.
+(
/avid + 4uslin'E <#e Linu 9ernelE 1:::
4.1.2.Crearea proceselor :
#a pornirea sistemului in modul nucleuEexista un sin'ur proces initial parinte.
/upa ce sistemul a fost initializat acest proces parinte lanseaza un fir de executieFun
proces copilG numit init dupa care ramane inactiv.Structura tas<Jstruct alocata
procesului parinte este sin'ura care nu este alocata dinamic ci este declarata ca
varia5ila statica in codul sursa al <erneluluiFse numeste init/taskG.
/upa ce a fost lansat in executieEprocesul init initializeaza sistemulFinitializeaza
consolaEmonteaza sistemul principal de fisiereG dupa careEin functie de continutul
fisierului =etc=initta5 lanseaza in executie alte procese.
/in aceasta faza noi procese pot fi create prin clonarea celor deHa existente prin
apelarea unor proceduri de sistemFcloneEfor<Evfor<G.
31
/aca dorim sa rezolvam o pro5lema care se preteaza la o implementare cu mai multe
proceseE primul lucru pe care ar tre5ui sa%l stim este cum sa creem un nou proces.)n #inux E
modalitatea de a crea un nou proces este apelul functiei for<FG E care se 'aseste in 5i5liotecile
Iunistd.$I si IsDs=tDpes.$I Eacestea tre5uind incluse daca vrem sa utilizam Fcu succesG functia
for<.
,rototipul arata cam asa3 pid/t fork("oid):
Ce se intampla dupa un apel for< 3
%se creaza un nou proces E prin copierea se'mentelor de date si de cod ale procesului
apelantO
3)
http:,,eboo-s#unibuc#ro,in.or/atica,Seiso,4#+01les,te$t#ht/
31
Andre2 S# 3anenbau/4 Si(teme de operare moderne4 "5blos4 +))4;
%functia intoarce in procesul tata ,)/%ulFprocess identifierG procesului nou creatO
%functia intoarce in procesul fiu >O
%intoarce %1 in caz de eroare Fadica nu s%a reusit crearea unui nou procesG.
Sa urmarim un exemplu ca sa ne dam seama si mai 5ine ce se intampla. ,ro'ramul
urmator creaza un proces copil E dupa care fiecare proces isi tipareste ,)/%ul.
;include
;include
;include
int main()
< pid/t pid:
int status:
//apelul fork()
pid1fork():
switch(pid)
< case =: //aici ne aflam in procesul copil
printf(>(0D fiu:?d@n>Agetpid()):
return =:
#reak:
case B9:
//eroareB ar fi #ine daca sBar face si tratarea erorii
#reak:
default:
//aici ne aflam in procesul parinte
//asteptam intai sa se termine procesul copil
wait(5status):
//tiparim mesaCul
printf(>(0D parinte:?d@n>Agetpid()):
D
return =:
D
05servatii3

Se vede ca in s!itc$FpidG E cand ma aflu in procesul copil la sfarsitul sectiunii case
corespunzatoare Fcase >G folosesc inainte de 5rea< apelul return.+ceasta imi asi'ura ca dupa
apelul for< procesul copil executa numai ce se afla intre case >3 si apelul return E asi'urand
astfel terminarea procesului copil. /in cauza ca se copiaza zona de cod a procesului parinte in
procesul fiu E dupa iesirea din s!itc$FG E am5ele procese vor executa aceleasi instructiuni. )n
exemplul de fata E nu se mai executa decat return E deci s%ar fi putut si fara return la procesul
copil. /aca pro'ramul ar contine o 5ucla in care se face un for< E daca procesul copil nu se
termina E ar putea rezulta ceea ce se numeste un for<%5om5 E pro'ramul 'enerand la infinit noi
procese E care vor provoca in cele din urma o 5locare a sistemului de operare.
S%a folosit functia !ait3 pidJt !aitFint SstatusGO pentru a astepta terminarea procesului
copil. /aca nu se face !ait E procesele copil terminate vor fi inca prezente in sistemul de
operare ca defuncte sau zom5ie. /aca vreti sa vedeti cum se manifesta asta faceti mai multe
procese pe care nu le asteptati cu !aitFG si urmariti procesele pornite din sistem. Functia !ait
asteapta terminarea oricarui proces copil E dupa care in IstatusI se pot re'asi informatii despre
codul de return al procesului fiu si alte
,entru a intoarce ,)/%ul procesului parinte avem functia3 c$estii interesante. ,entru a
astepta terminarea unui anumit proces E se foloseste !aitpid3 pid/t waitpid(pid/t pidAint
EstatusAint options): care asteapta terminarea procesului cu ,)/%ul pid.
,entru a intoarce ,)/%ul procesului curent avem functia3
pid/t getpid("oid):
pid/t getppid("oid):
05servatie3
/in cauza faptului ca dupa apelul for< se copiaza sectiunea de date a procesului parinte in
procesul fiu E orice modificare asupra unei varia5ile declarata inainte de for<FG intr%un proces
nu va fi sesizata in celalalt proces.
4.1.3.Rularea unui program eecuta'il
Cel mai simplu mod prin care se poate rula un proces este prin folosirea func;iei de
5i5liotec8 s8stem :
int system(const charEcommand):
+pelarea acestei func;ii are ca efect execu;ia su5 forma unei comenzi s$ell comanda
reprezentat8 prin strin'ul de caractere command.
)mplementarea s8stem3 este creat un nou process cu for<O procesul copil rezultat execut8
prin intermediul exec pro'ramul s$ cu ar'umentele Lc TcommandRE timp 2n care p8rintele
a6teapt8 terminarea procesului copil.
32

4.1.4.AfiDa unui copac de procese
pstree arat8 procesele care ruleaz8 ca un copac. Copacul este 2nr8d8cinat8 fie la pid sau la
ini;ializare dac8 ,)/ este omis. 7n cazul 2n care un nume de utilizator este specificatE toate
procesele copaci de;inute de utilizator sunt afi6ate.
F pstree
3+
6# Ra5/ond 7 The Art of Unix Programming 7 Addison89esle54 +))3
4.1.-. Enlocuirea imaginii unui proces
Familia de func;ii eec execut8 un nou pro'ram 2n care inlocuiesc ima'inea procesului
curent cu cea dintr%un fi6ier Fexecuta5ilG. Spa;iul de adrese este 2nlocuit de unul nou special
creat pentru execu;ia fi6ierului. /e asemeneaE vor fi reinitializa;i re'i6trii $ard!are ai
procesorului ), F@),=4),G 6i S, F@S,=4S,G 6i re'i6trii 'enerali. ?or fi setate la valorile
implicite m8stile de semnale i'norate 6i 5locateE ca 6i $andler%ele semnalelor. ,)/%ul 6i
descriptorii fi6ierelor ce nu au setat fla'ul C#0S@J0NJ@*@C vor r8mYne nesc$im5a;i
Fdeoarece implicit fla'ul C#0S@J0NJ@*@C nu este setatG.
33
int execvFconst c$ar SfilenameE c$ar Sconst ar'vBCGO

@*@C? execut8 pro'ramul descris de pointerul c8tre 6irul de caractere filenameO vectorul
ar'v e format din pointeri c8tre 6iruri de caractere ce descriu ar'umentele cu care pro'ramul
reprezentat de filename va fi executatO ultimul element al vectorului tre5uie s8 fie setat pe
N(##. Calea catre pro'ram tre5uie s8 fie complet8 pentru c8 nu se caut8 2n ,+9U.
,rimular'ument este numele pro'ramului.
int e!ecl(const char EfilenameA const char Earg=A ...):

#a @*@C# ar'umentele vor fi date ca parametri ai func;iei. (ltimul parametru tre5uie s8
fie N(##E iar primul ar'ument tre5uie s8 fie numele pro'ramului.
int e!ec"e(const char EfilenameA char Econst arg"GHA char Econst en"GH):
@*@C?@ este la fel ca execvE dar prime6te un vector de pointeri la 6iruri de caractere care
descriu varia5ile de mediu. (ltimul element al vectorului env tre5uie s8 fie setat pe N(##E iar
6irurile de caractere tre5uie s8 fie de forma T?+4)+A)#+ K ?+#0+4@R.
int e!ecle(const char EfilenameA const char Earg=A ...A char Econst en"GH):
@*@C#@ este la fel ca execlE dar prime6te un vector de pointeri la 6iruri de caractere care
descriu varia5ile de mediu. (ltimul element al vectorului env tre5uie s8 fie setat pe N(##E iar
6irurile de caractere tre5uie s8 fie de forma T?+4)+A)#+ K ?+#0+4@R.
int e!ec"p(const char EfilenameA char Econst arg"GH):

@*@C?, este asem8n8toare cu execvE dar calea pro'ramului nu mai tre5uie s8 fie a5solut8
pentru c8 va fi c8utat 2n toate directoarele specificate de varia5ila de mediu ,+9U.
int e!eclp(const char EfilenameA const char Earg=A ...):

@*@C#, este asem8n8toare cu execlE dar calea pro'ramului nu mai tre5uie s8 fie a5solut8
pentru c8 va fi c8utat 2n toate directoarele specificate de varia5ila de mediu ,+9U.
/aca se folose6te orice func;ie din familia eecE atunci este necesar8 includerea $eaderului
unistd.#.
34
4.1.4.ADteptarea terminFrii unui proces

Familia de func;ii +ait suspend8 execu;ia procesului apelant pYn8 cYnd procesul FproceseleG
specificate 2n ar'umentele acesteia fie s%au terminatE fie au fost oprite FS)&S90,G.
pidJt !aitpidFpidJt pidE int SstatusE int optionsGO
33
Vic-i Stan1eld4 R# S/ith 7 Administrarea Sistemului Linux 3eora +))4
34
6# Ra5/ond 7 The Art of Unix Programming 7 Addison89esle54 +))3
,rocesul apelant va fi 5locat pYn8 cYnd procesul cu ,)/%ul pid se va termina sau va fi oprit 6i
el la rYndul lui.
?aloarea ar'umentului pid poate fi3
P> atunci cand reprezint8 ,)/%ul unui procesO
> F.+)9J[&4,G 6i atunci identific8 orice proces copil din 'rupul de procese din
care
face parte procesul apelantO
%1 F.+)9J+N[G orice proces copil.
,arametrul options poate fi setat cu unul sau mai multe din urm8toarele fla'uri
Fcom5inate prin S+( pe 5i;iG3
.N0U+N& L dac8 nici unul din procesele specificate nu este terminatE se va ie6i
imediat
din apelul !aitpid Fprocesul care apelase !aitpid nu se 5loc$eaz8GO
.(N94+C@/ L !aitpid se 2ntoarce 6i dac8 unul dintre procesele specificate s%a
opritE iarinforma;iile despre aceast8 oprire nu au fost 2nc8 raportateO dac8 acest fla'
este setatE!aitpid se 2ntoarce 6i pentru procesele copil care s%au opritE dar care nu se
afl8 2ntreprocesele Turm8riteR de procesul apelantO informa;iile despre copii Turm8ri;iR
suntfurnizate c$iar dac8 acest fla' nu este precizat.
35

Func;ia va 2ntoarce ,)/%ul procesului a c8rui stare este raportat8O informa;iile de stare sunt
depuse 2n loca;ia c8tre care indic8 status. Func;ia se va 5loca dac8 nici unul din procesele
specificate nu este 2nc8 terminat Fsau dac8 nici unul din ele nu este oprit 6i s%a
setat.(N94+C@/GE mai pu;in atunci cYnd este setat .N0U+N&E caz 2n care func;ia
2ntoarce >.
+tunci cYnd este eroare se va 2ntoarce %1E iar errno este setat pe3
@)N94 apelul a fost 2ntrerupt de un semnal
@CU)#/ nu s%a specificat un ,)/ de proces copil valid
@)N?+# este specificat un fla' invalid pentru options
Starea procesului intero'at se poate afla prin examinarea statusului cu urm8toarele
macrodefini;ii3
.)F@*)9@/FstatusG 2ntoarce o valoare diferit8 de > dac8 procesul intero'at s%a
terminat prin exit
.@*)9S9+9(SFstatusGE dac8 .)F@*)9@/FstatusG e diferit de >E arat8 codul de
terminare a procesului
.)FS)&N+#@/FstatusG 2ntoarce o valoare diferit8 de > dac8 procesul intero'at s%
a terminat datorit8 unui semnal netratat
.9@4S)&FstatusGE dac8 .)FS)&N+#@/FstatusG e diferit de >E arat8 num8rul
semnalului datorit8 c8ruia procesul s%a terminat
.C04@/(,FstatusG 2ntoarce o valoare diferit8 de > dac8 procesul intero'at a
'enerat un core
.)FS90,,@/FstatusG 2ntoarce o valoare diferit8 de > dac8 procesul intero'at este
oprit
.S90,S)&FstatusGE dac8 .)FS90,,@/FstatusG e diferit de >E 2ntoarce num8rul
semnalului care a oprit procesul
2'ser7aGie
3*
S# Sinchac- 7 Hacking Windows XP e8boo-
+ceste macrodefini;ii primesc ca ar'ument 5uffer%ul 2n care se afl8 informa;ia de stare Fadic8
un intGE 6i nu un pointer c8tre acest 5uffer.
pidJt !aitFint SstatusGO
?arianta simplificat8 care a6teapt8 orice proces copil s8 fie terminat. @ste ec$ivalent8 cu3
!aitpidF%1E \statusE >GO
,entru a folosi !ait sau !aitpid tre5uie incluse $eader%ele sDs=tDpes.$ 6i sDs=!ait.$.
36
4.1.3.<erminarea unui proces
,entru terminarea procesului curent #)N(* pune la dispozi;ie apelul de sistem eit Fal c8rui
antet este descris 2n stdli5.$G.
void exitFint statusGO
,rocesul apelant va fi terminat imediat. 9o;i descriptorii de fi6ier ai procesului sunt 2nc$i6iE
copii procesului sunt Tinfia;iR de procesul initE iar p8rintelui procesului 2i va fi trimis un
semnal S)&CU#/. ,rocesului p8rinte 2i va fi 2ntoars8 varia5ila status ca rezultat al unei
func;ii de a6teptare F!ait sau !aitpidG.
,entru terminarea unui alt proces din sistemE se va trimite un semnal c8tre procesul respectiv
prin intermediul apelului de sistem :ill.B4C
4.1.=.Copierea descriptorilor de fiDier

int dupFint oldfdGO

/uplic8 descriptorul de fi6ier oldfd 6i 2ntoarce noul descriptor de fi6ier sau %1 2n caz de
eroare.
int dup2Fint oldfdE int ne!fdGO
/uplic8 descriptorul de fi6ier oldfd 2n descriptorul de fi6ier ne!fdO dac8 ne!fd exist8E
mai 2ntYi va fi 2nc$is fi6ierul asociat. 7ntoarce noul descriptor de fi6ier sau %1 2n caz de eroare.
/escriptorii de fi6ier sunt de fapt un index 2n ta5ela de fi6iere desc$iseE ce con;ine
pointeri c8tre o structur8 ce con;ine informa;ii despre fi6ier. /uplicarea unui descriptor de
fi6ier 2nseamn8 duplicarea intr8rii din ta5ela de fi6iere desc$ise Fadica un pointerG. /in acest
motivE toate informa;iile asociate unui fi6ier Floc<%uriE pozi;ia 2n fi6ierE fla'urileG sunt partaHate
de cei doi file descriptori. Ceea ce 2nseamn8 c8 opera;iile ce modific8 aceste informa;ii pe
unul din file descriptori Fde ex. lsee<G sunt vizi5ile 6i pentru cel8lat file descriptor FduplicatG 6i
invers.
2'ser7atie: @xist8 6i o excep;ie3 fla'ul C#0S@J0NJ@*@C nu este partaHat Facest fla' nu
este ;inut 2n structura men;ionat8 mai susG.
,entru a putea folosi dup 6i dup2 tre5uie inclus $eader%ul unistd.$. B"C
4.1.)."oDtenirea descriptorilor de fiDier dupF operaGii for:Ceec
/escriptorii de fi6ier ai procesului p8rinte se mo6tenesc 2n procesul copil 2n urma apelului
for<. /up8 un apel exec descriptorii de fi6ier sunt p8stra;i de asemeneaE mai pu;in aceia dintre
ei care au setat fla'ul C#0S@J0NJ@*@C.
,entru a seta fla'ul C#0S@J0NJ@*@C se folose6te func;ia fcntl cu un apel de 'enul3
fcntlFfileJdescriptorE FJS@9F/E F/JC#0@*@CGO
3%
A# 3anenbau/ 7 Modern !erating S"stems 7 e8boo-
,entru a putea folosi func;ia fcntl tre5uie incluse $eader%ele unistd.$ 6i fcntl.$.
9rei dintre descriptorii de fi6ier sunt mai importan;i3
S9/)NJF)#@N0 toate pro'ramele o5i6nuite con;in acest file descriptor care are valoarea
>O el reprezint8 intrarea standardO tot ce utilizatorul scrie la terminalE pro'ramul va putea citi
din acest file descriptor
S9/0(9JF)#@N0 toate pro'ramele o5i6nuite au acest file descriptor care are valoarea 1O
el reprezint8 ie6irea standardO toate apelurile de 'enul printf vor 'enera output la terminal
S9/@44JF)#@N0
toate pro'ramele o5i6nuite au acest file descriptor care are valoarea 2O el reprezint8 ie6irea
standard de eroare.
37
4.1.1$. (aria'ile de mediu

char EEen"iron:
(n vector de pointeri la 6iruri de caractereE ce con;in varia5ilele de mediu 6i valorile lor.
?ectorul e terminat cu N(##. ]irurile de caractere sunt de forma
T?+4)+A)#+K?+#0+4@R.
c$arS 'etenvFconst c$ar SnameGO
7ntoarce valoarea varia5ilei de mediu denumite nameE sau N(## dac8 nu exist8 o varia5il8 de
mediu denumit8 astfel.
int setenvFconst c$ar SnameE const c$ar SvalueE int replaceGO
+dau'8 2n mediu varia5ila cu numele name Fdac8 nu exist8 deHaG 6i 2i seteaz8 valoarea la
value. /ac8 varia5ila exist8 6i replace e >E ac;iunea de setare a valorii varia5ilei e i'norat8O
dac8 replace e diferit de >E valoarea varia5ilei devine value.
int unsetenvFconst c$ar SnameGO
]ter'e varia5ila denumit8 name din mediu.
3"
4.1.11. ,epanarea unui proces
,e maHoritatea sistemelor de operare pe care a fost portatE 'd5 nu poate detecta cYnd un
proces realizeaz8 o opera;ie for<FG. +tunci cYnd pro'ramul este pornitE depanarea are loc
exclusiv 2n procesul ini;ialE procesele copii nefiind ata6ate de5u''er%ului. 7n acest cazE sin'ura
solu;ie este introducerea unor 2ntYrzieri 2n executia procesului nou creat Fde exempluE prin
apelul de sistem sleepFGGE care s8 ofere pro'ramatorului suficient timp pentru a ata6a manual
'd5%ul la respectivul procesE presupunYnd c8 i%a aflat ,)/%ul 2n preala5il. ,entru a ata6a
de5u''er%ul la un proces deHa existentE se folose6te comanda attac$E 2n felul urm8tor3
F'd5G attac# PID
+ceast8 metod8 este destul de incomod8 6i poate cauza c$iar o func;ionare anormal8 a
aplica;iei depanateE 2n cazul 2n care necesit8;ile de sincronizare 2ntre procese sunt stricte Fde
exemplu opera;ii cu time%outG.
/in fericireE pe un num8r limitat de sistemeE printre care 6i #inuxE 'd5 permite depanarea
comod8 a pro'ramelor care creeaz8 mai multe procese prin for<FG 6i vfor<FG. ,entru ca 'd5 s8
urm8reasc8 activitatea proceselor create ulteriorE se poate folosi comanda set follo!for<%
modeE 2n felul urm8tor3
F'd5G set follo+-for:-mode mode
unde mode poate lua valoarea parentE caz 2n care de5u''er%ul continu8 depanarea procesului
p8rinteE sau valoarea c$ildE 6i atunci noul proces creat va fi depanat 2n continuare. Se poate
3&
Vic-i Stan1eld4 R# S/ith 7 Administrarea Sistemului Linux 3eora +))4
3'
S. Sinc$ac< L 6acking Windows I( J e%5oo<
o5serva c8 2n aceast8 manier8 de5u''er%ul este ata6at la un moment dat doar la un sin'ur
procesE neputYnd urm8ri mai multe simultan.
Cu toate acesteaE 'd5 poate .ine e"iden.a tuturor proceselor create de c8tre pro'ramul
depanatE de6i 2n continuare numai un sin'ur proces poate fi rulat prin de5u''er la un moment
dat. Comanda set detac$%on%for< realizeaz8 acest lucru3
F'd5G set detac#-on-for: mode
unde mode poate fi onE atunci cYnd 'd5 se va ata6a unui sin'ur proces la un moment dat
Fcomportament implicitGE sau offE caz 2n care 'd5 se ata6eaz8 la toate procesele create 2n
timpul execu;ieiE 6i le suspend8 pe acelea care nu sunt urm8riteE 2n func;ie de valoarea set8rii
follo!for<%mode.
Comanda info for<s afi6eaz8 informa;ii le'ate de toate procesele aflate su5 controlul 'd5
la un moment dat3
F'd5G info for:s
/e asemeneaE comanda for< poate fi utilizat8 pentru a seta unul din procesele din list8 drept
cel activ Fcare este urm8rit de de5u''erG.
F'd5G for: fork-id
unde forkBid este identificatorul asociat procesuluiE a6a cum apare 2n lista afi6at8 de comanda
info for<s.
+tunci cYnd un anumit proces nu mai tre5uie urm8ritE el poate fi 2nlaturat din list8 folosind
comenzile detac$ for< 6i delete for<3
F'd5G detac# for: fork-id
F'd5G delete for: fork-id
/iferen;a dintre cele dou8 comenzi este c8 detac$ for< las8 procesul s8 ruleze independentE 2n
continuareE 2n timp ce delete for< 2l 2nc$eie.
3:

4.2 !rocese n *indo+s
Cel mai utilizat sistem de operare 2n prezent este .indo!s *, ocupYnd 2n Hur de 73X din
pia;a sistemelor de operare. +sta 2nsemnYnd c8 6i maHoritatea pro'ramelor sunt scrise 2n a6a
fel 2ncYt s8 poate fi rulate pe acest sistem de operare.
4.2.1.%mplementarea in *indo+s
#a cel mai inalt nivel de a5stractieEun proces .indo!s consta in urmatoarele elemente 3
(n spatiu virtual de adrese privatFmemoria pe care o are procesul la dispozitieGO
(n pro'ram executa5il care contine instructiunile pro'ramului si care va fi incarcat in
spatiul virtal de adreseO
lista de le'aturi spre resurse de sistemEporturi de comunicatieEfisiereO
(n context de securitate reprezentat de un nume de utilizatorEo lista de 'rupuri din
care face parte utilizatorulEprivile'iile de care are parte procesulO
(n identificator de proces unicFintern se mai numeste si identificator de clientGO
Cel putin un fir de executie .

(n proces .indo!s mai contine si un pointer catre procesul parinteFdin care a fost
lansatG.+cest pointer poate fi nul. Firul de executie este componenta fundamentala a unui
proces.(n proces fara fire de executie nu se poate executa.(n fir de executie din .indo!s
poate fi descris de urmatoarele componente
4>
3(
.i<ipedia free on%line encDclopedia L www.wikipedia.com
4)
4ussinovic$E . @. and SolomonE /.+. icrosoft .indo!s )nternalsE 4t$
Starea curenta a procesorului descrisa de valorile din re'istriFcontextulGO
/oua stive fiecare petru executia intr%unul din cele doua moduri 3 utilizator sau nucleuO
(n identificator al firului de executieFface parte din acelasi spatiu cu identificatorii de
procese astfell ca
nu va putea exista un proces si un fir de executie cu acelasi identificatorGO
(neori firele de executie au si un context de securitate
Formatul contextului unui fir de executie este dependent de ar$itectura masinii pe care
ruleaza sistemul de operare.Cu aHutorul metodei Ket%hread+onte!t se pot extra'e informatii
din contextul firului de executie.
Fi5rele sunt niste fire de executie care pot fi lansate in executie manual prin apelul
metodei Switch%oLi#er.Spre deose5ire de fi5reEfirele de executie ruleaza automat cu aHutorul
unui mecanism de coordonare 5azat pe prioritati.
Ca si in #inuxEin .indo!s exista doua moduri de acces la microprocesor 3 modul
utilizator si modul nucleu./iferentierea modurilor de acces este necesara pentru a preveni
accesul utilizatorului la elemente critice ale sistemului de operare.)n acest fel un eventual
comportament neo5isnuit al unei aplicatii destinate utilizatorului nu va pertur5a functionarea
intre'ului sistem de calcul.
41
,entru 'estionarea proceselor in .indo!sEfiecarui proces ii este alocata o structura
*(R)+*SS. ,e lan'a diversi parametri ai procesuluiEaceasta structura mai contine si pointeri
catre alte structuri cum ar fi structuri de tip *%6R*$D care descriu fire de executie sau spre
alte structuri *(R)+*SSFex. Spre procesul
parinteG.
4.2.2.Crearea unui proces :
(n proces este creat atunci cand un alt proces apeleaza metoda +reate(rocess din
5i5lioteca <ernel32.dll.
Crearea procesului se face in urmatorii pasi 3
Fisierul executa5il este analizat./aca este un fisier executa5il .indo!s pe 16 5iti sau
S%/0S atunci este creat un mediu special de executie pentru acestaOdaca fisierul este
un executa5il .indo!s pe 32 de 5iti se verifica re'istrul pentru a vedea daca are vreo
cerinta speciala.0peratiile de la acest pas se fac in modul utilizator.
. Se creeaza un o5iect proces 'ol cu apelul de sistem NtCreate,rocess si se adau'a in
spatiul de nume al mana'erului de o5iecte. ai sunt create un o5iect nucleu si unul
executiv. ana'erul de proiecte creeaza un 5loc de control al procesului pentru acest
o5iect si il initializeaza cu )dul procesului si cu alte campuri.@ste creat un o5iect
sectiune pentru a urmari spatiul de adrese al procesului.
<ernel32.dll preia controlulEefectueaza apelul de sistem Mt+reate%hread pentru a crea
un fir de executie initial.Se creeaza stivele utilizator si nucleu./imensiunea stivei este
data de antetul fisierului executa5il.
<ernel32.dll trimite su5sistemului de mediu .in32 referintele catre proces si catre
firul de executie care sunt adau'ate in niste ta5ele.
@ste apelata o procedura de sistem care termina initializarea iar firul de executie
incepe sa ruleze.
@ditionE icrosoft ,ressE 2>>5 Fface parte din .indo!s 4esearc$ 1ernelG
41
+ndre! S. 9anen5aumE 0isteme de operare moderneE AD5losE 2>>4O
procedura apelata la executie seteaza prioritatea firului de executie.Se repeta pasul
pentru toate firele de executie.)ncepe rualrea codului principal al procesului.
42
Sistemul de operare poate crea procese sau poate desfiin;a procese.7n timpul execu;ieiE
un proces poate crea unul sau mai multe procese noi. ,rocesele create sunt numite RcopiiR iar
procesul care le creaza este numit Rp8rinteR.
,rocesul nou creat are 6i el nevoie de resurseE pe care le ia direct de la sistemul de
operare sau de la procesul Rp8rinteR.
,rocesul Rp8rinteR poate aloca spre utilizare numai o parte a resurselorE cum ar fi
memoria sau fi6iereleE prevenind astfel supra2nc8rcarea sistemului din cauza cre8rii prea
multor procese RcopiiR.
43
Funcia CreateProcess-Creeaz8 un proces nou.Noul proces ruleaz8 2n contextul de
securitate oferit de procesulapelat. /aca procesul apelat ;ine loc de un alt userE procesul nou
utilizeaz8 semnul procesului apelatE nu semnul celui care ;ine loc userului. ,entru a rula noul
process 2n contextul de securitate al userului reprezentat de semnul 2nlocuitorE se folose6te
func;ia Create!rocessAsAser sau func;ia Create!rocess*it#Logon*.
Sintaxa3
A00# .)N+,) Create,rocessF
JJinJopt #,C9S94 lp$pplicationMameE
JJinoutJopt #,9S94 lp+ommandNineE
JJinJopt #,S@C(4)9[J+994)A(9@S lp(rocess$ttri#utesE
JJinJopt #,S@C(4)9[J+994)A(9@S lp%hread$ttri#utesE
JJin A00# #0nherit6andlesE
JJin /.04/ dw+reationLlagsE
JJinJopt #,?0)/ lp*n"ironmentE
JJinJopt #,C9S94 lp+urrentDirectoryE
JJin #,S9+49(,)NF0 lpStartup0nfoE
JJout #,,40C@SSJ)NF04+9)0N lp(rocess0nformation
GO
!arametrii:
9)lp$pplicationMame L Numele modulului care va fi executat.+cest modul poate fi o aplica;ie
proprie .indo!s.,oate fi 6i alt tip de modulFde exempluE S%/os sau 0S=2GE dac8
su5sistemul potrivit este disponi5il pe calculator. ,arametrul lp$pplicationMame poate fi
N(##. 7n acest caz numele modulului tre5uie s8 fie primul semn delimitat de un spa;iuE la
sfYr6itul 6i la 2nceputului
ar'umentului.
2G lp+ommandNine %#inia de comand8 poate fi executat8. #un'imea maxim8 a acestui 6ir este
32 mii caractere. /aca parametrul T lp+ommandNine R este N(## E atunci avem o limitare de
caractere la T+*J,+9UR. ?ersiunea (nicod a acestei func;iiE
TCreate!rocess*it#Logon* T poate modifica con;inutul acestui 6ir./rept urmare ace6ti
parametrii nu pot fi pointeri la
memoria Tread%onlDR pentru c8 s%ar realiza o violare a accesului.
O) lp(rocess$ttri#utesB(n pointer la structura 0/CAR%<HIA<<R%BA</0 care determin8
daca ceea ce returneaz8 procesul poate fi mo6tenit la noul proces provenit din acesta. /ac8
acest paramentru este N(## atunci rezultatul returnat de process nu poate fi mo6tenit.
4+
+ndre! S. 9anen5aumE 0isteme de operare moderneE AD5losE 2>>4O
43
+. 9anen5aum L &odern )perating Systems L e%5oo<
4G lpStartup0nfo L un pointer la structura T Startup )nfoT.
5G T lp,rocess)nformation R% un pointer la structura T,rocess)nformation R care prime6te
informa;ii identificatoare despre noul process.
6G T lp+urrentDirectory R Calea c8tre directorul curent pentru proces. /ac8 parametrul este
N(## atunci noul proces va avea acela6i director 6i drive ca 6i procesul apelat.
7G T lp*n"ironmentP L un pointer c8tre mediul alocat pentru procesul nou format.
/aca parametrul este N(##E noul proces folose6te mediul vec$iului proces.
/aca func;ia compileaz8 atunci r8spunsul va fi o valoare diferit8 de >E dac8 are eroare
atunci 2ntoarce >.
44
"G lp%heread$ttri#utesJ (n pointer c8tre o structur8 de tipul S@C(4)9[J+994)A(9@S
care determin8 dac8 descriptorul c8tre noul t$read poate fi mo6tenit de procese fiu. /ac8
parametrul este N(## descriptorul nu poate fi mo6tenit.
:G #0nherit6andles J /ac8 parametrul este 94(@ orice descriptor care poate fi mo6tenit va fi
mo6tenit de procesul fiu. /ac8 este F+#S@ descriptorii nu vor fi mo6teni;i.
1>G dw+reationLlags J +cest parametru controleaz8 clasa de priorit8;i a procesului 6i crearea
acestuia.

Funcia Close!andle-7nc$ide un descriptor desc$is.
Sintaxa3
A00# .)N+,) CloseUandleF
JJin U+N/#@ h)#Cect
GO
Func;ia nu are parametrii. /ac8 func;ia complieaz8E valoarea 2ntoars8 este diferit8 de >E dac8
nuE este >. Func;ia CloseUandle 2nc$ide descriptor c8tre urmatoarele o5iecte3
+ccess to<enO
Communications deviceO
Console inputO
Console screen 5ufferO
@ventO
FileO
File mappin'O
)=0 completion portO
Wo5O
ailslotO
emorD resource notificationE etc.
45
4.2.3.ADteptarea terminFrii unui proces
Lunc.ia WaitLor0nput0dleB+6teapt8 pYn8 cYnd procesul specificat a6teapt8 ini;ializarea
userului sau pYn8 cYnd intervalul alocat s%a scurs.
Sintaxa3
/.04/ .)N+,) .aitFor)nput)dleF
JJin U+N/#@ h(rocessE
JJin /.04/ dw&illiseconds
GO
,arametrii3
h(rocess un descriptor c8tre proces. /ac8 procesul este o aplica;ie de consol8 sau nu are
un mesaH presta5ilit atunci func;ia raspunde imediat.
44
icrosoft /eveloper Net!or< L www.msdn.com
4*
icrosoft /eveloper Net!or< L www.msdn.com
4eturn code=value /escription
> !ait s%a terminat cu succes
.+)9J9)@0(9 !ait s%a terminat deoarece time%slotul s%a terminat
.+)9JF+)#@/ o eroare a avut loc.
46
4.2.4.<erminarea unui proces
9erminarea unui proces poate fi3
9erminare normala cand un proces se termin8 dup8 executarea ultimei sale
instruc;iuniO
9erminare for;at8 cYnd procesul se 2nc$eie 2nainte de parcur'erea tuturor
instruc;iunilor sale.
CYnd RcopilulR a dep86it limita de folosire a resurselor care i%au fost alocate sau nu mai
este util din punct de vedere al func;iei pe care o realizaE procesul Rp8rinteR poate cere
2nc$eierea for;at8 a execu;iei sale.
(n proces independent este un proces a c8rui execu;ie nu poate afecta sau nu poate fi
afectat8 de execu;ia altor procese din sistem.
47
Funcia TerminateProcess-7nc$ide procesul specificat precum 6i toate procesele desc$ise de
acesta.
Sintaxa3
A00# .)N+,) 9erminate,rocessF
JJin U+N/#@ h(rocessE
JJin ()N9 u*!it+ode
GO
,arametrii 3
h(rocess un descripor c8tre procesul ce tre5uie terminat. +cesta tre5uie s8 ai58 accesul
corespunz8tor.
u*!it+ode codul de ie6ire ce va fi utilizat de c8tre procesul care va fi 2nc$is ca rezultat al
acestei comenzi. Folose6te func;ia >et/itCode!rocess pentru a '8sii aceast8 valoare.
?aloarea returnat8 este diferit8 de > dac8 func;ia compileaz8E dac8 nu ea este >. B1>C
Lunc.ia Ket*!it+ode(rocessB7ntoarce valoarea de sfar6it a procesului terminat.
Sintaxa3
A00# .)N+,) &et@xitCode,rocessF
JJin U+N/#@ h(rocessE
JJout #,/.04/ lp*!it+ode
GO
,arametrii3
h(rocessB un descriptor pentru proces. +cesta tre5uie s8 ai58 accesul corespunzator.
lp*!it+odeB (n pointer c8tre o varia5il8 prin care prime6te valoarea de sfYr6it a procesului
terminat. /ac8 procesul specificat 2nc8 nu a fost terminat 6i functia compileaz8E atunci valoare
returnat8 este S9)##J+C9)?@.
7n restE dac8 func;ia compileaz8 valoarea este diferit8 de >E daca nuE este >.
4"
4%
icrosoft /eveloper Net!or< L www.msdn.com
4&
+. 9anen5aum L &odern )perating Systems L e%5oo<
4'
9. )onescuE Florentina ocrienco L Structura si Functionarea Sistemelor de Calcul L e%5oo<
4.2.-.(aria'ile de mediu
Lunc.ia Ket*n"ironmentStringsB7ntoarce varia5ilele mediului corespunz8tor pentru procesul
curent.
Sintaxa3
#,9CU .)N+,) &et@nvironmentStrin'sFvoidGO
/aca func;ia compileaz8 atunci r8spunsul este un pointer c8tre environment 5loc< al
procesului curetE dac8 nu atunci r8spunsul este N(##.
4:
4(
icrosoft /eveloper Net!or< L www.msdn.com
Capitolul 34 Emularea proramelor +S 5 DOS- $driana
Stoian!"#1$%
-.1 6otiuni ,20
/0SE a5reviere de la ,is< 2peratin' 0Dstem. este un sistem de operare care ruleaza o sin'ura
aplicatie in acelasi timpE adica un sistem sin'le%tas<in'E sin'le%user Fun sin'ur utilizator
existentG ce este 5azat pe linia de comandaE care nu asi'ura executarea concurenta si nici
impartirea resurselor intre mai multe procese. Su5 controlul unui sistem de operare
monotas<in'E in sistemul de calcul se poate executa un sin'ur pro'ramO in acelasi timpO el va
ramane activ din momentul lansarii executiei sale pana in momentul finalizariiO atat timp cat
este in executieE pro'ramul are access la toate resursele sistemului de calcul.
Sistemele /0S includ S%/0SE ,C%/0SE /4%/0SE Free/osE ,9S%/0SE 40%/0SE
Caldera /0SE Novell /0S si multe altele.
7n ciuda utiliz8rii comuneE niciunul dintre acestea sisteme nu a fost pur 6i simplu numit
I/0SI. (n num8r de sisteme de operare microcalculator non%x"6 independente au avut
I/0SI 2n numele lorE 6i sunt adesea denumite simplu I/0SI atunci cYnd se discut8 despre
microcalculatorul care le utilizeaz8 Fde exemplu +mi'a/0SE +S/0SE +N/0SE +pple
/0SE +tari /0SE /0S CommodoreE CS)%/0SE ,ro/0SE 6i 94S%/0SG. 0ferind 2n acela6i
timp multe dintre func;iile acela6i sistem de operare pentru sistemul lor informaticE pro'rame
care ruleaz8 2n unul dintre aceste sisteme operare nu ar rula 2n altele.
-.2 ,efinitie emulatoare
(n emulator du5leaza functiile unui sistem folosind un sistem diferitE astfel incat al doilea
sistem se comporta identic ca primul sistem. +ceast8 concentrare pe reproducerea exact8 a
comportamentului extern este 2n contrast cu alte forme de simulare pe calculatorE care pot
afecta modelul a5stract ale sistemului simulat
5>
.
Fiecare computer consta intr%o parte $ard!are si una soft!are. ,rin inte'rarea acestoraE un
calculator poate oferi o 'ama lar'a de posi5ilitatiE cum ar fi crearea de documente officeE
navi'area pe internet si posi5ilitatea de a Huca diverse Hocuri. /ependenta puternica dintre
partea $ard!are si partea soft!are introduceE de asemeneaE un risc. /ac8 unul dintre acestea
*)
I@mulation for /i'ital ,reservation in ,ractice3 9$e 4esults.I 9$e )nternational Wournal of /i'ital Curation
2.2 F2>>7G3 123%132E van der UoevenE WeffreDE Aram #o$manE and 4emco ?erde'em
e6ueaz8E acesta va avea o influen;8 asupra func;ion8rii computerului 6i prin urmare a
capacit8;ilor sale. +6a cum fiecare dispozitiv $ard!are 2n cele din urm8 va inceta sa
fuctionezeE accesi5ilitatea la o5iectele di'itale este 2n Hoc. @mularea ofer8 o solu;ie la aceast8
pro5lem8.
-.3 /mulatoare "0-,20
7n #inux este posi5il s8 se ruleze copii de /0S 6i multe dintre clonele sale su5 /0S@(E o
ma6in8 de #inux%nativ virtual pentru rularea pro'ramelor /0S la viteza de aproape native.
@xist8 o serie de alte emulatoare pentru /0S care ruleaz8 su5 diferite versiuni de (N)*E c$iar
6i pe platforme non%x"6E cum ar fi /0SAox
51
.
@mulatoarele /0S cY6ti'8 popularitate printre utilizatorii .indo!s *, 6i .indo!s ?istaE
deoarece aceste sisteme sunt foarte incompati5il cu /0S pur. @le pot fi folosite pentru a rula
Hocuri sau alte pro'rame /0S. (na dintre cele mai cunoscute este /0SAoxE proiectat pentru
Hocuri vec$i Fde exempluE 1in'^s _uestE /oomG pe sistemele de operare moderne.
@ste posi5il a rula aplica;ii /0S su5 icrosoft ?irtual ,CE care permit o compati5ilitate mai
5un8 decYt emulatoarele /0S. 0 versiune le'itim8 a S%/0S poate fi instalataE care ar tre5ui
s8 permit8 tuturorE cu exceptia aplica;iilor celor mai 2nc8p8;Ynate s8 ruleze.
-.4 /emple de emulatoare "0-,20
1. ,20Bo
/0SAox emuleaz8 un ,C )ntel x"6 complet cu sunetE 'raficaE mouseE HoDstic<E modemE etc.
necesare pentru a rula mai multe Hocuri vec$i de S%/0SE care pur 6i simplu nu pot fi rulate
pe ,C%uri moderne 6i sisteme de operare cum ar fi icrosoft .indo!s *, .indo!s ?ista
#inux si FreeAS/. Cu toate acesteaE nu este limitat la a rula doar Hocuri. )n teorie orice
aplicatie S%/0S sau ,C%/0S Fmen;ionate la frecvent ca I/0SIG ar tre5ui s8 ruleze 2n
/0SAox dar accentul a fost pus pe o5tinerea de rularii Hocurilor /0S f8r8 pro5leme ceea ce
2nseamn8 c8 suportul de imprimantaE crearea de retele si comunicarea sunt 2nc8 2n dezvoltare.
/0SAoxE de asemeneaE vine cu propriile sale linii de comand8 /0S. @ste 2nc8 destul de
rudimentar 6i nu are multe dintre caracteristicile care se '8sesc 2n S%/0S dar este suficient
pentru instalarea 6i rularea celor mai multe Hocuri /0S
52
. +plica;ia creeaz8 fereastra care arata
precum consola o5i6nuit8E cu exceptia faptului ca mediul este complet virtualizat.
+cest lucru 2i permite sa emuleze o 'am8 lar'8 de $ard!are%uri mo6tenite 6i s8 accelereze sau
2ncetineasc8 dup8 cum este necesar.
*1
$ttp3==!!!.dos5ox.com=information.p$p
*+
$ttp3==!!!.dos5ox.com=!i<i=ainJ,a'e
/0SAox nu con;ine sau necesit8 fi6iere reale /0SE astfel 2ncYt poate fi utilizat 2n mod li5erE
f8r8 licen;8.
Ce se 2ntYmpl8 2n interiorul consolei poate fi capturat ca ima'ine 6i 2nre'istrat ca video.
+cesta accept8 c$iar lucrul 2n re;ea pentru a permite multiplaDer #+N peste moderne. Setarile
sunt salvate 2n folderul de profil al utilizatorului
53
.
2. Real0pec 7$.)4.14
@muleaz83 161 = 4"< = 12"1 = 2 = 2 + = 3 Spectrums Z*. /ida<ti< ,enta'on 6i clone Scorpion.
Formate disc3 Z"> Fcu extensii ScorpionGE .snaE .sltE .spE .tapE .tzxE .rzxE .!avE .cs!E .m'tE .im'
F/)SCi,#@=V/GE .trdE .scl F94%/0SGE .m5d FA%>2VGE .opdE .ds<E .d">E .mdrE .!drE .airE .po<
si .rom
Cerin;e3 2>> Uz ,entium = +/ ec$ivalent. "A 4+ sau mai mult. S%/0S .indo!s
:x e 2>>> sau *,
Creat de3 4amSoft
(ltima actualizare3 1> septem5rie 2>>2
F8r8 2ndoial8 cel mai cuprinzator emulator disponi5il 4ealSpec ar fiE de asemeneaE considerat
de mul;i a fi cel mai exact. 9oate caracteristicile nedocumentate procesorului Z">+ sunt exact
emulateE cum ar fi comportamentul re'istrului de fanioane. odurile video reproduse fidel si
poate fi confi'urat extensiv.
/e asemeneaE emuleaz8 ultiprintE ultiface 1 = 12"E &9 /)SC),#@ interfa;8 discE 0pus
/iscoverDE 4otronics .afadriveE Z* )nterface ) Fcu suport de re;eaGE icrodrivesE interfata
*3
$ttp3==!!!.rarst.net=soft!are=dos5ox=
disc Aeta 12"E ouse 1empston si mai multe interfe;e audio diferiteE etc. Fisierele audio sunt
5ine emulate si pot fi confi'urate extensiv. 7n plusE fa;8 de formatele de fi6iere listateE
4ealSpec poate 2nc8rca 6i = sau a salva audio video si ima'ini.
0 documentatie extinsa este inclusaE cu informa;ii de referin;8 suplimentare pentru emulatorE
$ard!are%uri 6i formate de fi6ier acceptate si disponi5ile pe site%ul 4amSoft. ?ersiuni
adecvate pentru utilizarea cu procesoare +/ sau )ntel ,entium sunt disponi5ile. ?ersiunea
S%/0S va rula su5 emulare S%/0S pe icrosoft .indo!s 2>>> = *, platforme cu
limit8ri Ff8r8 sunetG
54
.
*4
http:,,222#2orldo.spectru/#org,.a:,e/ulators,/sdos#ht/
Capitolul 6 : Proce(ul de .ootare a (i(temului de
operare: comparatie 1indo2( (i *inu&- Fratila Drao(
Sorin! "## $%
4.1.Bootarea sistemului de operare Linu
,rimul lucru pe care il face un computer la startup este un test primar F,0S9 L ,o!er
0n Self 9estG prin care se testeaza diversele componente $ard!are existente in sistem. +stfelE
se testeaza procesorulE memoriaE placa videoE tastaturaE mouse%ulE etc... 9ot aici se testeaza
mediul de A009 F$ard dis<E unitate floppDE C/40G. /upa ,0S9E loader%ul din 40
incarca sectorul de A009E care la randul lui incarca sistemul de operare de pe partitia activa.
Alocul de 5oot se afla intotdeauna la aceeasi locatie L trac< >E cilindru >E capul > al
device%ului de sistem de pe care se face Aootarea. +cest 5loc de 5oot contine un pro'ram
numit loaderE in cazul #inux%ului este #)#0 F#inux #0aderG sau &ru5E care se ocupa efectiv
de Aootarea sistemului de operare. +ceste loadere din #inux permitE in cazul unei confi'uratii
multi%5oot Fmai multe sisteme de operare pe acelasi computerGE selectarea sistemului de
operare care sa A009%eze. #)#0 si &ru5 se instaleaza ori in A4 Faster Aoot 4ecordGE ori
in primul sector de pe partitia activa.
)n continuare vom face referire la #)#0 ca loader pentru sistemul de operare. +cesta
se instaleaza de o5icei in sectorul de 5ootE numit si A4. /aca utilizatorul ale'e sa 5ooteze
Ninu!E #)#0 incearca sa incarce <ernel%ul sistemului de operare. )n continuare sunt prezentati
pasii pe care ii urmeaza #)#0 pentru a incarca sistemul de operare3
1. )n cazul confi'uratiilor multi%5ootE N0N) permite utiliatorului selectarea
sistemului de operare pe care saBl incarce. Setarile pentru #)#0 se afla in =etc=#)#0.conf.
+dministratorii de sistem folosesc acest fisier pentru o confi'urare in detaliu a loader%ului.
+ici se pot sta5ili manual ce sisteme de operare sunt instalateE precum si modul de incarcare
pentru fiecare in parte. /aca pe un computer exista instalat numai #inux%ulE se poate
confi'ura #)#0 sa incarce direct <ernel%ul si sa sara peste pasul de selectie al sistemului de
operare.
2. 1ernelul #inux%ului este instalat comprimat si contine un mic pro'ram care%l
decomprima. )mediat dupa pasul 1GE are loc decomprimarea <ernel%ului si incepe procesul de
incarcare al acestuia
3. /aca <ernel%ul recunoaste ca in sistem exista instalata o placa video care suporta
moduri text mai specialeE #inux%ul permite utilizatorului sa selecteze ce mod text sa
foloseasca. odurile video si alte optiuni pot fi specificate ori in timpul recompilarii <ernel%
ului ori prin intermediul lui #)#0 sau al altui pro'ram Frde" de exempluG.
4. 1ernel%ul verifica confi'uratia $ard!are F$ard dis<E floppDE adaptoare de reteaE etcGE
si confi'ureaza driverele de sistem. )n tot acest timp sunt afisate mesaHe pentru utilizator cu
toate operatiile care se executa.
5. 1ernel%ul incearca sa monteze sistemul de fisiere si fisierele de sistem. #ocatia
fisierelor de sistem este confi'ura5ila la recompilareE sau folosind alte pro'rame L N0N) sau
rde". 9ipul fisierelor de sistem este detectat automat. Cele mai folosite tipuri de sistem de
fisiere pe #inux sunt ext2 si ext3. /aca montarea fisierelor de sistem esueazaE va fi afisat
mesaHul kernel panic si sistemul va in'$eta. Fisierele de sistem sunt montate de o5icei in
modul read J onlyE pentru a se permite o verificare a acestuia in timpul montarii. Nu este
indicat sa se execute o verificare a fisierelor de sistem daca acestea au fost montate in modul
read J write.
6. /upa acesti pasiE <ernel%ul porneste pro'ramul initE care devine procesul numarul 1
si care va porni restul sistemului.
4.1.1.!rocesul de initiali;are J%6%< !rocessK
,rocesul de initializare 0M0% (rocess E este primul proces al #inux%ului si este parintele
tuturor celorlalte procese. @ste procesul care ruleaza prima data pe orice sistem #inux sau
(N)*E si este lansat de <ernel la 5ootare. +cest procesE la randul luiE incarca restul sistemului
de operare. )/%ul acestui proces este intotdeauna >.
4.1.2.5isierele de initiali;are din CetcCinitta'
,rima dataE procesul de initializare FinitG examineaza fisierul =etc=initta5 pentru a
determina ce procese sa lanseze in continuare. +cest fisier de confi'urare specifica ce nivel de
executie sa se lanseze si descrie procesele ce tre5uie rulate pe fiecare nivel . +poi
procesul init cauta prima linie cu actiunea sDsinitFsystem initialiationG si executa fisierul de
comanda identificat in acea linieE in acest caz=etc=rc.d=rc.sDsinit. /upa executarea script%urilor
din=etc=rc.d=rc.sDsinitE init incepe sa execute comenzile asociate cu nivelul de executie initial.
(rmatoarele cateva linii din =etc=initta5 sunt specifice diferitelor nivele de executie.
Fiecare linie ruleaza ca un sin'ur script F=etc=rc.d=rcGE care ia un numar intre 9 siQ ca ar'ument
pentru specificarea nivelului de executie. Cea mai folosita actiune pentru aceste nivele de
executie specifice intrarilor din =etc=initta5 este waitE ceea ce inseamna ca
procesul init executa fisierul de comanda pentru un nivel de executie specific si apoi asteapta
ca acel nivel de executie sa se termine.
4.1.3.5isierele din CetcCrc.dCrc.s8sinit
Comenzile care sunt definite 2n intrarile de initializare a sistemului din =etc=initta5 sunt
executate numai odata si numai de catre procesul initE de fiecare data cYnd 5ooteaza sistemul
de operare. 7n 'eneralE aceste scripturi ruleaza ca o succesiune de comenzi care realizeaza
urmatoarele3
1G /etermina daca sistemul face parte dintr%o reteaE 2n functie de continutul
fisierului =etc=sDsconfi'=net!or<.
2G onteaza =procE sistem de fisiere folosit intern de #inux pentru a urmari starea
diverselor procese din sistem.
3G Seteaza ceasul sistemului 2n functie de setarile din A)0S precum si realizeaza alte
setari Fsetarea timpuluiE setarea zoneiGE sta5ilite si confi'urate pe parcursul instalarii #inux%
ului.
4G ,orneste memoria virtuala a sistemuluiE activYnd si montYnd partitia s!apE
identificata 2n fisierul =etc=fsta5 FFile SDstem ta5leG.
5G Seteaza numele de identificare FsDstem^s $ost nameG pentru retea si mecanismul de
autentificare al sistemului FsDstem !ide aut$enticationGE cum ar fi N)S Ft$e Net!or<
)nformation ServiceEGE N)S V Fo versiune 2m5unatatita de N)SGE si asa mai departe.
6G ?erifica sistemul de fisiere al root%ului si daca nu sunt pro5lemeE 2l monteaza.
7G ?erifica celelalte sisteme de fisiere identificate 2n fisierul =etc=fsta5.
"G )dentificaE daca este cazulE rutine speciale care sunt folosite de sistemul de operare
pentru a recunoaste $ard!are%ul instalatE pentru a confi'ura device%uri plu' and plaD existente
si pentru a activa alte device%uri primareE cum ar fi placa de sunet de exemplu.
:G ?erifica starea dis< device%urilor specializateE cum ar fi de exemplu discurile 4+)/
F4edundant +rraD of )nexpensive /is<sG.
1>G onteaza toate sistemele de fisiere identificate 2n fisierul =etc=fsta5.
11G @xecuta alte tas<%uri specifice de sistem.
4.1.4.,irectorul CetcCrc.dCinit.d
/irectorul /etc/rc.d/init.d contine toate comenzile care pornesc si opresc serviciile
care sunt asociate cu toate nivelele de executie. 9oate fisierele de comenzi din
directorul /etc/rc.d/init.d au un scurt nume care descrie serviciul cu care sunt asociate. /e
exempluE fisierul /etc/rc.d/init.d/amd porneste si opreste demonul automountE care monteaza
'azda NFS si device%uri ori de cate ori este nevoie.
/upa ce procesul init a executat toate comenzileE fisierele si scipturileE ultimele cateva
procese pe care le starteaza sunt procesele /s#in/mingetty care afiseaza 5anerul si mesaHul de
lo'%in al distri5utiei pe care o aveti instalata. Sistemul este incarcat si pre'atit pentru ca
utilizatorul sa faca #o'%)n.
4.1.-.6i7elele de eecutie ale Linu-ului
Nivelele de executie reprezinta modul in care opereaza computerul. @le sunt definite
de un set de servicii disponi5ile intr%un sistem la orice timp dat de rulare.Nivelele de executie
reprezinta modalitati diferite pe care sistemul de operare #inux le foloseste pentru a fi
disponi5il dumneavoastra ca utilizator sau ca administrator.
Ca utilizator acestea nu sunt relevante O nivelul de executie multi%utilizator face Fin
mod transparentG disponi5ile serviciile pe care dumneavoastra asteptati sa va fie puse la
dispozitie in momentul in care folositi #inux intr%o retea. Nivele de executie sunt 3
Nivelul >3 Ualt F0preste toate procesele si executa ShutDownpentru sistemul de
operare.G
Nivelul 13 Cunoscut su5 numele de ISingle user modeEIE sistemul ruleaza in acest caz
un set redus de daemoni. Sistemul de fisiere al root%ului este montat read%onlD. +cest nivel de
executie este folosit cand celelalte nivele de executie esueaza in timpul procesului de 5oot%
are.
Nivelul 23 ,e acest nivel ruleaza cele mai multe serviciiE cu exceptia serviciilor de
retea FhttpdA nfsA namedE etc.G. +cest nivel de executie este folositor pentru de5u'%ul serviciilor
de reteaE mentinand sistemul de fisiereshared.
Nivelul 33 od multi%utilizator completE cu suport pentru retea.
Nivelul 43 Nefolosit in marea maHoritate a distri5utiilor. ,e Slac<!areE acest nivel de
executie 4 este ec$ivalent cu nivelul de executie 3E cu logon 'rafic activat.
Nivelul 53 od multi%utilizator completE cu suport pentru retea si mod 'rafic.
Nivelul 63 4e5oot. 9ermina toate procesele care ruleaza si re5oot%eaza sistemul la
nivelul initial de executie.


4.1.4."odificarea ni7elelor de eecutie
Cea mai folosita facilitate a procesului initE si poate cea mai confuzaE este a5ilitatea de
a muta de pe un nivel de executie pe altul. Sistemul 5ooteaza pe un nivel de executie
specificat in /etc/initta# E sau intr%un nivel de executie specificat la prompt%ul #)#0. ,entru a
sc$im5a nivelul de executieE folositi comanda init. /e exempluE pentru a sc$im5a nivelul de
executie la 3E folositi3 init O. +ceasta oprese maHoritatea serviciilor si aduce sistemul in mod
multi%utilizator cu suport pentru retea. +tentieE pentru ca in acest moment se pot inc$ide fortat
daemoni care sunt folositi in acel moment.
4.1.3.,irectoarele ni7elelor de eecutie
Fiecare nivel de executie are un director cu le'aturi sim5olice care pointeaza
scripturilor corespunzatoare din directorul init.d. +ceste directoare sunt3
=etc=rc.d=rc>.d
=etc=rc.d=rc1.d
=etc=rc.d=rc2.d
=etc=rc.d=rc3.d
=etc=rc.d=rc4.d
=etc=rc.d=rc5.d
=etc=rc.d=rc6.d
Numele le'aturii sim5olice 'asite 2n aceste directoare este semnificant. @l specifica
care serviciu tre5uie opritE pornit si cYnd. #e'aturile care 2ncep cu TSR sunt pro'ramate sa
porneasca ori de cYte ori sistemul 2ntr%un alt nivel de executie. ,e lYn'a aceastaE fiecare
le'atura sim5olica are un numar la 2nceputul numelui. 7n continuare un exemplu de cYteva
le'aturi din =etc=rc.d=rc2.d 3
2>nfs %P ..=init.d=nfs
15>inet %P ..=init.d=inet
S6>lpd %P ..=init.d=lpd
S">sendmail %P ..=init.d=sendmail
CYnd sistemul de operare sc$im5a nivelul de executieE init compara lista cu procesele
terminate Fle'aturi care 2ncep cu T1RG din directorul nivelului curent de executieE cu lista
proceselor catre tre5uie startateE cele care 2ncep cu TSRE aflate 2n directorul destinatie. +tfel se
determina care daemoni tre5uie porniti sau opriti.
@xemplu3
CYnd sistemul 5ooteaza pe nivelul 3 Frun level 3G va executa toate intrarile care 2ncep
cu ISI 2n ordinea listata3
=etc=rc.d=rc3.d=S6>lpd start
=etc=rc.d=rc3.d=S">sendmail start
Fsi asa mai departe...G
/aca sistemul se sc$im5a pe nivelul 1 Frun level 1G va executa3
=etc=rc.d=rc3.d=12>nfs stop
=etc=rc.d=rc3.d=15>inet stop
FpresupunYnd ca nfs si inet nu au intrari de start 2n =etc=rc.d=rc1.d G
+poi va procesa toate intrarile din =etc=rc.d=rc1.d care 2n acel moment nu ruleaza. 7n
acest exemplu este numai una sin'ura3
=etc=rc.d=rc1.d=S>>sin'le
4.1.=.0c#im'area ni7elului curent de eecutie
,entru a sc$im5a nivelul de executie curent de xemplu pe nivelul 3E editati fisierul
=etc=initta5 2ntr%un editor de texteE si editati urmatoarea linie3
id333initdefault3
F Nu sta5iliti nivelul de executie initial la > sau 6 G
4.1.)./liminarea unui ser7iciu dintr-un ni7el de eecutie
,entru a dezactiva un serviciu de pe un nivel de executieE puteti simplu ster'e sau
modifica le'atura sa sim5olica din directorul nivelului de executie de care apartine./e
exempluE pentru a dezactiva pcmcia si a nu mai porni pe nivelul 3 de executieE veti scrie3
rm =etc=rc.d=rc3.d=S45pcmcia
4.1.1$.Adaugarea de ser7icii unui ni7el de eecutie
,entru a adau'a un serviciu unui nivel de executieE este nevoie sa se creeze o le'atura
sim5olica care sa pointeze catre scripturile de servicii din directorul init.d. 7n momentul 2n
care se creaza le'aturaE aveti 'riHa sa%i asi'nati un numar astfel 2ncYt serviciul sa fie pornit la
timpul potrivit.,entru a adau'a IlpdI la run level 3 Fnivelul 3 de executieGE veti folosi3
ln %s =etc=rc.d=init.d=lpd =etc=rc.d=rc3.d=S64lpd
4.2. !rocesul de 'ootare *indo+s
4.2.1.*indo+s 1.C2.
)ncepand cu versiunea de .indo!s 1.>1 pana la .indo!s=3"6 E sistemul de operare
era incarcat atunci cand fisierul W0M.+)& era executat . +poi acesta incarca
win9==.#in/winR==.#in si win9==.o"l/winR==.o"l E impreuna cu fisierul de setari W0M.0M0 .
odulele KD0.*I* E S*RM*N.*I* si ,S*R.*I* E fonturile precum si driverele unor
dispozitive Fcum ar fii summ.drv E mouse.drv E <eD5oard.drvG sunt incorporate in
win9==.#in/winR==.#in si win9==.o"l/winR==.o"l .
4.2.2.*indo+s 3.C)
)n .indo!s 3.x si :5=:"=@ faza de 5oot este prelucrata de &S D)S . )n timpul
pornirii E fisierele $utoe!ec.#at si +onfig.sys sunt executate E impreuna cu fisierele de
confi'urare W0M.0M0 si STS%*&.0M0 .
Cand toate fisierele de confi'urare si toate driverele dispozitivelor au fost incarcate E
modulele de 16 5iti krnlO3Q.e!e E gdi.e!e si user.e!e sunt incarcate si apoi sunt incarcate
/##%urile pe 32 5iti FkernelOR.dll E gdiOR.dll si userOR.dllG . Serverul de mesaHe pe 32 5it ?x/
Fs'svr32G lanseaza in executie &pre!e.e!e care este responsa5il cu incarcarea clientului de
lo'in pe retea . Cand un utilizator se lo'$eaza in .indo!s E sunetul de inceput este lansat E
*!plorer.e!e este incarcat din sectiunea de 5oot a fisierului STS%*&.0M0 si elementele de start
sunt incarcate .
)n toate versiunile de .indo!s 5azate pe /0S Fexceptie face .indo!s @G este de
asemenea posi5il incarcarea sistemului de operare prin scrierea T!inR intr%un prompt de
/0S . @xista o serie de comenzi care pot fi folosite impreuna cu comanda T!inR cum ar fii 3
=d s!itc$ Fsistemul de operare porneste in modul TSafe modeRG sau =d3m s!itc$Fsistemul de
operare porneste in modul TSafe modeR folosind putand insa folosi si reteauaG .
4.2.3.*indo+s 6<C2$$$CB!C0er7er 2$$3
Similar cu #inuxE .indo!s face un test primar F,0S9 L ,o!er 0n Self 9estG prin care
se testeaza diversele componente $ard!are existente in sistem. /upa aceeaE sistemul va rula
,0S9 pentru toate componentele care au un A)0S FAasic )nput%0utput SDstemG. +tunci cand
se finalizeaza ,0S9 si A)0S%ul este si'ur ca totul funcioneaza cum tre5uieE A)0S%ul va
incerca sa citeasca din A4 Faster Aoot 4ecordG.
+cesta este primul sector al primului $ard drive Fdenumit aster sau U/>G. Cand
A4 preia controlul inseamna ca sistemul de operare .indo!s este in control.
A4 cauta in A009 S@C904 Fprimul sector al unei partitii activeG. +ici se
localizeaza N9#/4 FA009 #0+/@4 pentru .indo!s *,G. N9#/4 va permite adresarea
memorieiE initializarea sistemului de fisiere Ffile sDstemGE ca citi fisierul 5oot.ini si va incarca
meniul de 5oot%are.
(n fisier N9#/4E localizat in directorul radacina al discului de 5ootE este compus din
2 parti. ,rima este modulul de Start(pE urmata imediat de 0S loader Fosloader.e!eGE am5ele
stocate in acel fisier. Cand N9#/4 este incarcat in memorie si controlul este transmis pentru
prima oara modulului de Start(pE procesorul opereaza in modul real. ,rincipala functie a
modulului de Start(p este sa comute procesorul in modul protectedE fapt ce faciliteaza accesul
memoriei pe 32 de 5itiE permitandu%i sa creeze ta5elul descriptorilor de intrerupereE ta5elul
descriptorilor 'lo5ali F&/9GE ta5ele de pa'ini si activarea pa'inarii. +cestea furnizeaza
mediul de operare de 5aza pe care sistemul de operare se va construi. odul Start(p apoi va
incarca si lansa 0S loader.
0S loader include functiile de 5aza pentru a accesa discurile )/@ formatate pentru
sistemele N9FS sau F+9E sau C/FS F)S0 :66>GE @9FS sau (/FS in versiunile noi de sisteme
de operare. /iscurile sunt accesate prin sistemul A)0S. /in acest momentE toate apelurile
acestuia sunt facute prin modul ">"6 virtualE intrucat A)0S%ul nu poate fi accesat direct in
modul protected. Aoot loader%ul citeste apoi continutul fisierului 5oot.ini pentru a localiza
informatia pe sDstem volume. /aca fisierul respectiv lipsesteE 5oot loader%ul ca incerca sa
localizeze informatia din directorul standard de instalare.
)n acest momentE ecranul este eli5eratE si in .indo!s 2>>> sau in versiunile mai tarzii
ale lui N9#/4 si )+62ldr care suporta sDstem $i5ernationE default volume din directorul
radacinaE asa cum e definit in 5oot.ini este cautat pentru un fisier de $i5ernareE $i5erfil.sDs.
/aca fisierul e 'asit si o memorie activa setata este 'asita in elE continutul fisierului este
incarcat in memorie iar transferul este transferat catre .indo!s <ernel intr%un punct in care
$i5ernarea poate fi reluata. Fisierul e apoi imediat marcat ca non%activ.
/aca 5oot.ini contine mai mult de o intrare a unui sistem de operareE un meniu de 5oot
este afisat useruluiE permitand acestuia sa alea'a ce sistem de operare este incarcat. /aca un
sistem de operare care nu e 5azat pe N9E cum ar fi .indo!s :"E este selectatE atunci N9#/4
incarca fisierul T5oot sectorR asociat listat in 5oot.ini si paseaza controlul executiei acestuia.
/aca un S0 5azat pe N9 este selectatE N9#/4 ruleaza ntdetect.comE care aduna informatia de
5aza despre componentele computerului raportate de A)0S.
)n acest momentE N9#/4 eli5ereaza ecranul si afiseaza o 5ara de pro'res Fcare
deseori nu este vazuta pe sistemele *, sau 2>>3 datorita vitezei lor de initializareG. /aca
utilizatorul apasa F" in acest momentE este afisat meniul avansat de 5ootE care contine diferite
moduri speciale de 5ootE incluzand Safe mode. /upa ce se selecteaza optiunea doritaE
5ootarea continua. Sistemul porneste in modul 16%5it real si apoi trece in modul 32%5it
protected. /aca o versiune x64 de .indo!s este 5ootataE procesorul este setat in lon' modeE
activand adresarea pe 64 de 5iti. +poi .indo!s <ernel Ntos<rnl.exe si Uard!are +5straction
#aDer $al.dll sunt incarcate in memorie. /aca vreunul din ele nu se poate incarcaE va aparea
mesaHul messa'e I.indo!s could not start 5ecause t$e follo!in' file !as missin' or corruptI
si procesul de 5ootare se opreste.
0data ce se incarca <ernel in memorieE sunt incarcate driverele dispozitivelor 5oot%
time. +ceasta informatie este stocata in portiunea de re'istru U1#`S[S9@E intr%un set de
c$ei de re'istru numite colectivE Control Set. Cand un Control Set e alesE c$eia Current se
seteaza dupa caz. C$eia Failed este de asemenea setata precum Current pana la sfarsitul
procesului de 5ootare. #ast1no!n&ood este de asemenea setata la Current daca procesul de
5ootare se termina cu succes.
)n scopul 5ootariiE un driver este fie un driver TAootRE care este incarcat de N9#/4
sau )+64ldr inainte de startarea <ernel%ului si inceput inainte de driverele de sistem de catre
<ernelE fie un driver TSDstemRE care e incarcat atunci cand porneste ntos<rnl.exe dupa
driverele 5ootE fie un driver T+utomaticRE care e incarcat mult mai tarziuE cand &() deHa a
inceput. /riverele TAootR sunt aporape exclusiv drivere pentru controllere $ard%drive si file
sDstemsE cu alte cuvinteE sunt minimul necesar pe care ntos<rnl.exe va fi nevoit sa porneasca
cu incarcarea altor drivereE si restul sistmului de operare. /rivelere TSDstemR acopera o 'ama
mai lar'a de functionalitati nucleuE incluzand driverul de displaDE suport C/%40 si stiva
9C,=),.
)n finalE controlul este transmis de N9#/4 sau )+64ldr catre <ernel. )n acest momentE
.indo!s N9 afiseaza cele5rul ecran al5astru ce afiseaza numarul de procesoare si cantitatea
de memoria instalataE in timp ce .indo!s 2>>>E *, si 2>>3 trec intr%un mod de displaD 'rafic
pentru a afisa lo'o%ul .indo!sE in cazul in care in 5oot.ini nu sunt prezente =no'ui5oot sau
=sos. ,orneste W0MN)K)M.*I* care la randul sau porneste NS$SS.*I*E acesta este
pro'ramul care afiseaza ecranul #o'on astfel incat userul se poate lo'a.
4.2.4.*indo+s (istaC0er7er 2$$=C*indo+s 3
Secventa de pornire a .indo!s ?ista E .indo!s Server 2>>" sau .indo!s 7 difera
fata de versiunile anterioare de .indo!s care folosesc <ernel%ul de N9 . )n prima faza E cand
computerul este aprins E fie A)0S%ul sau @F)%ul sunt incarcate . )n cazul unui sistem A)0S E
A4%ul 5oot dis<%ului E care pot fie un $ard drive sau un dispozitiv de stocare externa este
accesat E urmat de sectorul de 5oot al drive%ului . Sectorul de 5oot apoi incarca restul
5locurilor de 5oot . ,entru .indo!s ?ista E sectoru de 5oot incarca Windows Boot &anager%
ul FA009&4G care prima data cauta o partitie activa E apoi acceseaza confi'uratia de date
de 5oot si foloseste informatia sa incarce ultimul lucru si anume sistem de operare .
.indo!s Aoot ana'er%ul FA009&4G citeste confi'uratia de 5oot si afiseaza
meniul de selectare a sistemului de operare si este intr%o oarecare masura ec$ivalentul functiei
de selectare a meniu de 5oot a N9#/4 ce se 'aseste in cadrul versiunilor de !indo!s 5azate
pe <ernelul de N9 . 0 sc$im5are nota5ila este aceea ca .indo!s Aoot ana'er%ul este apelat
prin apasarea space 5ar%ului in locul taster F" . +ceasta din urma ramane in continuare
asociata pentru optiunile avansate de 5oot indata ce apare .indo!s Aoot ana'er%ul . ,entru
a mentine o consistenta a procesului de 5oot in cadrul sistemelor @F) care de asemenea au un
5oot mana'er al lor E .indo!s Aoot ana'er%ul E asadar dintre toate sistemele de operare
.indo!s care pot fi 5ootate folosindu%l E apar ca o sin'ura aparitie in meniu de 5oot al @F)%
ului .
Confi'uratie de pornire FAoot Confi'uration /ataG este o 5aza de date independenta
de firm!are pentru datele din timpul procesului de pornire a sistemului de operare .
)nlocuieste fisierul #oot.ini ce era folosit de N9#/4 si este folosit si de noul .indo!s Aoot
ana'er al .indo!s%ului . Confi'uratia de pornire este stocata intr%un fisier care este aflat
fie in partitia de sistem @F) in cadrul masinilor ce folosesc @F) sau in `Aoot`Acd locat in
partitia sistem in cadrul masinilor )A ,C .
Confi'uratia de 5oot contine optiunile disponi5ile ce sunt prezentate de .indo!s Aoot
ana'er E la fel cum 5oot.ini continea optiunile ce erau prezentate de N9#/4 . +ceste
optiuni pot contine 3
optiunea de 5ootare a .indo!s ?ista prin apelarea !inload.exe
optiunea de revenire a .indo!s ?ista din $i5ernare prin apelarea
!inresume.exe
optiunea de 5oot%are a unei versiuni anterioare de .indo!s din familia N9
prin apelarea N9#/4 .
)n final E .indo!s Aoot ana'er%ul apeleaza winload.e!e care reprezinta un 5oot
loader al sistemului de operare E pentru a incarca <ernelul sistemului de operare ntoskrnl.e!e si
diverele dispozitivelor . )n acest fel !inload.exe este functional E ec$ivalentul N9#/4%ului
din versiunile anterioare de .indo!s 5azate pe <ernelul de N9 .