Sunteți pe pagina 1din 22

2.5.

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

2.5.1.Structura. Functiile kernel-ului


Nucleul SO este:

partea rezidenta a SO, care controleaza alocarea:




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;

alctuit din urmtoarele componente principale




programul supervizor central (rezident in RAM);

rutine de servicii: scrierea n memorie, gestiunea ceasului sistem etc.; sunt


apelate atunci cnd sunt necesare, se gasesc in zona de tranziente;

Conf.dr.Carmen Timofte

Sisteme de operare

(*) Structura


care, la randul lor formeaza urmatoarele 4 componente:


1.Interfata cu procesele utilizator prin system calls (apeluri
sistem);
2.Subsistemul de control al operatiilor de I/E prin drivers
(subrutine de control al dispozitivelor); cca.1000 linii scrise n limbajul C;
Controleaza modul de lucru cu dispoz. periferice (in modurile
caracter, bloc, raw);
Aloca

spatiu pt. fisiere;

Gestioneaza
controleaza

spatiul liber din mem. Secundara;


accesul la fisiere;

3.Subsistemul de control al proceselor- contine cca. 7-8000 linii


scrise n limbajul C (portabil pe orice sistem); realizeaza:


planificarea, sincronizarea, comunicarea intre procese

Gestiunea

memoriei

cu hardware-ul prin intreruperi; este scrisa in lb. de


asamblare, are dimensiuni reduse si este delimitata stric.

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.

controlul starii res.

3.

implementarea unei politici de control a operatiilor de mai sus.

Functiile kernel-ului:
1. Gestiunea proceselor


controlul executiei lor prin implementarea unor primitive de creare,


terminare, suspendare, comunicare intre procese;

Planificarea pt. executie conform politicii time-sharing;

2 Gestiunea memoriei - aloca/elibereaza MP 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).
3. Gestiunea dispozitivelor perifice permite procesor un acces controlat la DP.: banda,
disc, interfete de retea;
4. Gestiunea fisierelor


alocarea/dealocarea mem. secundare (ext.) pt. stocarea si regasirea


eficienta a inf.;

protejarea fis. impotriva acceselor ilegale;

Conf.dr.Carmen Timofte

Sisteme de operare

2.5.2. Conceptul de proces


Un SC poate lucra in 2 moduri:

- Utilizator - cnd execut un program sau proces;


- Sistem (Kernel) - cnd execut un cod sistem.

Comutarea ntre modul utilizator i KERNEL se realizeaz prin 3 mecanisme:

- ceasul- care ntrerupe orice alt program cu frecvena de 60 Hz,


- rutina de ceas permie reevaluarea prioritilor proceselor i implicit schimbarea procesului;
- n absena altor ntreruperi, ceasul realizeaz divizarea timpului, => sistemul este mprit ntre
mai muli utilizatori;
- apeluri de sistem - prin care utilizatorul solicit diverse servicii oferite de SO; cele care realizeaz
operaii de intrare/ieire duc la suspendarea procesului apelator pe durata transmiterii datelor;
- cereri de serviciu ale perifericelor de intrare/ieire.

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.
-

Mecanismul de trecere de la:


- user -> nucleu -se face prin apeluri sistem,
- nucleu -> user se face prin intoarcerea din apelul sistem
Conf.dr.Carmen Timofte

Sisteme de operare

(*)

Conf.dr.Carmen Timofte

Sisteme de operare

(*) Starile unui proces


Starile de baza ale unui proces:
1.
Nou procesul a fost creat;
2.
In asteptare Ateapt apariia unui eveniment (echipament hardware,
intervenia utilizatorului sau a altui proces; un proces intra in aceasta stare
singur, de exp. cand asteapta terminarea unei op. de I/E ; un proces se poate
afla in asteptare pe disc (swapped) sau in memorie;
3.
Gata de executie procesul are toate resursele, asteptand sa intre in executie;
in acesta stare se pot gasi mai multe procese simultan, plasate de nucleu intr-o
coada de asteptare, in functie de prioritati;
4.
In executie in mod kernel sau user;
5.
Suspendat- un alt proces a ordonat ca acest proces s intre n starea
suspendat (go to sleep). Procesul aflat n starea suspendat va fi trezit de
ctre alt proces
6.
Zombie - sunt trecute toate procesele in mom. terminarii lor;
(nu se elib. intrarea in tabela de procese, acest lucru realizandu-se de catre parintele
procesului, in urma primirii de la nucleu unui semnal de terminare a fiului.)
7.

Terminat - Procesul i-a ncheiat execuia.

Conf.dr.Carmen Timofte

Sisteme de operare

10

(*)Starile unui proces

Conf.dr.Carmen Timofte

Sisteme de operare

11

(*) comenzi de lucru cu procese


Comenzi de lucru cu procese: cron , kill, ps, sleep, nice, at, fg,
bg
cron

Execut comenzile specificate n fiierul crontab


(root)

kill [-sig_id] id_proces


kill 92345

Se trimite semnalul sig_id procesului cu numrul


id_proces.
Trimite semnalul 15 (de terminare) procesului 92345

ps [efl]

Arat procesele care ruleaz i starea lor

sleep sec
sleep 10; date&

Suspend execuia curent pentru nr. secunde


specificat
Lanseaz n execuie programul date dup 10 secunde

nice [-incr] comanda [argument]


nice 12 date
nice --12 date

Schimb prioritatea unui proces (root)


Date va rula la prioritatea +12 (mai mic)
Date va rula la prioritatea 12 (mai mare)

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:

Adresa din tabela de procese asociata;


Descriptorii fisierelor deschise de proces;
Directorul curent si cel radacina asociat procesului;
Numerele de identificare ale user-ului si grupului => pt. det. drepturilor de acces la fis.

Conf.dr.Carmen Timofte

Sisteme de operare

13

2.5.3. Directivele fork si exec


Planificarea proceselor


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.

Dup bifurcaie, ambele procese se execut independent;

procesul fiu poate genera o nou bifurcaie

proces3 are acces la toate fiierele deschise de procesele


anterioare, n timp ce invers nu se permite accesul => fiierele
sunt accesibile de pe nivelurile situate la periferia ierarhiei.

Shell iniiaz un proces=> bifurcaia este aranjat astfel nct


Shell s atepte terminarea procesului (executat n
foreground).

Dac nu ateapt, nseamn c Shell a dat natere altor


procese mai puin prioritare (procese executate n
background, adugnd dup comanda corespunztoare
semnul &).

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

Copilul motenete de la printe, printre altele, cte o copie pentru


fiecare variabil alocat static sau dinamic de ctre printe, toi
descriptorii de fiiere ai printelui;

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:

Procesul din care s-a lansat comanda se termin i peste el se


suprapune imaginea procesului vechi care ncepe s se execute
Directiva ntoarce 0 dac s-a lansat corect, sau 0 n caz contrar

execl(bin/ls, ls, 0);

Conf.dr.Carmen Timofte

Sisteme de operare

16

(*)
-

Directiva exit termin un proces


exit(int cod)

o ntoarce 0 dac procesul s-a terminat corect, sau ntoarce codul de eroare
n caz contrar
-

Directiva wait permite printelui ateptarea terminrii copilului


pid_t wait(int * status)

o ntoarce ctre printe identificatorul copilului care s-a terminat, sau 1


dac nu are nici un copil
-

Directiva dup copiaz descriptorul de fiier df (dat ca parametru), n prima intrare


liber din tabela de descriere a fiierelor din zona user, i ntoarce noul descriptor de
fiier
int dup(df)
int df

Directiva pipe creeaz un canal de comunicaie ntre 2 procese


int pipe(int file_descr[2])

o Directiva ntoarce 2 descriptori de fiier memorai n 2 ntregi, care


reprezint cele 2 pri ale conductei
o file_descr[0]- partea din pipe pentru citire
o file_descr[1]- partea din pipe pentru scriere
o Comunicarea se face cu read/write ca la orice fiier normal
o Exp (who|lpr) ex7.c

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,

gcc o nume_fis_iesire nume_fis_intrare.c


Conf.dr.Carmen Timofte

Sisteme de operare

18

2.5.4. Sincronizarea proceselor


Controlata de SO prin pipe = conducta de comunicatie
Controlata de user prin evenimente si semafoare

Sincronizarea prin intermediul evenimentelor


o

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.

 Sincronizarea prin semnale


- Semnal = o modalitate de semnalare a evenimentelor n
-

sistem (alt mod fiind prin funcia wakeup)


Este implementat cu ajutorul unor bii, setai:
o de nucleu (la evenimente hardware),
o de utilizator (prin apelul directivei kill)
tratarea semnalului se face n contextul procesului care-l
primete;
exist mai multe tipuri de semnale, care difer de la
versiune la versiune de Unix, cum ar fi: pt. terminarea
procesului, pt. excepii, pt. trasare execuie proces, venite
de la utilizator (prin directiva kill sau alarm) etc.
Aciunea implic asociat unui semnal este de terminare a
procesului, dar exist i posibilitatea de a executa anumite
aciuni prin funcia signal(nrsig, f), unde nrsig= nr.
semnal, iar f = numele rutinei care trateaz semnalul i care
va trebui def. de utilizator.

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

- Se realizeaz prin funcia sistem wait permite printelui


ateptarea terminrii copilului
pid_t wait(& status)

- ntoarce ctre printe identificatorul copilului care s-a


terminat, sau 1 dac nu are nici un copil

- Dac tatl dorete sincronizarea cu un anumit fiu, se


folosete secvena:
while(wait(&status)!=pid);

care repet blocarea tatlui, pn cnd se termin fiul cu


identificatorul pid;

Conf.dr.Carmen Timofte

Sisteme de operare

22

11

(*)


Sincronizarea prin intermediul unor funcii sistem


-

Exist un numr de funcii care permit sincronizarea


controlat de utilizator, cum ar fi: kill,alarm, pause,
sleep;
o

kill(pid, sig)

alarm(seconds)


o

funcie directiv care cedeaz controlul de la


programul apelant; se poate prsi aceast
stare n urma receptrii unui semnal prin
kill sau alarm.

sleep(sec)


Conf.dr.Carmen Timofte

funcie directiv care trimite semnalul


SIGALARM ctre procesul apelant, ntr-un
numr de secunde dat ca argument

pause()

funcie directiv care transmite semnalul sig


procesului identificat prin pid; procesul
emitor i cel receptor al semnalului trebuie
s aibe acelai user-ID; dac pid=0, atunci
semnalul este transmis tuturor proceselor din
acelai grup cu emitorul

funcie de bibliotec care suspend execuia


procesului curent pentru un timp specificat
Sisteme de operare
(sec)

23

Sincronizarea prin intermediul semafoarelor

Alturi de mecanismele de sincronizare clasice, versiunea SystemV a


adugat un pachet de primitive care implementeaz conceptele de:
 Semafor (sem)
 Regiune de memorie partajat (shm)
 Coad de mesaje (msg)
o Aceste primitive sunt grupate ntr-un pachet de funcii numit IPC (Inter
Process Communication Package), care cuprinde 3 clase principale de
funcii, identificate prin prefixele get, op, ctl:
 Familia get creeaz structuri de date specifice unui anumit
mecanism de sincronizare;
Semafoare reprezinta o
Conine semget, shmget, msgget;
generalizarea a
Primesc ca parametrii:
primitivelor de sistem
o O cheie numeric care identific unic structura de
wait si signal. Kernelul
date (trebuie s fie aceeai pentru procesele care o
face toate operatiile
utilizeaz); cheia poate fi aleas sau generat de o
una cate una si nici un
funcie de bibliotec:
proces nu poate
int ftok(nume_fis, caracter)
accesa semaforul pana
ntoarce o cheie numeric sau 1, n caz de eroare;
cand toate operatiile
o Un mod asemntor cu modul de acces la fiiere
ntorc o valoare numeric, ntreag, care va fi folosit de
nu sunt indeplinite.
operaia urmtoare pentru a identifica structura de date
 Familia op realizeaz operaii specifice de sincronizare i/sau
comunicare
 Familia ctl realizeaz operaii de control asupra structurilor de
date asociate primitivelor IPC, cum ar fi: tergere, afiare valori,
afiare stare, etc.
o Structura de date asociat SEMAFOR:
o Drepturi de acces la semafoare
o Sintaxa funciilor pentru lucru cu semafoare (COMPLETATI !!!)
 semget,
 semop,
 semctl
o

Exemplu: semafor.c

Conf.dr.Carmen Timofte

Sisteme de operare

24

12

2.5.5. Comunicarea intre procese


Se poate realiza prin:
1. fiiere obinuite (sinc_bloc_fis.c)
2. fiiere tip conduct (pipe.c)
3. zone de memorie comun (semafor.c)
4. cozi de mesaje (cozim_transm.c, cozim_recep.c)

1. Comunicarea prin intermediul fiierelor


-

este cea mai simpl i mai direct metod


este cea mai ineficient, pt. ca nu ofer un mecanism de control automat al accesului
concurent, acesta cznd n sarcina utilizatorul;
se poate implementa n 2 moduri:
o prin simularea unei regiuni critice cu funcia creat, fr drepturi de
scriere
while((f=creat(fis, 0111))<0) sleep(2);
[regiune critic]
unlink(fis);

prin directiva lockf sau funcia fcntl pt.accesul controlat la fiiere


(exp: sinc_bloc_fis.c)
 accesul este controlat de SO
 permite blocarea accesului la o zon de fiier pn la apelarea
funciei cu un parametru care specific deblocarea

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

este implementat printr-un mecanism de acces la fiiere controlat de SO


conductele sunt fiiere obinuit la care operaiile de scriere/ citire se realizeaz n
ordinea FIFO
exist 2 tipuri de pipe-uri: anonime i cu nume (FIFO)
o pipe-uri anonime
 SO folosete pentru fiierul pipe primele 10 blocuri de pe disc, deci
au dimensiune limitat
 Blocurile reprezint o coad circular, cu pointeri de Read/ Write
diferii (pentru a respecta politica FIFO)
 Nu permit acces direct
 Operaiile de Read/ Write se fac sincronizat
 Comunicarea prin pipe-uri anonime se face doar ntre procesul tat
i fiii si
 i-nod-ul pentru pipe-ul anonim este ters automat de SO atunci
cnd dispar procesele care-l refereau
 Exemplu: pipe.c
o pipe-uri cu nume named pipe fiiere FIFO
 este creat ca un fiier obinuit, cu directiva mknod i paramentrul
010000, putnd fi utilizat de procese care n-au nici o legtur unul
cu altul (cum ar fi cele tat-fiu)
 trebuie ters n mod explicit de utilizator cu funcia unlink (nu
este ters automat de SO)

Conf.dr.Carmen Timofte

Sisteme de operare

26

13

3. Comunicarea prin zon de memorie comun (partajat)


-

reprezinta cea mai rapid form de comunicare ntre procese;


este o zon de memorie n care este mapat o poriune din spaiul virtual al proceselor
care comunic (un bloc comun de memorie virtuala partajata de mai multe procese).
procesele citesc sau scriu in spatiul comun de memorie folosind aceleasi instructiuni
cu care citesc/scriu alte portiuni de memorie virtuala.
Permisiunile sunt read-only sau read-write pentru fiecare proces in parte.
Excluderea mutuala este asigurata de procesele care folosesc memoria partajata.
implementarea se realizeaz cu ajutorul primitivelor de comunicare specifice pentru
zone de memorie comune, care fac parte din pachetul IPC, cum ar fi:
o
o
o
o

shmget
sgmat
shmdt
shmdl

( unde sh= shared, m = memory)


-

Completai sintaxa funciilor mai sus amintite!


exemplu: semafor.c
Conf.dr.Carmen Timofte

Sisteme de operare

27

(*)

Doua procese partajeaza un fisier mapat, cu adrese virtuale


diferite

- Scrierea in acest fisier va fi vizibila instantaneu de ceilalti


Conf.dr.Carmen Timofte
Sisteme de operare

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

2.5.6. Functiile de gestiune


Gestiunea proceselor


controlul executiei lor prin implementarea unor primitive de creare, terminare, suspendare,
comunicare intre procese;

Planificarea pt. executie conform politicii time-sharing;

Conf.dr.Carmen Timofte

Sisteme de operare

30

15

- procesorul este alocat de ctre nucleu;


- fiecare proces primete cuante egale de timp, de durat fix ntr-o planificare de tip Round- Robin; => la un moment dat, un
singur proces ocup UC, fiind n stare de execuie;
- dup terminarea cuantei de timp, nucleul scoate procesul din starea n execuie i va aduce alt proces, relundu-se ulterior
execuia primului proces;
- nucleul asociaz fiecrui proces activ o prioritate, calculat dinamic i asociat direct cu timpul de execuie consumat de
procesul respectiv;
- prioritile sunt de 2 feluri, separate printr-o valoare de prag:
o prioriti utilizator;
o prioriti nucleu.
- calculul prioritii proceselor de ctre nucleu:
o atribuie o prioritate unui proces, nainte de a fi trecut n starea n ateptare, corelnd valoarea cu cauza trecerii n
acea stare;
o recalculeaz prioritatea n momentul n care procesul revine n mod utilizator;
o rutine de tratare a ntreruperilor de ceas ajusteaz prioritile din secund n secund => recalcularea prioritilor de
ctre nucleu, pt. a preveni monopolizarea procesorului de un proces anume;
o prioritatea unui proces n mod utilizator este n funcie de timpul recent de folosire a UC (cel ce a folosit recent UCul are o prioritate mai mic).
- selectarea procesului se face de ctre scheduler n funcie de prioritatea procesului, selectnd procesul cu prioritatea cea
mai mare dintre cele aflate n starea gata de rulare i ncrcate n memorie;
- cuantele de timp ale procesorului sunt controlate de driver-ul de ceas, care:
o reprogrameaz ceasul de timp real al mainii;
o programeaz execuia unor funcii interne ale nucleului, n funcie de valoarea unor time-ri interni;
o msoar timpul sistem;
o transmite semnalul SIGALRM ctre procese, la cererea lor;
o activeaz periodic procesul swapper;
o controleaz planificarea n execuie a proceselor.
Conf.dr.Carmen Timofte

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;
-

n modul de operare cu divizarea timpului (time-sharing), poate opera fr evacuarea


coninutului memoriei pe disc; fiecare program se execut n cuanta de timp alocat,
rmnnd n memorie numai programele a cror execuie nu s-a ncheiat
-

(practic, numai registrele sistemului sunt divizate ntre programe, astfel c evacuarea programelor
implic de fapt, numai evacuarea coninutului registrelor);

- pe durata execuiei proceselor, UNIX aloc poriuni distincte de RAM pentru:

segmentul de cod (instruciunile programului) protejat la scriere;


segmentul de date ce conine toate datele definite de utilizator: valori, variabile, etc.;
segmentul de stiv care conine toate informaiile de sistem necesare meninerii intacte a unui
proces, atunci cnd este evacuat din RAM pe disc sau cnd este ncrcat n RAM de pe disc.

Conf.dr.Carmen Timofte

Sisteme de operare

33

(*)

a) Spatiul virtual al procesul A ; b) Memoria fizica; c) Spatiul virtual al


procesul B
BSS= Block Started by Symbol
Conf.dr.Carmen Timofte

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)
-

Swapping se realizeaza de catre nucleu atunci cand:


Se aloca spatiu pt. procesul fiu, in cadrul executie directivei fork;
Se mareste dinamic zona de date a unui proces, cu directiva brk;
Se elibereaza spatiul pt. un alt proces, care se afla pe disc.

Conf.dr.Carmen Timofte

Sisteme de operare

35

- swap device dispozitiv de tip bloc, creat i configurat la instalarea sistemului;


o driver-ul su controleaz zona de pe disc n care se transfer procesele;
o alocarea spaiului disponibil se face n grupuri de blocuri continue;
o gestiunea acestui spaiu este diferit de cea a SF;
o informaiile despre spaiul liber din discul de swap i a memoriei sunt memorate n
tabele numite swap map i core map;
o algoritmul de alocare al zonei este de tipul first-fit;
- nucleul salveaz pe disc doar spaiul de memorie asignat procesului respectiv;
- transferul proceselor de pe disc n RAM se face de ctre procesul 0 (swapper)
- la terminarea procesului de iniializare, swapper-ul rmne ntr-o bucl infinit, realiznd
operaii de transfer n zona de swap la cererea nucleului;
- nucleul planific pt. execuie swapper-ul ca pe un proces obinuit, cu prioritatea maxim n
mod nucleu;
- procesul 0 examineaz coada proceselor gata de rulare, care nu sunt n memorie, i-l
alege pe cel care a petrecut cel mai mult timp pe disc;
- dac nu ncape n RAM, swapper-ul transfer mai nti un proces din memorie pe disc i
reia algoritmul;
- transferul din memorie pe disc => se aleg mai nti procesele n starea n ateptare, n
funcie de prioritate i de timpul petrecut n memorie;
- dac nu exist astfel de procese, atunci este ales un proces dintre cele gata de rulare, n
funcie de prioritate (nice) i de timpul petrecut n memorie.

Conf.dr.Carmen Timofte

Sisteme de operare

36

18

Demand paging (cerere de paginare)


- dimensiunile proceselor nu mai sunt limitate de dimensiunea mem RAM, ci doar de mrimea
maxim a unui proces permis de SO;
- mem. este mprit n pagini de dimensiune fix;
- alocarea de pagini unui proces se realizeaz conform algoritmului LRU, din lista de pagini
disponibile;
- cnd procesul acceseaz o pagin care nu se afl n memorie, se genereaz o ntrerupere
page fault;
- nucleul suspend execuia procesului pn cnd reuete operaia de ncrcare a paginii
respective, dup care reia execuia procesului;
- nucleul utilizeaz 4 structuri de date pt. implementarea funciilor de gestiune a memorie:
o tabele de pagini (page table) conine adresa fizic a paginii, timpul petrecut n
memorie, biii de protecie a paginii .a.
o tabela descriptorilor de bloc descrie blcoul de disc pe care se afl o copie a paginii
i conine numrul logic al dispozitivului de swap, numrul blocului etc.
o Tabela de descriere a paginilor conine starea paginii, numrul de procese care
utilizeaz pagina, numrul dispozitivului logic i al blocului care conine o copie a
paginii, inf. de nlnuire a paginilor libere etc.
o Tabela de descriere a zonei de swap conine inf. despre paginile aflate pe
dispozitivul de swap, cum ari fi, nr. de intrri n tabela de pagini care adreseaz
pagina pe dispozitivul de swap
Se folosesc ambele metode.
- Nucleul activeaz swapper-ul,
- ntrerupe procesul curent,
- l pune n starea gata de rulare pe disc (swapped),
- swapper-ul transfer pe disc procese n ntregime, pn cnd se elibereaz suficient
memorie;

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;

Toate operaiile de intrare/ieire sunt privite ca operaii cu fiiere, Shell nerecunoscnd


existena unitilor periferice, deci Kernel ascunde unitile fizice reale sub forma unor
fiiere aparente.
Fiecare unitate fizic este nzestrat cu un program special (driver) care translateaz
aciunile solicitate de unitile virtuale astfel nct utilizatorul poate comunica cu orice
unitate ataat sistemului fr nicio deosebire, dac aceasta dispune de driverul
corespunztor.
Deoarece aceste fiiere sunt deosebite de fiierele utilizator, ele sunt referite ca fiiere
speciale de tip caracter sau bloc, fiind recunoscute dou tipuri de uniti periferice (disc i
terminal) a cror inod-uri conin:



numrul major- indic tipul dispozitivului;


numrul minor- indic numrul unitii

Conf.dr.Carmen Timofte

Sisteme de operare

39

(*)


Accesul la sistemul de fiiere se face la trei nivele:


1) prin utilitare - nivelul 1;
2) prin funcii de bibliotec <stdio.h> - nivelul 2 care apeleaz 3);
3) prin apeluri de sistem (directive de I/E) - nivelul 3: open, close, read, write, creat prin
care se gestioneaz fiierele la cel mai sczut nivel.
Apelul unei directive de I/E => suspendarea procesului curent pe durata executie operatiei
(in acest timp, in UC va fi planificat un alt proces)

Pentru reducerea numrului operaiilor de intrare/ieire la periferice ce lucreaz la nivel de


bloc, nucleul organizeaz n memoria intern o zon de tampone cache (structuri de date
software) diferite de memoria cache.

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


alocarea/dealocarea mem. secundare (ext.) pt. stocarea si regasirea eficienta a


inf.;

protejarea fis. impotriva acceselor ilegale;

Conf.dr.Carmen Timofte

Sisteme de operare

41

2.5.7. Initializarea sistemului






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