[so] intrebare despre examen

Bogdan Tudor bogdantudor at gmail.com
Sun Feb 11 01:15:41 EET 2007


On 2/10/07, Octavian Purdila <tavi at cs.pub.ro> wrote:
>
> On Friday 09 February 2007 09:33, Andrei Olaru wrote:
> > O intrebare scurta:
> >
> > Am gasit in notitele din primul curs de so ca examenul va fi cu cartile
> > deschise.
> >
> > In contextul in care poate unii dintre noi nu au laptop, deci nu au
> > posibilitatea de a avea la ei o cantitate mare de date (cum ar fi
> Tanenbaum
> > + slide-uri + laboratoare complete + teme etc), ce ar fi indicat sa
> aducem
> > cu noi?
> >
> > Sau, mai pe scurt, de ce nivel de profunzime si la ce mod vor fi puse
> > intrebarile? Vor referi ele chestiuni specifice de Linux / Windows, cod
> etc?
> >
>
>
> Nu aveti nevoie de laptop sau o cantitate mare de date. Trebuie doar sa
> _intelegeti_ conceptele despre care am vorbit la curs.
>
> 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.
>
> Asa ca, daca aveti nelamuriri in legatura cu unele concepte, le putem
> discuta pe lista.
>
> 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.
>
> Succes,
> tavi




Ce am gasit eu din anii trecuti:

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

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:
-procesul A: 130 ms CPU, 200ms IO, 20 ms CPU
-procesul B: 230 ms CPU, 100ms IO, 100 ms CPU
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

3) Implementati cu ajutorul primitivelor lock, unlock, sleep si wakeup
operatiile P si V ale unui semafor

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?

5) Demonstrati cu un exemplu necesitatea paginarii ierarhice, prin
compararea cu paginarea neierarhica in aceeasi situatie aleasa in exemplu

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)

7) Descrieti etapele de programare al unei placi de retea PCI bus-master,
pentru trimiterea unui pachet

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?

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?

10) Exemplificati o problema de consistenta pe sistemele multiprocesor. Ce
solutii exista?

Set II
1.  Descrieţi o aplicaţie / dispozitiv pentru care un sistem de operare
exo-kernel este cea mai potrivită alegere.

2.  Daţi exemple de resurse şi funcţii din API-ul Win32 sau POSIX, care a)
partajează sau b) copiază resursele între două procese.

3.  în următoarea secvenţă de cod, explicaţi dacă şi de ce apare o condiţie
de cursă. Daţi şi o soluţie.

static resursa_t resursa[MAX_RESURSE] ;
resursa_t* alocare_resursa()
{
for(i=0; i<MAX_RESURSE; i++)
if (resursa[i].este_libera)
{
resursa[i].este_libera=0; return Sresursa[i];
}
return NULL;
}

void eliberare_resursa(resursa_t *resursa)
{
resursa->este_libera=l;
}

4.  Fie două thread-uri, A şi B ale unui acelaşi proces, cu următoarea
comportare
•    thread-ul A: lms CPU, 2ms IO, YIELD, lms CPU, 2ms IO, YIELD, etc,.
•    thread-ul B: 3ms CPU, YIELD, 3ms CPU, YIELD, etc.
Daca tranziţia user<->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.

5.  Fie următorul program:

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

    Int a = 0;
    Int f(int a)
{
    Return a * a;
}

Void main()
{
    A = b + f(a);
}

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?

7.   Pot mai multe dispozitive partaja aceeaşi întrerupere? Cum?

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

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.

10. Exemplificaţi fenomenul de cache trashing la folosirea lock-urilor pe un
sistem multiprocesor cu două procesoare. Daţi o soluţie.


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.

Hope this helps,
Bogdan Tudor
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/so/attachments/20070211/bb2c58e0/attachment-0001.htm


More information about the so mailing list