Documente Academic
Documente Profesional
Documente Cultură
Kernel-ul in UNIX
2.5.1.Structura.Functiile nucleului
2.5.2. Conceptul de proces. Stari. Comenzi
2.5.3. Directivele fork, exec
2.5.4. Sincronizarea proceselor
2.5.5. Comunicarea proceselor
2.5.6. Functiile de gestiune
2.5.7. Initializarea sistemului
Conf.dr.Carmen Timofte
Sisteme de operare
timpului masinii;
a spatiului de memorie;
a canalelor de comunicatie intre procesele existente
alctuit din aproximativ 10.000 de linii ce constituie codul programului, care, n
funcie de sistem, se transform ntr-un numr mai mare sau mai mic de cuvinte
main (sau bytes); intre acestea, 5 - 10% din totalul codului programelor (Shell,
utilitare, KERNEL i celelalte) este variabil funcie de sistemul de calcul i de setul
de utilitare;
Conf.dr.Carmen Timofte
Sisteme de operare
(*) Structura
Gestioneaza
controleaza
Gestiunea
memoriei
4.Interfata
Conf.dr.Carmen Timofte
Sisteme de operare
Sisteme de operare
(*) Structura
Primitivele de sistem sunt specifice
fiecrui sistem de calcul, scrise n
limbaj de asamblare- cca.1000 linii
codul si conin:
- operaii de intrare/ieire de baz;
- comutarea execuiei ntre procese;
- permiterea sau inhibarea ntreruperilor
hardware;
- resetarea prioritilor ntreruperilor;
- alte operaii.
Accesarea primitivelor de sistem se
realizeaz prin apeluri de sistem
(directive de sistem sau system calls)
din programe n C sau n limbaj de
asamblare.
Conf.dr.Carmen Timofte
(*)
Structura kernel
Conf.dr.Carmen Timofte
Sisteme de operare
(*) Functii
Kernel => principala functie este de GESTIUNEA RES.=
1.
alocare/dealocare de res.
2.
3.
Functiile kernel-ului:
1. Gestiunea proceselor
Conf.dr.Carmen Timofte
Sisteme de operare
Conf.dr.Carmen Timofte
Sisteme de operare
(*)
Procesul este concept fundamental de organizare a SO UNIX.
Proces = un program n execuie, care contine imaginea fis exec. in mem (zona
de cod, date, stiva.) + res. din mom. executiei (registrii, fis. deschise etc.)
Pentru un program activ, pot exista mai multe procese active- numite instane.
Firele de executie multiple pot exista printr-un task sau proces.
Executie proceselor pe 2 niveluri:
Utilizator (user ) procesele isi pot accesa doar propriile zone de cod si date;
Nucleu (kernel) procesele pot accesa si spatiul de adresa al nucleului;
- anumite instructiuni masina sunt privilegiate si nu pot fi executate decat
in mod nucleu.
-
Sisteme de operare
(*)
Conf.dr.Carmen Timofte
Sisteme de operare
Conf.dr.Carmen Timofte
Sisteme de operare
10
Conf.dr.Carmen Timofte
Sisteme de operare
11
ps [efl]
sleep sec
sleep 10; date&
Conf.dr.Carmen Timofte
Sisteme de operare
12
(*)
Informaiile necesare procesului sunt memorate n:
a) tabela proceselor (proc area) este alocata static de nucleu;
- este constituit n memorie,
- conine o intrare pentru fiecare proces, detaliind starea acestuia:
localizarea procesului;
adresa de memorie i adresa de evacuare;
mrimea procesului;
numrul de identificare;
identificatorul utilizat;
b) tabela utilizator zona user (u area)- contine datele cu care opereaza nucleul, atunci
cand procesul este in executie;
- este parte a regiunii de date a procesului;
- este eliberata atunci cand este evacuat procesului pe disc;
- este o extensie a tabelei de procese si contine:
Conf.dr.Carmen Timofte
Sisteme de operare
13
Iniierea unui proces poate fi efectuat numai de ctre un alt proces activ.
Cnd este conectat primul utilizator, Kernel-ul asigur o copie a Shell-ului care ruleaz doar pentru el, =>
structura ierarhica de procese creata printr-un mecanism numit bifurcaie (fork), prin care Kernel nlocuiete un
proces existent, prin dou procese:
- procesul iniial (printe);
- procesul iniiat de procesul iniial (fiu), care mparte (partajeaz) toate fiierele cu procesul printe.
excepie: cnd se solicit explicit ca procesul printe s atepte terminarea procesului fiu prin directiva WAIT;
Conf.dr.Carmen Timofte
Sisteme de operare
14
(*)
-
Procesele n Unix se afl n relaia printe-copil, adic un proces printe poate lansa
n execuie alt proces (copil)
Exist 2 moduri de a realiza acest lucru:
o Directiva fork (pid_t fork())
Creeaz un nou proces incrementnd cu1 numrul total de procese
din sistem, noul proces avnd propria imagine n memorie;
Directiva ntoarce ctre printe identificatorul de proces al fiului i
0 ctre procesul fiu; (procesele fiu i printe se execut n paralel
n exemplul urmtor)
int i;
pid_t child;
if((child=fork()) = = 0)
{
proces copil
}
proces printe
Conf.dr.Carmen Timofte
Sisteme de operare
15
(*)
o Familiei de directive exec
Prin acest set de directive, imaginea noului proces se suprapune
peste imaginea vechiului proces, care nceteaz s mai existe;
Numrul total de procese din sistem rmne constant
int execl(char * path, char * argv0, char *
argv1, ...., 0)
sau
execv(int argc, char * argv[])
Exp:
Conf.dr.Carmen Timofte
Sisteme de operare
16
(*)
-
o ntoarce 0 dac procesul s-a terminat corect, sau ntoarce codul de eroare
n caz contrar
-
Conf.dr.Carmen Timofte
Sisteme de operare
17
(*)
main()
{
int p[2],i,j;
pipe(p);
if(fork()==0)
{
close(0);
dup(p[0]);
close(p[1]);
execl("/bin/who","/bin/who",0);
}
else
{
close(1);
dup(p[1]);
close(p[0]);
execl("/bin/lpr","/bin/lpr",0);
}
}
Exemple: ex1.c, ex2.c, ex3.c, ex4.c, ex5.c, ex6.c, ex7.c, ex8.c, ex9.c,
Sisteme de operare
18
o
o
o
Evenimentul:
reprezint modalitatea de precizare a momentului n care un
proces blocat poate trece n starea gata de rulare;
este reprezentat printr-un numr ntreg, ales prin convenie,
cunoscut de kernel;
nu permite transmiterea altor informaii, neavnd asociat
memorie;
Devantaj- sincronizarea nu se poate face n funcie de o anumit
cantitate de informaie
Blocarea proceselor se face prin funcia intern sleep (diferit de
funcia de bibliotec sleep)
Deblocarea proceselor nucleul trece toate procesele care ateapt o
anumit condiie n starea gata de rulare, prin wakeup;
Sincronizarea prin evenimente se poate realiza prin 3 moduri: prin
semnale, ntre procesul tat i fiii si, prin intermediul unor funcii sistem.
Conf.dr.Carmen Timofte
Sisteme de operare
19
(*)
Semnal un mecanism
software ce informeaza
procesul de aparitia
unui eveniment
asincron. Un semnal
este similar cu o
intrerupere hardware
dar nu implica prioritati
(toate semnalele sunt
considerate egale).
Semnalele care apar in
acelasi timp sunt
prezentate unui proces
pe rand, fara a se
stabili o ordine bazata
pe prioritati.
Kill l sau man signal sau cat /usr/include/sys/signal.h => semnale + nr.
asociate
Conf.dr.Carmen Timofte
Sisteme de operare
20
10
Conf.dr.Carmen Timofte
Sisteme de operare
21
(*)
Sincronizarea ntre proces tat i fiii si
Conf.dr.Carmen Timofte
Sisteme de operare
22
11
(*)
kill(pid, sig)
alarm(seconds)
o
sleep(sec)
Conf.dr.Carmen Timofte
pause()
23
Exemplu: semafor.c
Conf.dr.Carmen Timofte
Sisteme de operare
24
12
Conf.dr.Carmen Timofte
Sisteme de operare
25
(*)
2. Comunicarea prin pipe
Pipes buffer circular ce permite comunicarea
intre doua procese pe baza procesului
producatorconsumator coada
de tip FIFO in care un
proces trimite un mesaj
spre alt proces
SO aplica in acest caz
excluziunea mutuala
doar un singur proces
poate accesa pipe-ul la
un moment dat
Conf.dr.Carmen Timofte
Sisteme de operare
26
13
shmget
sgmat
shmdt
shmdl
Sisteme de operare
27
(*)
28
14
(*)
4.Comunicarea prin mesaje
Mesaj este un bloc de text de un anumit tip
este mecanismul cel mai eficient implementat n pachetul IPC
se comunic printr-o coad de mesaje circular, gestionat de SO
Fiecare proces are o coada de mesaje care functioneaza ca o cutie postala.
transmisia se face cu sincronizare (blocare deblocare), mesajele avnd asociat un tip (valoare
numeric)
recepia de face n funcie de tipul ales
primitivele de lucru sunt:
msgget
msgctl
msgsnd
msgrcv
Completai sintaxele!!!
Exemplu de comunicare prin cozi de mesaje ntre 2 procese nenrudite prin relaia tat-fiu:
cozim_transm.c, cozim_recep.c
(se lanseaz primul cozim_transm, apoi cozim_recep)
Conf.dr.Carmen Timofte
Sisteme de operare
29
controlul executiei lor prin implementarea unor primitive de creare, terminare, suspendare,
comunicare intre procese;
Conf.dr.Carmen Timofte
Sisteme de operare
30
15
Sisteme de operare
31
(*)
Divizarea timpului i resurselor
n sisteme de operare multitasking, procesele individuale nu sunt executate pn la terminare, avnd
alocate cuante de timp de ctre procesor ntr-o planificare de tip Round- Robin;
cuantele de timp nu sunt egale, lungimea depinznd de prioritatea taskului, de accesibilitatea datelor de
intrare solicitate i a perifericelor de ieire.
Alocarea se face avnd n vedere maximizarea utilizrii resurselor hardware, cu respectarea prioritii
taskurilor critice.
Prioritile sunt periodic rennoite astfel:
taskurile cu timp de execuie mai mare, vor avea prioritate mai sczut;
taskurile de tip ntrebare-rspuns vor avea rspuns instantaneu;
taskurile ce constau n schimbarea de caractere au cea mai sczut prioritate.
Dup expirarea timpului alocat, taskul este evacuat ntr-un fiier de evacuare pe disc unde va rmnea
pn i se d din nou controlul; n acel moment, imaginea salvat anterior se rencarc n RAM; ea va
cuprinde:
coninutul prii de memorie inscriptibil;
coninutul registrelor;
numele directorului curent;
lista fiierelor deschise de procesul considerat.
Conf.dr.Carmen Timofte
Sisteme de operare
32
16
(*)
2. Gestiunea memoriei - aloca/elibereaza MP (RAM) pt. procesele aflate in executie,
permitand accesul in anumite situatii, in zone de memorie comuna (spatiul de mem.
al nucleului este protejat si nu poate fi accesat decat de el).
Alocarea memoriei
sistem de operare multitasking => ine evidena taskurilor concurente i menine controlul
diverselor programe care sunt rezidente n RAM la un moment dat, furniznd i informaii privind
suficiena spaiului de memorie:
n mod normal, fiecare program este ncrcat n diverse zone de memorie RAM;
-
(practic, numai registrele sistemului sunt divizate ntre programe, astfel c evacuarea programelor
implic de fapt, numai evacuarea coninutului registrelor);
Conf.dr.Carmen Timofte
Sisteme de operare
33
(*)
Sisteme de operare
34
17
(*)
Aceast divizare este realizat din dou motive:
- evacuarea segmentului de cod implic reducerea cantitii de informaii necesar a fi
evacuate; fiind de tip read-only, acesta este identic cu imaginea sa din disc, deci nu
trebuie rescris cnd se evacueaz;
- Shell este ncrcat pentru fiecare utilizator, deci exist attea copii Shell, ci
utilizatori sunt conectai; dac mai muli utilizatori solicit un program (segment de
cod), nu este necesar copierea acestuia deoarece el poate fi folosit simultan; este
suficient s se creeze i cnd este necesar, s se evacueze un segment de date i
un segment de stiv pentru fiecare utilizator.
Memoria este limitata => se extinde pe disc in zona de swap area prin 2 politici de
transfer: swapping si demand paging (cerere de paginare)
-
Conf.dr.Carmen Timofte
Sisteme de operare
35
Conf.dr.Carmen Timofte
Sisteme de operare
36
18
Conf.dr.Carmen Timofte
Sisteme de operare
37
Sisteme de operare
38
(*)
Conf.dr.Carmen Timofte
19
(*)
3. Gestiunea dispozitivelor perifice permite procesorului un acces controlat la DP.:
banda, disc, interfete de retea;
Conf.dr.Carmen Timofte
Sisteme de operare
39
(*)
Tampoanele cache sunt organizate n dou liste dublu nlnuite (unele putnd face parte din
ambele); lista tampoanelor n uz este organizat conform unei funcii de dispersie (hashing)
ce ine seama de numrul logic al dispozitivului periferic i numrul blocului al crui
coninut se ncarc n zona de date ataat tamponului. Funciile sunt apelate de nivelul
inferior al sistemului de gestiune al fiierelor (SGF).
Conf.dr.Carmen Timofte
Sisteme de operare
40
20
(*)
4. Gestiunea fisierelor
Conf.dr.Carmen Timofte
Sisteme de operare
41
Executia procedurilor de testare si initializare hardware (teste memorie, tastaturia, unitati de disc
etc.);
Se incarca in RAM un loader (incarcator), aflat in blocul de boot la SF;
Loader-ul incarca nucleul SO, aflat in fisierul unix din radacina, pe care-l identifica cu ajutorul
informatiilor din superbloc si i-list;
Nucleul SO
Initializeaza structuri de date proprii (imaginea superblocului, a listei de i-nod-uri in
memorie, lista buffer-e disc libere, buffer-e pt. cozi de caractere etc.)
Monteaza SF root in /;
Construieste procesul 0 (numit scheduler la sisteme cu demand paging, swapper la
celelalte), care contine doar o zona de date utilizata de nucleu (imaginea unui proces
incomplet);
Executa un fork intern pt. a crea procesul 1;
Procesul 1 ruleaza in mod kernel si efectueaza:
Initializarea structurilor de date proprii;
Marirea zonei de memorie alocata pt. zona de text;
Copierea din spatiul de adresa al nucleului un cod care contine apelul directivei exec cu
parametrul /etc/init;
Procesul 1 trece in modul utilizator si va fi programat de executie de catre scheduler, devenind
primul proces complet din sistem
Conf.dr.Carmen Timofte
Sisteme de operare
42
21
(*)
Procesul 1 este numit init =>va fi parintele oricarui proces aparut ulterior in sistem;
Procesul init citeste fisierul /etc/inittab, pt. a decide asupra proceselor ce vor fi create;
Starile procesului init (in functie de versiune, un SO poate functiona in mai multe moduri,
specificate in fisierul /etc/inittab):
0 starea premergatoare opririi calculatorului;
1- starea monouser ( se lanseaza pe consola sistem un proces shell pt. intretinerea
sitemului);
2- starea multiuser
lanseaza cate un proces /etc/getty pt. fiecare linie de comunicatie activa;
Procesul getty asteapta conectarea user-ului;
seteaza parametrii de comunicatie pt. terminal (din fis. /etc/getydefs);
Lanseaza in executie prin exec programul login;
Acesta cere numele si parola, le verifica;
Lanzeaza prin exec procesul shell, specificat in fisierul /etc/passwd;
Shell-ul va fi fiul procesului init;
Terminarea sesiunii de lucru de catre user va fi sesizata de catre init, care va lansa un
nou proces getty pe linia respectiva;
3- starea multiuser cu acces la SF aflate la distanta;
Procesul init scaneaza fisierul /etc/rc si starteaza toate procesele daemon descrise in fisier;
Procese daemon = procese sistem care ruleaza in background pe durata functionarii sistemului; in
cazul opririi, se relanseaza in executie doar de catre init.
Conf.dr.Carmen Timofte
Sisteme de operare
43
Sisteme de operare
44
(*)
Conf.dr.Carmen Timofte
22