UNIX Kernel

Download UNIX Kernel

Post on 04-Nov-2015

221 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

CSIE

TRANSCRIPT

<ul><li><p>1Conf.dr.Carmen Timofte Sisteme de operare 1</p><p>2.5. Kernel-ul in UNIX</p><p>2.5.1.Structura.Functiile nucleului</p><p>2.5.2. Conceptul de proces. Stari. Comenzi</p><p>2.5.3. Directivele fork, exec</p><p>2.5.4. Sincronizarea proceselor</p><p>2.5.5. Comunicarea proceselor</p><p>2.5.6. Functiile de gestiune</p><p>2.5.7. Initializarea sistemului</p><p>Conf.dr.Carmen Timofte Sisteme de operare 2</p><p>Nucleul SO este: </p><p> partea rezidenta a SO, care controleaza alocarea:</p><p> timpului masinii;</p><p> a spatiului de memorie;</p><p> a canalelor de comunicatie intre procesele existente</p><p> 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;</p><p> alctuit din urmtoarele componente principale</p><p> programul supervizor central (rezident in RAM);</p><p> rutine de servicii: scrierea n memorie, gestiunea ceasului sistem etc.; suntapelate atunci cnd sunt necesare, se gasesc in zona de tranziente;</p><p>2.5.1.Structura. Functiile kernel-ului</p></li><li><p>2Conf.dr.Carmen Timofte Sisteme de operare 3</p><p> care, la randul lor formeaza urmatoarele 4 componente:</p><p>1.Interfata cu procesele utilizator prin system calls (apelurisistem);</p><p>2.Subsistemul de control al operatiilor de I/E prin drivers(subrutine de control al dispozitivelor); cca.1000 linii scrise n limbajul C;</p><p>Controleaza modul de lucru cu dispoz. periferice (in modurilecaracter, bloc, raw);</p><p>Aloca spatiu pt. fisiere;</p><p>Gestioneaza spatiul liber din mem. Secundara;</p><p>controleaza accesul la fisiere;</p><p>3.Subsistemul de control al proceselor- contine cca. 7-8000 linii scrise n limbajul C (portabil pe orice sistem); realizeaza:</p><p> planificarea, sincronizarea, comunicarea intre procese</p><p>Gestiunea memoriei</p><p>4.Interfata cu hardware-ul prin intreruperi; este scrisa in lb. de asamblare, are dimensiuni reduse si este delimitata stric.</p><p>(*) Structura</p><p>Conf.dr.Carmen Timofte Sisteme de operare 4</p><p>(*) Structura</p><p>Primitivele de sistem sunt specificefiecrui sistem de calcul, scrise nlimbaj de asamblare- cca.1000 liniicodul si conin:</p><p>- operaii de intrare/ieire de baz;</p><p>- comutarea execuiei ntre procese;</p><p>- permiterea sau inhibarea ntreruperilorhardware;</p><p>- resetarea prioritilor ntreruperilor;</p><p>- alte operaii.</p><p>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.</p></li><li><p>3Conf.dr.Carmen Timofte Sisteme de operare 5</p><p>(*)</p><p>Structura kernel</p><p>Conf.dr.Carmen Timofte Sisteme de operare 6</p><p>(*) Functii</p><p>Kernel =&gt; principala functie este de GESTIUNEA RES.= </p><p>1. alocare/dealocare de res.</p><p>2. controlul starii res.</p><p>3. implementarea unei politici de control a operatiilor de mai sus.</p><p>Functiile kernel-ului:</p><p>1. Gestiunea proceselor </p><p> controlul executiei lor prin implementarea unor primitive de creare, terminare, suspendare, comunicare intre procese; </p><p> Planificarea pt. executie conform politicii time-sharing;</p><p>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). </p><p>3. Gestiunea dispozitivelor perifice permite procesor un acces controlat la DP.: banda, disc, interfete de retea;</p><p>4. Gestiunea fisierelor </p><p> alocarea/dealocarea mem. secundare (ext.) pt. stocarea si regasireaeficienta a inf.;</p><p> protejarea fis. impotriva acceselor ilegale;</p></li><li><p>4Conf.dr.Carmen Timofte Sisteme de operare 7</p><p>2.5.2. Conceptul de proces</p><p> Un SC poate lucra in 2 moduri:- Utilizator - cnd execut un program sau proces;- Sistem (Kernel) - cnd execut un cod sistem.</p><p> Comutarea ntre modul utilizator i KERNEL se realizeaz prin 3 mecanisme:- ceasul- care ntrerupe orice alt program cu frecvena de 60 Hz, </p><p>- rutina de ceas permie reevaluarea prioritilor proceselor i implicit schimbarea procesului; - n absena altor ntreruperi, ceasul realizeaz divizarea timpului, =&gt; sistemul este mprit ntremai muli utilizatori;</p><p>- 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;</p><p>- cereri de serviciu ale perifericelor de intrare/ieire.</p><p>Conf.dr.Carmen Timofte Sisteme de operare 8</p><p>(*) </p><p>Procesul este concept fundamental de organizare a SO UNIX. </p><p>Proces = un program n execuie, care contine imaginea fis exec. in mem (zonade cod, date, stiva.) + res. din mom. executiei (registrii, fis. deschise etc.) </p><p>Pentru un program activ, pot exista mai multe procese active- numite instane.</p><p>Firele de executie multiple pot exista printr-un task sau proces.</p><p>Executie proceselor pe 2 niveluri:</p><p>- Utilizator (user ) procesele isi pot accesa doar propriile zone de cod si date;</p><p>- Nucleu (kernel) procesele pot accesa si spatiul de adresa al nucleului; </p><p>- anumite instructiuni masina sunt privilegiate si nu pot fi executate decatin mod nucleu.</p><p>Mecanismul de trecere de la:</p><p>- user -&gt; nucleu -se face prin apeluri sistem, </p><p>- nucleu -&gt; user se face prin intoarcerea din apelul sistem</p></li><li><p>5Conf.dr.Carmen Timofte Sisteme de operare 9</p><p>(*)</p><p>Conf.dr.Carmen Timofte Sisteme de operare 10</p><p>(*) Starile unui proces</p><p>Starile de baza ale unui proces:</p><p>1. Nou procesul a fost creat;</p><p>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;</p><p>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;</p><p>4. In executie in mod kernel sau user;</p><p>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</p><p>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.)</p><p>7. Terminat - Procesul i-a ncheiat execuia.</p></li><li><p>6Conf.dr.Carmen Timofte Sisteme de operare 11</p><p>(*)Starile unui proces</p><p>Conf.dr.Carmen Timofte Sisteme de operare 12</p><p>(*) comenzi de lucru cu procese</p><p>cron Execut comenzile specificate n fiierul crontab (root) </p><p>kill [-sig_id] id_proces </p><p>kill 92345 </p><p>Se trimite semnalul sig_id procesului cu numrul id_proces. Trimite semnalul 15 (de terminare) procesului 92345 </p><p>ps [efl] Arat procesele care ruleaz i starea lor </p><p>sleep sec </p><p>sleep 10; date&amp; </p><p>Suspend execuia curent pentru nr. secunde specificat Lanseaz n execuie programul date dup 10 secunde </p><p>nice [-incr] comanda [argument] nice 12 date nice --12 date </p><p>Schimb prioritatea unui proces (root) Date va rula la prioritatea +12 (mai mic) Date va rula la prioritatea 12 (mai mare) </p><p>Comenzi de lucru cu procese: cron , kill, ps, sleep, nice, at, fg, bg</p></li><li><p>7Conf.dr.Carmen Timofte Sisteme de operare 13</p><p>(*) </p><p>Informaiile necesare procesului sunt memorate n:</p><p>a) tabela proceselor (proc area) este alocata static de nucleu;</p><p>- este constituit n memorie, </p><p>- conine o intrare pentru fiecare proces, detaliind starea acestuia:</p><p> localizarea procesului;</p><p> adresa de memorie i adresa de evacuare;</p><p> mrimea procesului;</p><p> numrul de identificare;</p><p> identificatorul utilizat;</p><p>b) tabela utilizator zona user (u area)- contine datele cu care opereaza nucleul, atuncicand procesul este in executie; </p><p>- este parte a regiunii de date a procesului;</p><p>- este eliberata atunci cand este evacuat procesului pe disc;</p><p>- este o extensie a tabelei de procese si contine: Adresa din tabela de procese asociata;</p><p> Descriptorii fisierelor deschise de proces;</p><p> Directorul curent si cel radacina asociat procesului;</p><p> Numerele de identificare ale user-ului si grupului =&gt; pt. det. drepturilor de acces la fis.</p><p>Conf.dr.Carmen Timofte Sisteme de operare 14</p><p>2.5.3. Directivele fork si exec</p><p> proces3 are acces la toate fiierele deschise de proceseleanterioare, n timp ce invers nu se permite accesul =&gt; fiierelesunt accesibile de pe nivelurile situate la periferia ierarhiei.</p><p> Shell iniiaz un proces=&gt; bifurcaia este aranjat astfel nctShell s atepte terminarea procesului (executat nforeground). </p><p> Dac nu ateapt, nseamn c Shell a dat natere altorprocese mai puin prioritare (procese executate nbackground, adugnd dup comanda corespunztoaresemnul &amp;).</p><p>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, =&gt; </p><p>structura ierarhica de procese creata printr-un mecanism numit bifurcaie (fork), prin care Kernel nlocuiete un proces existent, prin dou procese:</p><p>- procesul iniial (printe);- procesul iniiat de procesul iniial (fiu), care mparte (partajeaz) toate fiierele cu procesul printe.</p><p> Dup bifurcaie, ambele procese se execut independent; excepie: cnd se solicit explicit ca procesul printe s atepte terminarea procesului fiu prin directiva WAIT; </p><p> procesul fiu poate genera o nou bifurcaie</p></li><li><p>8Conf.dr.Carmen Timofte Sisteme de operare 15</p><p>(*)</p><p>- Procesele n Unix se afl n relaia printe-copil, adic un proces printe poate lansa n execuie alt proces (copil) </p><p>- Exist 2 moduri de a realiza acest lucru: o Directiva fork (pid_t fork()) </p><p> Creeaz un nou proces incrementnd cu1 numrul total de procese din sistem, noul proces avnd propria imagine n memorie; </p><p> 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) </p><p>int i; pid_t child; if((child=fork()) = = 0) { proces copil } proces printe </p><p> 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; </p><p>Conf.dr.Carmen Timofte Sisteme de operare 16</p><p>(*)</p><p>o Familiei de directive exec Prin acest set de directive, imaginea noului proces se suprapune </p><p>peste imaginea vechiului proces, care nceteaz s mai existe; Numrul total de procese din sistem rmne constant </p><p>int execl(char * path, char * argv0, char * argv1, ...., 0) </p><p>sau execv(int argc, char * argv[]) </p><p> Exp: execl(bin/ls, ls, 0); </p><p> Procesul din care s-a lansat comanda se termin i peste el se suprapune imaginea procesului vechi care ncepe s se execute </p><p> Directiva ntoarce 0 dac s-a lansat corect, sau 0 n caz contrar </p></li><li><p>9Conf.dr.Carmen Timofte Sisteme de operare 17</p><p>(*)</p><p>- Directiva exit termin un proces exit(int cod) </p><p>o ntoarce 0 dac procesul s-a terminat corect, sau ntoarce codul de eroare n caz contrar </p><p>- Directiva wait permite printelui ateptarea terminrii copilului pid_t wait(int * status) </p><p>o ntoarce ctre printe identificatorul copilului care s-a terminat, sau 1 dac nu are nici un copil </p><p>- 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 </p><p>int dup(df) int df </p><p>- Directiva pipe creeaz un canal de comunicaie ntre 2 procese int pipe(int file_descr[2]) </p><p>o Directiva ntoarce 2 descriptori de fiier memorai n 2 ntregi, care reprezint cele 2 pri ale conductei </p><p>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 </p><p>Conf.dr.Carmen Timofte Sisteme de operare 18</p><p>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); } } </p><p>- Exemple: ex1.c, ex2.c, ex3.c, ex4.c, ex5.c, ex6.c, ex7.c, ex8.c, ex9.c, </p><p>(*)</p><p>gcc o nume_fis_iesire nume_fis_intrare.c</p></li><li><p>10</p><p>Conf.dr.Carmen Timofte Sisteme de operare 19</p><p>2.5.4. Sincronizarea proceselor</p><p>- Controlata de SO prin pipe = conducta de comunicatie</p><p>- Controlata de user prin evenimente si semafoare</p><p>- Sincronizarea prin intermediul evenimentelor o Evenimentul: </p><p> reprezint modalitatea de precizare a momentului n care un proces blocat poate trece n starea gata de rulare; </p><p> este reprezentat printr-un numr ntreg, ales prin convenie, cunoscut de kernel; </p><p> nu permite transmiterea altor informaii, neavnd asociat memorie; </p><p> Devantaj- sincronizarea nu se poate face n funcie de o anumit cantitate de informaie </p><p>o Blocarea proceselor se face prin funcia intern sleep (diferit de funcia de bibliotec sleep) </p><p>o Deblocarea proceselor nucleul trece toate procesele care ateapt o anumit condiie n starea gata de rulare, prin wakeup; </p><p>o Sincronizarea prin evenimente se poate realiza prin 3 moduri: prin semnale, ntre procesul tat i fiii si, prin intermediul unor funcii sistem. </p><p>Conf.dr.Carmen Timofte Sisteme de operare 20</p><p>(*)</p><p> Sincronizarea prin semnale - Semnal = o modalitate de semnalare a evenimentelor n </p><p>sistem (alt mod fiind prin funcia wakeup) - Este implementat cu ajutorul unor bii, setai: </p><p>o de nucleu (la evenimente hardware), o de utilizator (prin apelul directivei kill) </p><p>- tratarea semnalului se face n contextul procesului care-l primete; </p><p>- 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. </p><p>- 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. </p><p>Kill l sau man signal sau cat /usr/include/sys/signal.h =&gt; semnale + nr. asociate</p><p>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.</p></li><li><p>11</p><p>Conf.dr.Carmen Timofte Sisteme de operare 21</p><p>Conf.dr.Carmen Timofte Sisteme de operare 22</p><p>(*)</p><p> Sincronizarea ntre proces tat i fiii si - Se realizeaz prin funcia sistem wait permite printelui </p><p>ateptarea terminrii copilului pid_t wait(&amp; status) </p><p>- ntoarce ctre printe identificatorul copilului care s-a terminat, sau 1 dac nu are nici un copil </p><p>- Dac tatl dorete sincronizarea cu un anumit fiu, se folosete secvena: </p><p>while(wait(&amp;status)!=pid); care repet blocarea tatlui, pn cnd se termin fiul cu identificatorul pid; </p></li><li><p>12</p><p>Conf.dr.Carmen Timofte Sisteme de operare 23</p><p>(*)</p><p> Sincronizarea prin intermediul unor funcii sistem - Exist un numr de funcii care permit sincronizarea </p><p>controlat de utilizator, cum ar fi: kill,alarm, pause, sleep; </p><p>o kill(pid, sig) funcie directiv care transmite semnalul sig </p><p>procesului identificat prin pid; procesul emitor i cel receptor al semnalului trebuie s ai...</p></li></ul>

Recommended

View more >