On 2/10/07, <b class="gmail_sendername">Octavian Purdila</b> &lt;<a href="mailto:tavi@cs.pub.ro" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">tavi@cs.pub.ro</a>&gt; wrote:<div><span class="gmail_quote">
</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Friday 09 February 2007 09:33, Andrei Olaru wrote:<br>&gt; O intrebare scurta:<br>&gt;<br>&gt; Am gasit in notitele din primul curs de so ca examenul va fi cu cartile<br>&gt; deschise.<br>&gt;<br>&gt; In contextul in care poate unii dintre noi nu au laptop, deci nu au
<br>&gt; posibilitatea de a avea la ei o cantitate mare de date (cum ar fi Tanenbaum<br>&gt; + slide-uri + laboratoare complete + teme etc), ce ar fi indicat sa aducem<br>&gt; cu noi?<br>&gt;<br>&gt; Sau, mai pe scurt, de ce nivel de profunzime si la ce mod vor fi puse
<br>&gt; intrebarile? Vor referi ele chestiuni specifice de Linux / Windows, cod etc?<br>&gt;<br><br><br>Nu aveti nevoie de laptop sau o cantitate mare de date. Trebuie doar sa _intelegeti_ conceptele despre care am vorbit la curs.
<br><br>Intrebarile vor testa daca ati inteles si puteti aplica aceste concepte, nu capacitatea voastra de a memora sau a cauta in curs/bibliografie subiectele si a le copia de acolo.<br><br>Asa ca, daca aveti nelamuriri in legatura cu unele concepte, le putem discuta pe lista.
<br><br>Ar fi bine sa va uitati si pe subiectele din anii trecuti. Din pacate, datorita unor probleme hardware, eu le-am pierdut, asa ca daca cineva le mai are, ar fi bine sa le trimita pe lista.<br><br>Succes,<br>tavi</blockquote>
<div><br>&nbsp;</div><br></div>Ce am gasit eu din anii trecuti:<br><br>Set I<br>1) Specificati din ce
categorie (s.o. monolitice, micdro-kernel, exo-kernel, real-time) fac
parte fiecare din s.o.: Microsoft Windows NT/2000, Linux, QNX, RTLinux,
AIX VMS, Ameoba, Mac OS X
<br><br>2) Fie un s.o. de tip time-sharing cu o cuanta maxima de
executie de 100ms. La un moment dat de timp sunt rulate simultan doua
procese, A si B. Operatiile executate de cele doua procese sunt, in
aceasta ordine:<br>
-procesul A: 130 ms CPU, 200ms IO, 20 ms CPU<br>-procesul B: 230 ms CPU, 100ms IO, 100 ms CPU<br>Decrieti
starile (Ready, Running, Waiting) prin care trec cele doua procese in
raport cu scala absoluta de timp, de la pornirea pana la terminarea
proceselor
<br><br>3) Implementati cu ajutorul primitivelor lock, unlock, sleep si wakeup operatiile P si V ale unui semafor<br><br>4)
Pentru o planificare round-robin clasica, cu o cuanta de timp de 100ms,
si un sistem in care deja lucreaza 100 de procese CPU intensive, care
este timpul de raspuns pentru un nou proces?
<br><br>5) Demonstrati cu un exemplu necesitatea paginarii ierarhice,
prin compararea cu paginarea neierarhica in aceeasi situatie aleasa in
exemplu<br><br>6) Daca timpul copierii unei pagini este Xms, ignorand
timpul necesar altor operatii, care este timpul necesar apelului fork()
pe un proces cu un spatiu de adresa de 100M? (pe un sistem UNIX modern,
cu dimensiunea unei pagini de 4K)
<br><br>7) Descrieti etapele de programare al unei placi de retea PCI bus-master, pentru trimiterea unui pachet<br><br>8)
Ce sisteme de caching (relativ la sistemele de fisiere) intervin, si in
ce conditii, la folosirea comenzii ls pe un sistem de tip UNIX?
<br><br>9) Cate blocuri de date si metadate sunt ocupate pe un sistem
de fisiere MINIX in care sunt prezente in directorul radacina 100 de
fisiere a cate 1K, daca dimensiunea unui bloc este 4K?<br><br>10) Exemplificati o problema de consistenta pe sistemele multiprocesor. Ce solutii exista?
<br><br>Set II<br>1.&nbsp; Descrieţi o aplicaţie / dispozitiv pentru care un sistem de operare exo-kernel este cea mai potrivită alegere.<br><br>2.&nbsp;
Daţi exemple de resurse şi funcţii din API-ul Win32 sau POSIX, care a)
partajează sau b) copiază resursele între două procese.
<br><br>3.&nbsp; în următoarea secvenţă de cod, explicaţi dacă şi de ce apare o condiţie de cursă. Daţi şi o soluţie.<br><br>static resursa_t resursa[MAX_RESURSE] ;<br>resursa_t* alocare_resursa()<br>{<br>for(i=0; i&lt;MAX_RESURSE; i++)
<br>if (resursa[i].este_libera) <br>{<br>resursa[i].este_libera=0; return Sresursa[i]; <br>}<br>return NULL; <br>} <br><br>void eliberare_resursa(resursa_t *resursa)<br>{<br>resursa-&gt;este_libera=l;<br>}<br><br>4.&nbsp; Fie două thread-uri, A şi B ale unui acelaşi proces, cu următoarea comportare
<br>•&nbsp;&nbsp;&nbsp; thread-ul A: lms CPU, 2ms IO, YIELD, lms CPU, 2ms IO, YIELD, etc,.<br>•&nbsp;&nbsp;&nbsp; thread-ul B: 3ms CPU, YIELD, 3ms CPU, YIELD, etc.<br>Daca
tranziţia user&lt;-&gt;kernel durează X ms, iar celelalte operaţii
(pornirea IO, planificarea thrcad-urilor în uscr sau kernel) sunt
neglijabile, pentru ce valori ale lui X este indicată folosirea unui
planificator de thread-uri în kernel (faţă de folosirea unui
planificator în uscrspacc)? Justificaţi. Se presupune că nu se folosesc
facilităţi speciale de comunicare între uscr şi kernel gen upcall-uri.
<br><br>5.&nbsp; Fie următorul program:<br><br>Câte intrări şi ce simboluri
o să conţină tabela de relocare a obiectului rezultat din compilarea
programului (relocările necesare la link-cditare).<br><br>&nbsp;&nbsp;&nbsp; Int a = 0;<br>&nbsp;&nbsp;&nbsp; Int f(int a)
<br>{<br>&nbsp;&nbsp;&nbsp; Return a * a;<br>}<br><br>Void main()<br>{<br>&nbsp;&nbsp;&nbsp; A = b + f(a);<br>}<br><br>6.
Dacă timpul de încărcare al unei pagini este de X ms, care este timpul
de încărcare la execuţie a unui program de 100M pe un sistem Windows
NT?
<br><br>7.&nbsp;&nbsp; Pot mai multe dispozitive partaja aceeaşi întrerupere? Cum?<br><br>8.&nbsp; Creaţi o tabelă de alocare a fişierelor (FAT) pentru două fişiere, a căror date să fie întreţesute din 4 în 4 blocuri.<br><br>9.
Fie un sistem de fişiere de tip indexat, în care dimensiunea unui bloc
este de 4K, iar în inode există 10 intrări de blocuri date directe, 1
intrare pentru blocuri de date indirectate şi 1 intrare pentru blocuri
de date dublu indirectate. Câte blocuri de date şi mctadatc sunt
necesare pentru un fişier de 100M? Pointerii către blocuri sunt pe 32
de biţi.
<br><br>10. Exemplificaţi fenomenul de cache trashing la folosirea
lock-urilor pe un sistem multiprocesor cu două procesoare. Daţi o
soluţie.<br><br><br>S-ar putea ca unele dintre subiecte sa atinga
materie care nu ati facut-o inca (eu recunosc aici materie discutata in anul nostru la
PSO, pe semestrul II). In general ar trebui sa recunoasteti usor aceste
subiecte.
<br><br>Hope this helps,<br>Bogdan Tudor