unix kernel

Upload: mihai-dumitrescu

Post on 04-Nov-2015

266 views

Category:

Documents


10 download

DESCRIPTION

CSIE

TRANSCRIPT

  • 1Conf.dr.Carmen Timofte Sisteme de operare 1

    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

    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, nfuncie de sistem, se transform ntr-un numr mai mare sau mai mic de cuvintemain (sau bytes); intre acestea, 5 - 10% din totalul codului programelor (Shell, utilitare, KERNEL i celelalte) este variabil funcie de sistemul de calcul i de setulde utilitare;

    alctuit din urmtoarele componente principale

    programul supervizor central (rezident in RAM);

    rutine de servicii: scrierea n memorie, gestiunea ceasului sistem etc.; suntapelate atunci cnd sunt necesare, se gasesc in zona de tranziente;

    2.5.1.Structura. Functiile kernel-ului

  • 2Conf.dr.Carmen Timofte Sisteme de operare 3

    care, la randul lor formeaza urmatoarele 4 componente:

    1.Interfata cu procesele utilizator prin system calls (apelurisistem);

    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 modurilecaracter, bloc, raw);

    Aloca spatiu pt. fisiere;

    Gestioneaza spatiul liber din mem. Secundara;

    controleaza 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

    4.Interfata cu hardware-ul prin intreruperi; este scrisa in lb. de asamblare, are dimensiuni reduse si este delimitata stric.

    (*) Structura

    Conf.dr.Carmen Timofte Sisteme de operare 4

    (*) Structura

    Primitivele de sistem sunt specificefiecrui sistem de calcul, scrise nlimbaj de asamblare- cca.1000 liniicodul si conin:

    - operaii de intrare/ieire de baz;

    - comutarea execuiei ntre procese;

    - permiterea sau inhibarea ntreruperilorhardware;

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

  • 3Conf.dr.Carmen Timofte Sisteme de operare 5

    (*)

    Structura kernel

    Conf.dr.Carmen Timofte Sisteme de operare 6

    (*) 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,permitandaccesul 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 regasireaeficienta a inf.;

    protejarea fis. impotriva acceselor ilegale;

  • 4Conf.dr.Carmen Timofte Sisteme de operare 7

    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 ntremai muli utilizatori;

    - apeluri de sistem - prin care utilizatorul solicit diverse servicii oferite de SO; cele care realizeazoperaii 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 8

    (*)

    Procesul este concept fundamental de organizare a SO UNIX.

    Proces = un program n execuie, care contine imaginea fis exec. in mem (zonade 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 decatin mod nucleu.

    Mecanismul de trecere de la:

    - user -> nucleu -se face prin apeluri sistem,

    - nucleu -> user se face prin intoarcerea din apelul sistem

  • 5Conf.dr.Carmen Timofte Sisteme de operare 9

    (*)

    Conf.dr.Carmen Timofte Sisteme de operare 10

    (*) 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 poateafla 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-ocoada 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 parinteleprocesului, in urma primirii de la nucleu unui semnal de terminare a fiului.)

    7. Terminat - Procesul i-a ncheiat execuia.

  • 6Conf.dr.Carmen Timofte Sisteme de operare 11

    (*)Starile unui proces

    Conf.dr.Carmen Timofte Sisteme de operare 12

    (*) comenzi de lucru cu procese

    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)

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

  • 7Conf.dr.Carmen Timofte Sisteme de operare 13

    (*)

    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, atuncicand 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 14

    2.5.3. Directivele fork si exec

    proces3 are acces la toate fiierele deschise de proceseleanterioare, n timp ce invers nu se permite accesul => fiierelesunt accesibile de pe nivelurile situate la periferia ierarhiei.

    Shell iniiaz un proces=> bifurcaia este aranjat astfel nctShell s atepte terminarea procesului (executat nforeground).

    Dac nu ateapt, nseamn c Shell a dat natere altorprocese mai puin prioritare (procese executate nbackground, adugnd dup comanda corespunztoaresemnul &).

    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; excepie: cnd se solicit explicit ca procesul printe s atepte terminarea procesului fiu prin directiva WAIT;

    procesul fiu poate genera o nou bifurcaie

  • 8Conf.dr.Carmen Timofte Sisteme de operare 15

    (*)

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

    (*)

    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: execl(bin/ls, ls, 0);

    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

  • 9Conf.dr.Carmen Timofte Sisteme de operare 17

    (*)

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

    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

  • 10

    Conf.dr.Carmen Timofte Sisteme de operare 19

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

    o Blocarea proceselor se face prin funcia intern sleep (diferit de funcia de bibliotec sleep)

    o Deblocarea proceselor nucleul trece toate procesele care ateapt o anumit condiie n starea gata de rulare, prin wakeup;

    o 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 20

    (*)

    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

    Semnal un mecanismsoftware ce informeazaprocesul de aparitiaunui evenimentasincron. Un semnaleste similar cu o intrerupere hardware dar nu implica prioritati(toate semnalele suntconsiderate egale). Semnalele care apar in acelasi timp suntprezentate unui procespe rand, fara a se stabili o ordine bazatape prioritati.

  • 11

    Conf.dr.Carmen Timofte Sisteme de operare 21

    Conf.dr.Carmen Timofte Sisteme de operare 22

    (*)

    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;

  • 12

    Conf.dr.Carmen Timofte Sisteme de operare 23

    (*)

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

    o alarm(seconds) funcie directiv care trimite semnalul

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

    o pause() funcie directiv care cedeaz controlul de la

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

    o sleep(sec) funcie de bibliotec care suspend execuia

    procesului curent pentru un timp specificat (sec)

    Conf.dr.Carmen Timofte Sisteme de operare 24

    - Sincronizarea prin intermediul semafoarelor o 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;

    - Conine semget, shmget, msgget; - Primesc ca parametrii:

    o O cheie numeric care identific unic structura de date (trebuie s fie aceeai pentru procesele care o utilizeaz); cheia poate fi aleas sau generat de o funcie de bibliotec:

    int ftok(nume_fis, caracter) ntoarce o cheie numeric sau 1, n caz de eroare;

    o Un mod asemntor cu modul de acces la fiiere - ntorc o valoare numeric, ntreag, care va fi folosit de

    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

    Semafoare reprezinta o generalizarea a primitivelor de sistemwait si signal. Kernelulface toate operatiileuna cate una si nici un proces nu poateaccesa semaforul panacand toate operatiile

    nu sunt indeplinite.

  • 13

    Conf.dr.Carmen Timofte Sisteme de operare 25

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

  • 14

    Conf.dr.Carmen Timofte Sisteme de operare 27

    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 shmget o sgmat o shmdt o shmdl ( unde sh= shared, m = memory)

    Completai sintaxa funciilor mai sus amintite! - exemplu: semafor.c

    Conf.dr.Carmen Timofte Sisteme de operare 28

    (*)

    Doua procese partajeaza un fisier mapat, cu adrese virtualediferite

    - Scrierea in acest fisier va fi vizibila instantaneu de ceilalti

  • 15

    Conf.dr.Carmen Timofte Sisteme de operare 29

    (*)

    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:

    msggetmsgctlmsgsndmsgrcv

    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 30

    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;

  • 16

    Conf.dr.Carmen Timofte Sisteme de operare 31

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

    ul 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 32

    (*)

    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 rmneapn i se d din nou controlul; n acel moment, imaginea salvat anterior se rencarc n RAM; ea vacuprinde: coninutul prii de memorie inscriptibil; coninutul registrelor; numele directorului curent; lista fiierelor deschise de procesul considerat.

  • 17

    Conf.dr.Carmen Timofte Sisteme de operare 33

    (*)

    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 privindsuficiena 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 evacuareaconinutului 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 programelorimplic 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 34

    (*)

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

    BSS= Block Started by Symbol

  • 18

    Conf.dr.Carmen Timofte Sisteme de operare 35

    (*)

    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 nutrebuie rescris cnd se evacueaz;

    - Shell este ncrcat pentru fiecare utilizator, deci exist attea copii Shell, ciutilizatori sunt conectai; dac mai muli utilizatori solicit un program (segment de cod), nu este necesar copierea acestuia deoarece el poate fi folosit simultan; estesuficient s se creeze i cnd este necesar, s se evacueze un segment de date iun 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 36

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

  • 19

    Conf.dr.Carmen Timofte Sisteme de operare 37

    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 38

    (*)

  • 20

    Conf.dr.Carmen Timofte Sisteme de operare 39

    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 nerecunoscndexistena unitilor periferice, deci Kernel ascunde unitile fizice reale sub forma unorfiiere aparente.

    Fiecare unitate fizic este nzestrat cu un program special (driver) care translateazaciunile solicitate de unitile virtuale astfel nct utilizatorul poate comunica cu oriceunitate ataat sistemului fr nicio deosebire, dac aceasta dispune de driverulcorespunztor.

    Deoarece aceste fiiere sunt deosebite de fiierele utilizator, ele sunt referite ca fiierespeciale de tip caracter sau bloc, fiind recunoscute dou tipuri de uniti periferice (disc iterminal) a cror inod-uri conin: numrul major- indic tipul dispozitivului; numrul minor- indic numrul unitii

    (*)

    Conf.dr.Carmen Timofte Sisteme de operare 40

    (*)

    Accesul la sistemul de fiiere se face la trei nivele:1) prin utilitare - nivelul 1;2) prin funcii de bibliotec - 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 cruiconinut se ncarc n zona de date ataat tamponului. Funciile sunt apelate de nivelulinferior al sistemului de gestiune al fiierelor (SGF).

  • 21

    Conf.dr.Carmen Timofte Sisteme de operare 41

    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 42

    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 ajutorulinformatiilor 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 procesincomplet);

    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, devenindprimul proces complet din sistem

  • 22

    Conf.dr.Carmen Timofte Sisteme de operare 43

    (*)

    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. intretinereasitemului);

    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 44

    (*)