Documente Academic
Documente Profesional
Documente Cultură
R: Crearea unui proces, deoarece la crearea unui proces trebuie creat un nou spatiu virtual
R: Se creeaza o tabela de pagini noua, spre deosebire de cazul unul thread nou.
R: Cu fork().
5. Ce se intampla la fork?
R: Paginile se vor marca ca read-only, iar in momentul in care vreunul din procese (parintele
R: La crearea unui proces nou, se creeaza un nou page table care se stocheaza in memoria
fizica.
R: Exista un registru, PTBR (page table based register) care tine de fiecare proces in parte,
iar la orice schimbare de spatiu de adresa trebuie sa duca la actualizarea acestui registru.
R: Pentru ca, dpdv al sist de operare, thread-ul este cel planificat pe procesor. Noi putem
face context switch-uri intre thread-uri fie ale aceluiasi proces, fie din procese diferite. Iar in
cazul in care thread-urile sunt ale aceluiasi proces, context switch-ul va fi mai rapid
acestui overhead?
R: Noi avem un TLB Cache care ne ajuta sa nu accesam de 2 ori memoria RAM pentru a
afla adresa din memoria fizica si va trebui sa dam flush acestui TLB in momentul in care se
10. Care sunt starile in care se poate gasi thread-ul in sistemul de calcul?
11. Cate thred-uri se pot gasi in starile principale: Ready, Running, Blocked?
R: Running - maxim nr de procesoare pe care le avem pe sist de calcul, iar in new si ready
R: Kernelul va alege primul thread care se afla intr-o coada de prioritati. Care este trigger-ul
- involuntare
R: De ex. cand avem nevoie de date de la hard disk si apelam read, iar pana cand sunt
hard disk, suntem in starea blocked. De ce exista aceasta asteptare? Pentru ca viteza hard
disk ului este mai mica fata de cat poate duce procesorul.
R: Pentru ca in momentul in care stim ca trebuie sa asteptam dupa ceva, putem permite altui
R: Context switch-urile atunci cand trebuie sa schimbam foarte multe procese intre ele.
R: Pentru ca avem un buffer in user space, dar si in kernel space, iar apelul de write s-ar
bloca doar cand s-ar umple acele buffere, ceea ce nu prea se intampla.
R: Limita default este 1024, dar poate fi modificata cu drepturi de root. De ce as face asta?
In cazul unui server care ar avea nevoie de foarte multe conexiuni, ar trebui sa avem fd uri
R: Un vector de pointeri la un open channel structure, care contine un cursor, pointeri catre
22. La operatii de open, read, write treci prin kernel, lucrezi cu file system, drivere. De ce
operatia de formatare nu trece prin componenta de file system din cadrul sistemului
de operare?
R: Operatia de formatare este initializarea unui nou file system. Cand punem un file system
se creeaza acele meta date care transforma data blockurile intr-un sistem ierarhic de
23. Care sunt avantajele pt care as folosi dynamic linking cu bibl dinamice si static linking
cu bibl statice?
R: Cele statice sunt linkate la compilare, deci avem portabilitate pentru ca nu avem
dependente pentru un alt sistem => executabile mai mari si un timp mai mic de start
Bibliotecile dinamice sunt linkate la load time si avem executabile mai mici, iar principalul
avantaj este conceptul de shared memory prin care ele sunt incarcate o singura data in
memoria fizica.
24. Pot sa am shared memory intre 2 procese care sunt pornite din executabile statice?
R:
25. Ce se intampla daca 2 procese sunt create din acelasi executabil static?
R: Putem avea un sistem de fisiere epntru fiecare device virtual, pentru un device fizic,
R: Tine minte metadate. Cum este sistemul de fisire care are spatiu pt blocuri, indecsii
R: Continutul: in inod de tip director o sa tipa minte dentry-uri, link-uri catre alte dentry uri.
R: Operatia ls simplu se uita doar la dentry-uri, doar parcurge ierarhia si ne zice numele, ls-l
analizeaza si metadatele.
31. In afara de buffer cache, care este folosit pentru operatii cu discuri, ce alte cache uri
bufferele din libc la operatii de genul fread fwrite (eu citesc si scriu intr-un buffer si las
procesoarele sa faca si alta treaba atata timp cat lucrul cu memoria care este mai incet are
loc.
R: La un apel asincron, ii spunem procesului “anunta ne cand ai informatia pentru noi” sau ii
dam un handle pe care sa-l apeleze atunci candare informatia si e rulat cumva in fundal.
R: In momentul in care se face un context switch cu un thread din alt proces deoarece e alt
35. Ce se gaseste intr-o intrare in tabela de pagini (intr-un page table entry)?
paging).
36. In ce moment accesaarea unei pagini genereaza page fault, dar nu genereaza
segmentation fault?
R: Atunci cand avem procesul de demand paging activat, se rezerva pagina, nu se aloca, iar
data viitoare cand o sa accesam ceva din memoria aia , o sa se genereze un page fault, el o
38. De ce este util sa avem o separatie a spatiului de adrese intre user mode si kernel
mode?
R: Pentru securitate
R: Trecerea dintre user si kernel mode. Trebuie sa ii cerem voie sist de operare, el vede
daca avem permisiuni pt aia printr-un apel de sistem, astfel el vb cu hardware ul.
40. Diferenta fundamentala intre user mode si kernel mode? dpdv al procesorului
R: Procesorul are 2 moduri: neprivilegiat si privilegiat. Apelul de sistem prin acest trap
ofera libertate, pt ca poate produce un overhead indus si libc nu ofera toata interfata pe care
42. Cum se cheama interfata pe care o ofera sist de operare statuturilor superioare?
R: Un vector care contine structuri, cu o referinta catre frame uri si alte flag-uri si metode.
R: valide (= rezervata, dar inca nu are un frame backed pe memoria ram) si nevalide
fault care rezolva un frame din memoria ram sau atunci cand …
R: un sistem prin care paginile fizice ti se ofera lazy, adica le primesti atunci cand ai nev sa
R: Se rezerva 1 Mega / 4096 bytes pagini. 4096 bytes e dimensiunea default a unei pagini in
linux/windows.
49. Putem avea pagini mai mari de 4096 bytes? Care e avantajul sau dezavantajul?
R: Putem avea, avantajul e ca nu trebuie sa alocam asa des pagini fizice, daca scriem mult
si lucram cu date mari. Cu cat pagina e mai mica, cu atat granularitatea e mai mare, adica
R: Un feature de securitate al sistemlui prin care loaderul pune la adrese diferite segmente
ale executabilului. Pentru a spori securitate, atacatorul nu stie exact in ce zona se afla zona
R2: Din perspectiva securitatii, se randomizeaza adresele la fiecare rulare unde sunt
incarcate zonele precum heap, stiva si daca se compileaza cu suport de pipe si zonele din
R: Sa obtine un memory leak de la care apoi sa calculezi diferite adrese din executabil.
R: Stack canary, mecanismm prin care se pune un canar pe stiva, iar in momentul in care
poti citi, scrie, executa) si in momentul in care treci de pagina ta iti da abort.
R: Un cod pe care poti sa-l scrii intr-o zona de date si poti sa l rulezi punandu-ti instruction
R: Sunt tinute in tabela de pagini, in structura respectiva pe langa adresa spre pagina fizica.
R: Hard link-ul este un dentry care pointeaza spre un inode si creste counterul de referinta al
inode ului, pe cand soft link ul este un dentry care pointeaza spre un inode, iar inode ul asta
R: Un director tine dentry uri in zona lui de date, si un fisier tine date efectiv.
58. Daca fac de 2 ori copy a.txt, b.txt care dintre copii va fi mai rapida sau care e
R: Al doilea e mai rapid, deoarece exista caching ul: la prima operatie se pune in cache, iar
R: procfs, tmpfs
R: Prin apelarea unei functii blocante, read / write sau prin scratched yield (cedarea
accesului)
64. De ce tranzitia dintre 2thread uri e mai rapida decat cea dintre procese?
66. Diferenta dintre TCB (thread control block) si PCB (process control block)?
67. Ce s-ar intampla daca pe un sistem threading nu avem niciun fel de sincronizare?
R: Am putea sa avem data races, putem scrie ceva in timp ce altul citeste. S-ar putea ca
unul din thread uri sa o ia pe alt path in urma unei verificari de conditii. Poate sa rezulte in
R: Un thread poate scrie o adresa invalida in pointer, iar alt pointer sa dereferentieze.
69. De ce shell code urile nu sunt asa usor de folosit in sistemele moderne?
R: Deoarece nu poti avea si drept de write si de execute. Mai intai iti trb drept de write,apoi
71. Ce duce la limitarea crearii unor thread uri pentru un proces dat?
R: La crearea fiecarui thread se rezerva memorie pentru stiva. Spatiul virtual de adrese
76. Este mai avantajos sa ai un apel de sistem sau de bibl dpdv al timpului?
R: Apelul de bibl face tot apel la sistem, asa ca prin apel la sistem scapi de overhead.
77. Diferenta dintre un apel de bibl si un apel de sistem? un apel de bibl poate face mai
R:
R: Un semna care vine de la device uri catre so si trebuie tratat printr-un handler.
R:
R:
R: In momentul in care ma duc in tabela de pagini, dar ea nu exista in tabela, atunci ma duc
R:
R:
R:
R: Fork-ul face un proces nou. Exec-ul inlocuieste imaginea procesului, tot ce avea procesul
in spatiul de adrese acum se inlocuieste cu altceva, are alt continut. Exec-ul ar trebui sa ia
executabilul si sa l puna in memorie si sa inlocuiasca in memorie, in spatiul fizic, toate
92. Faci strcpy sursa dest, in ce moment strcpy va genera tranzitie in kernel mode?
R: Poate memoria aceea este on demand, astfel accesarea ei va genera page fault si se
93. Cum este compartimentata o partitie dupa o formatare cu un file system? Inainte era
ro, acum..
R:
R: Iti mai da un fd catre un fisier pe care deja l-ai deschis. Daca vrei sa-l editezi pe unul
dintre ei intr-un loc, dar vrei sa retii vechea valoare. Duplici, si el devine un pointer catre
aceeasi chestie. Daca pe primul il pierzi, al doilea retine valoarea lui pentru restaurare. Altfel,
95. Structurile sunt de 2 tipuri pentru fd: socket si fisier. Pipe-ul in ce zona intra?
intre 2 procese de pe sisteme diferite. Socketul unix are 2 buffere, de transmisie si receptie.
Pipe ul are un singur buffer un kernel, pentru ca un capat este folosit pentru citire si unul pt
asteptam sa se elibereze.
Putem sa primim mai multe date pe retea. Dar ca dezavantaj, este un overhead de memorie.
99. Tabelele de pagini ocupa destul de mult spatiu de memorie. Cum se eficientizeaza
R: Ea este necesara pentru translatarea din adrese virtuala in adrese fizice. MMU-ul este
memorie fizica doar atunci cand se realizeaza accesele de scriere. Exec-ul poate sa fie
103. Cand se face cel mai probabil context switch? Cand fac lock sau unlock pe un
mutex?
R: Cand fac lock pe un mutex, e posibil sa ma blochez si proces ul intra in starea blocked.
104. Cand se face cel mai probabil context switch? Cand fac lock sau unlock pe un
spinlock?
R: Spinlockul este folosit cand vb de granularitate mica, nu e folosit cand thread urile se
105. Cum e mai bine sa fie cuanta, mai mica sau mai mare?
R: Depinde de ce ne dorim. Cu cuanta de timp mai mare, avem productivitate mai mare ,
procesele pot sa execute mai multe actiuni, si pt cuanta de timp mai mica sa primeasca
R: cand buffer ul este plin. Datorita vitezei diferite de lucru si pt asta e nev de buffering pt a
pune rezultatele.
dezavantajat.
108. Cand se foloseste apel de sistem daca folosesc fwrite a i informatia sa ajunga in
kernel space?
R: bufferul este plin, se face explicit blush, sau in cazul stdout la newline
R: datele au fost trimise intr un buffer in cache urmand ca ele sa fie sincronizate cu datele de
pe disk.
111. Cand facem loading, care este apelul care genereaza loading?
R: exec-ul
112. Care este avantajul folosirii thread-urilor user-level, numite si green threads?
R: Thread-urile user-level nu sunt cunoscute de so si le poti forta sa functioneze pe un
singur procesor si astfel nu creeaza overhead cand exista context switch ul. Nu se face apel
113. In mod similar, daca ti-ai face un alocator de memorie in user space, aloci o
apel de sistem?
R: Depinde. Malloc-ul este pe partea de heap si se rezerva zone in acea zona de heap.
114. Care sunt zonele unice/ per thread in spatiu virtual de adrese al unui proces?
R: stiva si tls-ul.
R: Acces invalid la memorie, nu a fost rezervata pagina aceea. Cand accesez ceva la care
R: Sistemul de operare este tratatorul, handler ul. Problema este anuntata de MMU.
119. De ce este mai rapida schimbarea de context intre thread-uri ale aceluiasi
R: E vorba de tlb, sunt in acelasi spatiu virtual de adrese si deja are are informatia pe care
treb sa o ruleze.
sau nu. La fork, procesul parinte prin fork duplica spatiul virtual de adrese, dar nu se face
R: Il elimina din tabela de fd, taie legatura pana la acel open channel. Open channel ul se
dezaloca doar daca nu mai are alta referinta. Pentru a avea 2 fd la acel open channel se
foloseste dup, sau prin crearea unui proces nou daca nu se specifica explicit close on exec.
122. Dau un stat pe un director. Cand creste dimensiunea blocurilor de date ale unui
director?
R: Poate fi si malloc.
R: mmap.
R: malloc ul poate actiona in cadrul unui mmap. mmap ul doar rezerva o pagina, si mallocul
126. Care ar fi avantajul unei struct de so de tipul kernel monolitic sau microkernel?
R: Monolitic are partea de kernel mai vasta, e mai rapid deoarece toata informatia este pusa
acolo. DAca s-ar face in user space, trebuie conexiune user - kernel si toata tranzitia.
R: Intrarea ..
R: semafoarele, barierele. Diferenta dintre ele este ca bariera asteapta mai multe thread-uris
R: Procesul parinte moare inainte ca procesul copil sa se termine. Cand procesul parinte
moare, copilul e adoptat de init. Va ramane in viata pana isi termina executia.
R: Da, ar trebui ca procesul respectiv sa devina zombie si intre timp sa ramana orfan.
136. Care sunt cele 2 moduri in care pot fi procesele? Cum le trateaza planificatorul?
R: Da, ar trb.
R: Poate sa fie apelata din orice context de mai multe thread-uri, de ex. strcpy.
R: Cand se face fork. Dupa fork, paginile sunt read only, iar la write se genereaza un page
R: Daca nu mai am loc in acea partitie, unele procese sunt trecute pe hard disk.
R:
R: getpid
R: Cele dinamice ocupa mai putin spatiu, cele statice au avantaj la debug ??
152. Cand dam stat pe un fisier avem 2 campuri: size si blocuri ocupate. Sunt legate
R:
R: Modul priivlegiat are legatura cu operatiile privilegaite din kernel space. Se folosesc 2 din
motive de securitate.
R: Mod privilegiat: face context switch din user space in kernel space
R: perioada de timp care apare in anumite situatii de sincornizare in mom in care ai nev de
R: Vrei sa aloci o zona de memorie mai mare decat este deja paginata. Atunci este alocata o
noua pagina .
R: in momentul in care alt proces cu prioritate mai mare intra in starea ready sau i s a
R: Prin canale de comunicare, pipe uri. Nu putem folosi mutex pt a sincroniza procese.
R: socketi
R: prin socketi
R:
R: contine o cale. la stat sau ls-l, size ul unui link este dat de continutul lui, exact acel text
174.