Curs 3-Sisteme de operare

9
Definiti procesul. Un proces este un program secvential in executie, impreuna cu zona sa de date, stiva si numaratorul de instructiuni (program counter). Orice proces este executat secvential, iar mai multe processe pot sa ruleze in paralel. De cele mai multe ori, executia in paralel se realizeaza alocand pe rand procesorul cate unui proces. Desi la un moment dat se executa un singur proces, in decurs de o secunda de exemplu, pot fi executate portiuni din mai multe procese. Din aceasta schema rezulta ca un process se poate gasi, la un moment dat, in una din urmatoarele stari: - in executie (RUNNING) – procesul se gaseste in executie atunci cand procesorul ii executa instructiunile; - pregatit pentru executie (READY) – este un proces care, desi ar fi gata sa isi continue executia, este lasat in asteptare din cauza ca un alt proces este in executie in mod voit sau procesul efectureaza o operatie in afara procesorului, mare consumatoare de timp (cum e cazul operatiilor de intrare – iesire – acestea sunt mai lente si intre timp procesorul ar putea executa parti din alte procese); - blocat (BLOCKED). Cum se creeaza un proces? Sunt patru pasi principali care duc la crearea unui proces: - initializarea sistemului; - executarea unui sistem de apel pentru crearea unui proces de catre un proces aflat deja in rulare; - o cerere de creare proces a utilizatorului;

description

Intrebari

Transcript of Curs 3-Sisteme de operare

Definiti procesul.

Un proces este un program secvential in executie, impreuna cu zona sa de date, stiva si numaratorul de instructiuni (program counter).

Orice proces este executat secvential, iar mai multe processe pot sa ruleze in paralel. De cele mai multe ori, executia in paralel se realizeaza alocand pe rand procesorul cate unui proces. Desi la un moment dat se executa un singur proces, in decurs de o secunda de exemplu, pot fi executate portiuni din mai multe procese. Din aceasta schema rezulta ca un process se poate gasi, la un moment dat, in una din urmatoarele stari:

in executie (RUNNING) procesul se gaseste in executie atunci cand procesorul ii executa instructiunile;

pregatit pentru executie (READY) este un proces care, desi ar fi gata sa isi continue executia, este lasat in asteptare din cauza ca un alt proces este in executie in mod voit sau procesul efectureaza o operatie in afara procesorului, mare consumatoare de timp (cum e cazul operatiilor de intrare iesire acestea sunt mai lente si intre timp procesorul ar putea executa parti din alte procese);

blocat (BLOCKED).

Cum se creeaza un proces?

Sunt patru pasi principali care duc la crearea unui proces:

initializarea sistemului;

executarea unui sistem de apel pentru crearea unui proces de catre un proces aflat deja in rulare;

o cerere de creare proces a utilizatorului;

initializarea unui set de batch jobs (secventa de comenzi care se executa fara interventie din afara).

Cum se incheie executia unui proces?

Un proces se poate incheia din cauza unuia din patru motive:

iesire normala (voluntara);

iesire pricinuita de eroare (voluntara);

eroare fatala (involuntara);

incheiere pricinuita de alt process (involuntar).

1. Normal exit (voluntar)

2. Error exit (voluntar)

3. Fatal error (involuntar)

4. Prin apelul de sistem kill (involuntar)

Caracterizati ierarhia de procese.

In unele sisteme, cand un proces creaza un altul, procesul parinte contiua sa fie asociet cu cel copil. Procesul copil poate si el sa creeze unul sau mai multe procese, astfel creandu-se o ierarhie.

Un proces printe creeaz proprii si fii care la rndul lor pot crea alte procese.

n UNIX ierarhia format se numete grup de procese. Un proces printe nu poate dezmoteni procesul fiu.

n Windows nu exist ierarhie de procese. Un proces printe dezmotenete procesul fiu prin pasarea handler-ului cu care controleaz procesul fiu, unui alt proces.

Descrieti starea procesului : Starea procesului (n execu ie, suspendat, etc.)

Cum se realizeaza implementarea unui proces.

Fiecare dispozitiv de I/O are asociat un vector de ntreruperi care conine adresele procedurilor serviciului de ntreruperi. S presupunem ca procesul1 se afl n execuie i are loc o ntrerupere hardware.

1. La momentul ntreruperii PC, PSW(program status word) i regitrii afereni procesului sunt stocai n stiv.

2. Computerul trece apoi la adresa specificat de vectorul de ntrerupere (din acest moment prsim zona hardware)

3. La apelul procedurii, se salveaz regitrii procesului1 n tabela de procese (se realizeaz n cod de asamblare).

4. Se golete stiva i SP puncteaz ctre o stiv temporar utilizat de rutina procesului2(se realizeaz n cod de asamblare).

5. Se execut rutina procesului2 i se apeleaz o procedur scris n limbaj evoluat (C) care realizeaz task-ul pentru care procesul2 a fost lansat.

6. Planificatorul de procese preia controlul i decide care proces va fi lansat ulterior procesului2.

Ce reprezinta un thread?

Threadul este cea mai mica unitate de procesare care poate fi programata de un sistem de operare.

Fire de execuie-Thread

(a) Trei procese, fiecare deine propriul thread

(b) Un proces cu trei thread-uri

Ce inseamna multithreading?

Termenul multithread se poate referi la faptul ca mai multe threaduri exista in acelasi proces sau rularea in paralel a mai multor threaduri, echivalentul mai multor procese rulate pe acelasi calculator.

Modele:

Kernel-level threading threaduri create de utilizator care au corespondenta 1-1 cu entitati din kernel. Este cea mai simpla implementare de threaduri.

User-level threading (many to one)- toate threadurile de la nivel de aplicatie ajung intr-o singura entitate de la nivel kernel. Singurul dezavantaj major este ca nu poate beneficia de accelerare hardware pe procesoarele multithread sau pe sistemele multi-procesor.

Hybrid threading (many to many) un numar de threaduri de aplicatii ajung la un numar de entitati kernel (procesoare virtuale). Acesta este un compromis intre ULT si KLT. Este mai complex de implementat decat celelalte doua.

Descrieti modelul unui thread.

Proprieti deinute de toate thread-urile unui proces

Proprieti individuale ale fiecrui thread

Fiecare thread deine propria lui stiv

Justificati necesitatea threadurilor.

Principalul motiv pentru existenta threadurilor este ca in multe aplicatii au loc mai multe activitati in acelasi timp,care se pot bloca ocazional. Prin descompunerea unor astfel de aplicatii in secvente thread care ruleaza cvasi paralel, modelul de programare devine mai simplu.

Un alt motiv este ca sunt mai usor de creat si distrus decat procesele dat fiind faptul ca nu au resurse atasate.

Dati exemplu de utilizare a thread-urilor.

Un procesor word cu trei thread-uri:

A multithreaded Web server:

Trei modaliti de dezvoltare a unui server web:

Ce reprezinta o masina cu stari finite?

Masinile cu stari finite reprezinta o metoda foarte eficienta pentru modelarea circuitelor secventiale. Prin modelarea masinilor cu stari finite intr-un limbaj de descriere hardware si utilizarea programelor, programatorul se poate concentra asupra modelarii secventei dorite de operatii fara a-si pune problema in privinta implementarii circuitului (aceasta operatie este lasata programului).

Care sunt avantajele si dezavantajele thread-urilor?

Ele partajeaza acelasi spatiu de adrese si sunt mai rapide decat procesele (la task-switch, nu se mai schimba si spatial de adrese).

Marele dezavantaj este problema la sincronizare.

Fiecare thread are propriul context, format din registri CPU si stiva.

Descriei ULT, KLT.

Care sunt avantajele i dezavantajele ULT, KLT?

Caracterizai implementrile hibride ale thread-urilor.

Descrieti thread-urile pop-up.

Sunt threaduri create de sistem la aparitia unui mesaj, pentru a se ocupa de mesajul respectiv.