Sunteți pe pagina 1din 21

Simulare SO

1. Ce durează mai mult, crearea unui proces sau a unui thread?

R: Crearea unui proces, deoarece la crearea unui proces trebuie creat un nou spatiu virtual

de adrese, o noua tabela de fd-uri, pe cand la un thread doar o noua stiva.

2. Ce inseamna cand cream un proces nou, un spatiu de adrese nou?

R: Se creeaza o tabela de pagini noua, spre deosebire de cazul unul thread nou.

3. De ce in cazul unul thread nu se face o tabela de pagini noua?

R: Thread-urile aceluiasi proces shareuiesc spatiul de adrese virtuale ale procesului.

4. In conjunctie cu ce apel folosim copy-on-write?

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

sau copilul) va vrea sa faca o scriere, atunci se va face o noua pagina.

6. Cand creezi foarte multe procese, sistemul va ingheta. De ce?

R: La crearea unui proces nou, se creeaza un nou page table care se stocheaza in memoria

fizica.

7. Cum ajung la page table-ul aflat 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.

8. De ce este mai corecta afirmatia “planificam thread-uri”?

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

deoarece nu trebuie sa schimbam spatiul de adrese de pe procesor.


9. De ce schimbarea spatiului de adrese este mai costisitoare? Ce este in spatele

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

schimba spatiul de adrese.

10. Care sunt starile in care se poate gasi thread-ul in sistemul de calcul?

R: New, Ready, Running, Blocked, Terminated.

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

oricate thread-uri ne permite memoria.

12. Ce cauzeaza tranzitia din Ready in Running?

R: Kernelul va alege primul thread care se afla intr-o coada de prioritati. Care este trigger-ul

pentru schimbarea asta? Sunt 5 situatii:

- voluntare: kill, sau la apelarea unei operatii blocante

- involuntare

13. Ce este o operatie blocanta?

R: De ex. cand avem nevoie de date de la hard disk si apelam read, iar pana cand sunt

procesate datele de pe hard disk ca sa ne ajunga la procesor, trebuie sa asteptam dupa

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.

14. De ce este util sa facem blocare?

R: Pentru ca in momentul in care stim ca trebuie sa asteptam dupa ceva, putem permite altui

thread sa ajunga pe procesor pentru un debit mai mare.

15. Cum ai masura throughput (debit)?

R: Cate operatii putem executa pe procesor, neconsiderand overhead-ul .


16. Ce afecteaza negativ throughput ul?

R: Context switch-urile atunci cand trebuie sa schimbam foarte multe procese intre ele.

17. De ce operatiile de scriere in sistemul de fisiere nu cauzeaza blocaj?

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.

18. Tabela de fd uri cat este de mare?

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

pentru fiecare conexiune.

19. Ce contine tabela de la fd?

R: Un vector de pointeri la un open channel structure, care contine un cursor, pointeri catre

un file control block sau inod si permisiuni.

20. La ce se refera ideea de hard link si ideea de symbolic link?

R: Un sym link este un inod a carui continut pointeaza catre o cale.

21. Ce informatii gasesc in inod? Exemple

R: Dimensiunea, permisiuni, time stamp, pointeri catre data blocks

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

directoare si fisiere. Pot exista si virtual si psyhical file systems.

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: Zonele read-only (text si rodata) vor fi comune.

26. Pe un sistem de operare, cate file system uri poti sa ai?

R: Putem avea un sistem de fisiere epntru fiecare device virtual, pentru un device fizic,

pentru fiecare partitie de pe disk.

27. Ce inseamna un sistem de fisiere virtual? (ex. procfs, sysfs)

R: Ceva care nu e backed de un device fizic, ci de memorie.

28. Care este rolul super block-ului?

R: Tine minte metadate. Cum este sistemul de fisire care are spatiu pt blocuri, indecsii

blocurilor si un spatiu care …

29. Cu ce difera un inod de tip director fata de un inod de tip fisier?

R: Continutul: in inod de tip director o sa tipa minte dentry-uri, link-uri catre alte dentry uri.

30. De ce operatia ls-l este mai costitoare decat operatia ls simpla?

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

mai sunt in sistemul de operare folosite pentru eficientizare?


R: TLB-ul care e folosit la tabela de pagini; bufferele folosite pentru transferul pe retea,

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.

32. Ce este o operatia asincrona?

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.

33. Care ar fi avantajul folosirii operatiile asincrone vs thread-uri?

R: Diferenta in performanta la multe astfel de conexiuni. La multe astfel de operatii

asincrone, ar putea sa incetineasca si sa duca la overlap la aceste handle uri. Dezavantajul

operatiilor asincrone e dificutatea programarii, nu e asa usor de urmarit codul pentru ca nu

poti sa stii in ce stadiu este fiecare combinatie.

34. In ce moment se face flush la TLB?

R: In momentul in care se face un context switch cu un thread din alt proces deoarece e alt

spatiu virtual de adrese care ne intereseaza.

35. Ce se gaseste intr-o intrare in tabela de pagini (intr-un page table entry)?

R: O adresa in memoria fizica, unele flag-uri (( de copy on write, rezervat - de la demand

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

sa vada ca e rezervata si o sa o aloce efectiv.

Un alt caz: copy-on-write.

37. Cat de mult spatiu ocupa o tabela de pagini?


R: Depinde

38. De ce este util sa avem o separatie a spatiului de adrese intre user mode si kernel

mode?

R: Pentru securitate

39. Ce cauzează overhead-ul apelului de sistem?

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

modifica privilege mode.

41. Care este utilitatea bibl standard C si care este dezavantajul?

R: Se leaga direct de utilitatea bibl dinamice, deoarece ne linkam dinamic cu ea si ne ofera o

interfata prin care sa interactionam cu hardware ul pt fiecare proces. Dezavantaj: nu ne

ofera libertate, pt ca poate produce un overhead indus si libc nu ofera toata interfata pe care

o ofera sist de operare,

42. Cum se cheama interfata pe care o ofera sist de operare statuturilor superioare?

R: Nivelul de separatie dintre user si kernel: interfata de apel de sistem.

43. Cate tabele de pagini sunt intr-un sistem de operare?

R: Una pentru fiecare proces.

44. Ce contine o tabela de pagini?

R: Un vector care contine structuri, cu o referinta catre frame uri si alte flag-uri si metode.

45. Ce fel de pagini putem avea in aceste tabele?

R: valide (= rezervata, dar inca nu are un frame backed pe memoria ram) si nevalide

46. Ce inseamna ca un page fault nu genereaza un seg fault?


R: 2 situatii: cand ai memoria rezervata si accesezi memoria respectiva, ti se da un page

fault care rezolva un frame din memoria ram sau atunci cand …

47. Ce inseamna on demand paging?

R: un sistem prin care paginile fizice ti se ofera lazy, adica le primesti atunci cand ai nev sa

scrii sau sa citesti din ele.

48. Ce se intampla in spate cand faci mmap(1Mega)?

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

nu ocupa memorie degeaba.

50. Ce inseamna ASLR si unde se foloseste?

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

de text / date ca sa poata suprascrie zona respectiva.

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

exec precum bss, data.

51. Cum faci bypass la aslr?

R: Sa obtine un memory leak de la care apoi sa calculezi diferite adrese din executabil.

52. Ce alte mecanisme de securitate exista?

R: Stack canary, mecanismm prin care se pune un canar pe stiva, iar in momentul in care

faci buffer overflow iti da abordt.


Electric fans prin care iti pui inainte si dupa pagina ta o pagina cu permisiuni 0 (nu

poti citi, scrie, executa) si in momentul in care treci de pagina ta iti da abort.

53. Ce este un shell code?

R: Un cod pe care poti sa-l scrii intr-o zona de date si poti sa l rulezi punandu-ti instruction

pointer ul acolo si sa ruleze din zona de date daca ai drepturi de executie.

54. Ce zone ale unui executabil cunosti? Dinamice si statice?

R: statice: text, data, rodata, bss

dinamice: stack si heap care se fac la load time

55. Unde sunt permisiunile unei zone de memorie?

R: Sunt tinute in tabela de pagini, in structura respectiva pe langa adresa spre pagina fizica.

Mai sunt tinute si in virtual adress space.

56. Diferenta dintre hard link si soft link?

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

tine o referinta spre celalalt fisier din file system.

57. Care este diferenta intre un director si un fisier?

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

diferenta dintre ele?

R: Al doilea e mai rapid, deoarece exista caching ul: la prima operatie se pune in cache, iar

la a 2a operatie se ia direct din cache, nu se mai uita in memoria fizica.

59. Cu ce este ocupata cel mai mult memoria fizica?

R: Cache, memoria sistemului de operare, memoria procesului

60. Ce este un sistem de fisiere virtual (vfs)?


R: Un sistem de fisiere care nu are suport fizic, este tinut in memoria RAM.

61. Tipuri de sisteme de fisiere virtuale ?

R: procfs, tmpfs

62. Cand se realizeaza tranzitia Running Blocked a unui thread?

R: Prin apelarea unei functii blocante, read / write sau prin scratched yield (cedarea

accesului)

63. Cand se realizeaza tranzitia Ready Blocked a unui thread?

R: Nu este posibil, trebuie sa treaca prin running.

64. De ce tranzitia dintre 2thread uri e mai rapida decat cea dintre procese?

R: Nu e overhead ul de la schimbare de context, virtual adress space l ramane la fel.

65. Ce inseamna thread local storage?

R: Un spatiu alocat pe stiva thread ului specific fiecarui thread.

66. Diferenta dintre TCB (thread control block) si PCB (process control block)?

R: In PCB se gasesc tabela de pagini, tabela de fd, pe cand in tcb nu se gasesc.

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

nedeterminism sau poate sa rezulte o informatie falsa.

68. Poate sa rezulte seg fault daca nu folosim sincronizare?

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

sa schimbi drepturile ca sa poti sa executi.


70. Ce limiteaza numarul de procese pe care le poti crea intr un sistem?

R: Memoria. Fork-ul va da eroare.

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

disponibil, nu o sa ai memorie virtuala.

72. Cate buffere are un socket?

73. Ce este un socket?

R: Te ajuta să faci comunicarea intre procese.

74. Cand se blocheaza apelul de read pe un socket?

R: Daca nu are date, nu se blocheaza in asteptarea lor.

75. Mecanisme de inter socket communication exista?

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

multe apeluri de sist?

R:

78. Ce inseamna o intrerupere?

R: Un semna care vine de la device uri catre so si trebuie tratat printr-un handler.

79. O intrerupere uzuala la procese?

R:

80. Cum se stabileste cuanta de timp pentru un proces?

R:

81. Se poate modifica cuanta in timpul executiei unui proces?


R: Se poate, in caz ca procesul face anumite actiuni si so detecteaza acest lucru.

82. Cum trece un proces din running in terminated?

R: cand isi termina toate lucrurile de facut.

83. Cum trece un proces din running in blocked?

84. Ce inseamna un page fault?

R: In momentul in care ma duc in tabela de pagini, dar ea nu exista in tabela, atunci ma duc

in memorie si aloc memoria respectiva.

85. Un page fault poate genera un seg fault?

R:

86. Ce se intamplla cand faci *NULL = 5?

R: Este seg fault.

87. Ce informatii sunt retinute in stiva programului?

R: Se pun parametrii apelurilor de functii, variabilele locale, adresele de return de la functii.

88. Ce este un apel de sistem?

R:

89. Cand ai vrea sa faci un apel de sistem?

R:

90. Ce inseamna un spinlock si care e diferenta fata de un mutex?

R: Spinlock-ul il folosesti pt o bucata mica de cod si faci un busy waiting.

91. Ce este mai rapid: fork sau exec?

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

informatiile vechiului proces. Il pune in memorie la cerere, cand are nevoie.

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

ruleaza page fault handler ul din kernel space.

93. Cum este compartimentata o partitie dupa o formatare cu un file system? Inainte era

ro, acum..

R:

94. Care este utilitatea apelului dup?

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,

daca tu redirectezi, ala se inchide si dispare referinta la structura respectiva.

95. Structurile sunt de 2 tipuri pentru fd: socket si fisier. Pipe-ul in ce zona intra?

R: Se aseamana mai mult cu un socket. Socket-ul de retea poate fi folosit la comunicarea

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

scriere. Pipe-ul este unidirectional, socket-ul este bidirectional.

96. In ce moment un apel de write se blocheaza?

R: In cazul tcp, fereastra de congestie nu ne permite sa trimitem pachetele si trb sa

asteptam sa se elibereze.

97. In ce moment un apel de read se blocheaza?

R: daca nu exista date in buffer.

98. Care este avantajul in a folosi buffere mari sau mici?


R: munca stivei de networking este proportionala cu nr de bagaje pe care le trimitem.

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

spatiul ocupat de tabelele de pagini?

R: Putem folosi o tabela de pagini ierarhica.

100. Care este sursa primara de page fault-uri?

R: Memory managment unit.

101. Cand este folosita Memory managment unit?

R: Ea este necesara pentru translatarea din adrese virtuala in adrese fizice. MMU-ul este

folosit tot timpul, page fault handler ul este la niv so.

102. CAnd se creeaza un proces folosim fork. De ce este avantajos si neavantajos sa

avem separatie fork exec sau sa le avem impreuna?

R: La fork se duplica spatiul virtual de adrese, si daca folosim copy-on-write o sa alocam si

memorie fizica doar atunci cand se realizeaza accesele de scriere. Exec-ul poate sa fie

separat daca e nevoie sa invocam loaderul si sa incarcam imagini de executabil.

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

blocheaza. Ele nu cauzeaza direct context switch.

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

fiecare o parte de executie.

106. Producator-consumat. Cand se blocheaza un producator? De ce este utila in

interactiunea cu hard si cu driverele?

R: cand buffer ul este plin. Datorita vitezei diferite de lucru si pt asta e nev de buffering pt a

pune rezultatele.

107. De ce este problema folosirea intreruperilor in momentul in care folosim

dispozitive de retea ft rapide (placi de retea de 40 GB) ?

R: Intreruperile au un overhead mai mare de tratat deci la un flux mare de date va fi

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

109. Ce imi garanteaza intoarcerea apelului write?

R: datele au fost trimise intr un buffer in cache urmand ca ele sa fie sincronizate cu datele de

pe disk.

110. De ce apelul de sist write nu este blocant?

R: Write ul se face cel mai des in buffer cache.

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

de sistem ca sa se ajunga la schedulerul care sta in kernel space.

113. In mod similar, daca ti-ai face un alocator de memorie in user space, aloci o

bucata de memorie mare de memorie la inceput. Apelul de bibl malloc genereaza

apel de sistem?

R: Depinde. Malloc-ul este pe partea de heap si se rezerva zone in acea zona de heap.

Daca dau malloc (300) si pagina e goala, nu aloca o noua pagina.

114. Care sunt zonele unice/ per thread in spatiu virtual de adrese al unui proces?

R: stiva si tls-ul.

115. Se poate ca un thread sa acceseze stiva altul thread?

R: Ele se afla in acelasi spatiu de adrese, deci da.

116. In ce situatie apare un seg fault?

R: Acces invalid la memorie, nu a fost rezervata pagina aceea. Cand accesez ceva la care

nu am permisiuni: as incerca sa scriu intr-o zona de read-only.

117. Cine verifica si spune ca nu e in regula ce ai facut?

R: Sistemul de operare este tratatorul, handler ul. Problema este anuntata de MMU.

118. Tabela de pagini, MMU-ul o scrie sau o citeste?

R: Doar o citeste, so-ul o scrie.

119. De ce este mai rapida schimbarea de context intre thread-uri ale aceluiasi

proces, fata de procese diferite?

R: E vorba de tlb, sunt in acelasi spatiu virtual de adrese si deja are are informatia pe care

treb sa o ruleze.

120. Ce apel de sistem este folosit in cadrul apelului de blbl fork?


R: clone (la fel ca si pt pthread create). Diferenta se face intr-un flag care zice daca e thread

sau nu. La fork, procesul parinte prin fork duplica spatiul virtual de adrese, dar nu se face

corespondenta in memorie decat la copy on write.

121. Cand fac close pe un fd?

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: Blocurile unui director contin dentry uri.

123. Apel de biblioteca ce nu face in spate apel de sistem.

R: Poate fi si malloc.

124. Apel de bibl care face apel de sistem la fiecare apel.

R: mmap.

125. Cu ce difera mmap de malloc?

R: malloc ul poate actiona in cadrul unui mmap. mmap ul doar rezerva o pagina, si mallocul

poate fi in interirorul acelei pagini.

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.

127. Fiecare fisier are un dentry asociat. / de la root are un dentry?

R: Intrarea ..

128. Ce inseamna un race condition?

R: 2 thread uri incearca sa scrie in aceeasi zona de memorie.


129. Ce inseamna un deadlock?

R: Mai multe thread uri asteapta o reursa care nu mai e eliberata.

130. Ce este un mutex? Care e scopul?

R: un semafor binar. protejeaza o sectiune critica.

131. Alte mecanisme de sincronizare?

R: semafoarele, barierele. Diferenta dintre ele este ca bariera asteapta mai multe thread-uris

a ajunga la un punct, semafoarele pot porni si de la un punct negativ.

132. Ce e un proces zombie?

R: Un proces care se termina, iar parintele nu l asteapta.

133. Ce semnal se trimite de la un proces care se termina catre un proces parinte?

R: SEGCHILD. Daca el nu se termina, acesta devine zombie.

134. Ce inseamna un copil orfan?

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.

135. Poate un proces zombie sa fie si orfan?

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: CPU Intensive si IO Intensive.

137. Un proces se poate modifica din CPU Intensive in IO Intensive?

R: Da, ar trb.

138. Ce inseamna functie reentranta?

R: Poate sa fie apelata din orice context de mai multe thread-uri, de ex. strcpy.

139. Ce este un lock reentrant?


R: Poti sa faci lock de mai multe ori pe el.

140. Ce reprezinta o ierarhie de pagini ierarhica, de ce am folosi asa ceva?

R: Reduce overhead ul spatial in situatiile in care ar fi ft multe pagini care nu ar fi ocupate.

141. Ce inseamna ca se goleste TLB flush la schimbarea de context?

R: Avem practic un alt proces.

142. Mecanismul de copy-on-write si cand apare mecanismul?

R: Cand se face fork. Dupa fork, paginile sunt read only, iar la write se genereaza un page

fault ca sa poti schimba permisiunile.

143. Ce rol are swap ul pe o partitie?

R: Daca nu mai am loc in acea partitie, unele procese sunt trecute pe hard disk.

144. Ce este un socket?

R: Un mod de comunicare intre procese

145. Diferenta intre socket si fd? Read-write pe fisier vs socket

R:

146. Ce intoarce apelul read?

R: numarul de caractere citite <= nr de caractere pe care as vrea sa le citesc

147. Care ar fi solutia ca sa citesc fix cate caractere vreau?

R: folosesc while si apelez functia de mai multe ori

148. Apel de sistem care nu este blocant?

R: getpid

149. Exemplu de analizator static si dinamic si penttru ce s-ar folosi?

R: gdb analizator dinamic pt erori la runtime si objdump static pentru vulnerabilitati

150. Putem sa ajungem sa avem deadlock fara sa folosim primitive de sincronizare?


R: Nu! Doar cand unul face lock si unul face ceva si ala lock. Ori nu folosim explicit.

151. Care este avantajul folosirii executabilelor statice si a celor dinamice?

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

intre ele? size/len si data blocks

R:

153. Ce inseamna mod privilegiat si neprivilegiat?

R: Modul priivlegiat are legatura cu operatiile privilegaite din kernel space. Se folosesc 2 din

motive de securitate.

154. Ce face un apel de sistem? In ce mod?

R: Mod privilegiat: face context switch din user space in kernel space

155. Avantajele folosirii masinilor virtuale, cu ce difera fata de un container

R: Partajeaza bibl comune cu sist de operare

156. Diferenta dintre un sist de operare monolitic vs unul microkernel

R: Linux este monolitic.

157. Ce inseamna overhead?

R: perioada de timp care apare in anumite situatii de sincornizare in mom in care ai nev de

un raspuns pe care nu l ai primit

158. Exemplu de overhead spatial?

R: Vrei sa aloci o zona de memorie mai mare decat este deja paginata. Atunci este alocata o

noua pagina .

159. Ce este un semnal?

R: Modul in care procesele comunica intre ele la nivel de sistem.


160. La ctrl + C se genereaza sigint.

161. Cu ce difera exec fata de fork?

R: Odata facut fork, zona de adrese este duplicata, iar la exec

162. Pot sa fac exec fara fork?

R: Procesul curent este suprascris de alt proces.

163. Ce inseamna schimbare de context voluntara?

R: cand cedezi de bunavoie executia, se face prin yield

164. Cand este un proces incheiat printr o schimbare de proces nevoluntara?

R: in momentul in care alt proces cu prioritate mai mare intra in starea ready sau i s a

terminat cuanta de timp, iar asta decide planificatorul.

165. Ce este planificatorul?

R: este o functie care se apeleaza din anumite contexte

166. De ce este necesara sincronizarea proceselor, cum o facem?

R: Prin canale de comunicare, pipe uri. Nu putem folosi mutex pt a sincroniza procese.

167. Alte forme de comunicare interproces?

R: socketi

168. Cum faci comunicarea interproces pe 2 calc din retele diferite?

R: prin socketi

169. Functii care lucreaza cu socketi?

R: read,write plus accept listen connect

170. Ce este un sistem de fisiere virtual?

R: sistem care nu are o paginare in memoria fizica


171. Ce se intampla in faza de loading a unui executabil? EL se incarca complet in

memorie sau nu?

R:

172. Ce contine inode ul unui sym link?

R: contine o cale. la stat sau ls-l, size ul unui link este dat de continutul lui, exact acel text

este pus in cadrul symlink ului

173. Cand se instantiaza / creeaza zonele dinamice?

R: La laod time, cand se incarca executabilul

174.

S-ar putea să vă placă și