Sunteți pe pagina 1din 6

Fișiere, I/O

1. Ce conține un FCB (File Control Block)?


Identificator, permisiuni, dimensiunea fisierului, timpi de acces, tipul fisierului,
nlinks(numarul de hard linkuri catre FCB), pointeri catre blocuri de date

2. Ce reprezintă un descriptor de fișier?


Un index in tabela de descriptori de fisier a procesului

3. Ce reprezintă tabele de descriptori de fișiere?


Tabela de descriptori de fisiere contine referinte catre structuri de fisier(file
channel) sau socket(socket channel)

4. Câte tabele de descriptori de fișiere se găsesc într-un sistem de operare?


Una pentru fiecare process

5. Ce efect are apelul dup()?


Face o copie unui descriptor de fisier. In tabela de descriptori apare o noua
intrare care refera acelasi channel

6. Ce efect are apelul close()?


Inchide un file descriptor. Daca acest file descriptor era ultima referinta catre
channel atunci se inchide si channel-ul

7. Ce apeluri modifică pointer-ul/cursorul de fișier (file pointer)?


Linux: lseek, read, write; Windows: SetFilePointer, ReadFile, WriteFile

8. Ce apeluri modifică dimensiunea fișierului?


Linux: ftruncate, write; Windows: SetFileEndOfFile, WriteFile

9. Ce efect are apelul/comanda truncate?


Modifica dimensiunea fisierului la valoarea specificata

10. Ce este un hard link?


Un nou dentry care refara acelasi inode

11. Ce este un link simbolic/symlink?


Un nou dentry care refera un nou inode de tip symlink care contine in zona de
pointeri catre blocuri de date calea catre fisier

12. Care este diferența dintre un link simbolic și un hard link?


Un hard link e doar un dentry, iar un link symbolic e un dentry si un inode care
contine o cale

13. De ce numele unui fișier nu se găsește în inode?


Pentru ca se gaseste in dentry-ul care refera inode-ul. Pot exista mai multe
dentry-uri care sa refere acelasi inode prin urmare acelasi fisier poate avea
mai multe nume
14. Ce se întâmplă în cazul formatării unei partiții?
Se initializeaza sistemul de fisiere. Unele sectiuni din partitie vor contine
informatii de stocare, iar altele vor contine datele propriu-zise

15. Ce se întâmplă cu sistemul de fișiere în cazul folosirii cu succes a comenzii


rm?
Se sterge hard link-ul data ca parametru. Daca hard link-ul era ultimul se
sterge si inode-ul

16. Care este un avantaj al folosirii hard link-urilor și un avantaj al folosirii link-
urilor simbolice?
Hard link-urile ocupa mai putin spatiu, iar link-urile simbolice pot referi fisiere
de pe alte partitii

17. Ce efect are comanda mv /path/to/a.dat /new/path/to/b.dat în sistemul de


fișiere?
Se sterge dentry-ul a.dat din inode-ul directorului /path/to si se adauga in
inode-ul directorului /new/payh/to un nou dentry care contine la nume b.dat iar
la inode number acelasi inode number care il avea si a.dat

18. Care sunt tipurile de fișiere pe un sistem de fișiere uzual Unix?


Bloc, caracter, socket, regular file, directory, symlink, FIFO

19. Care tipuri de fișiere nu au blocuri de date?


Bloc, caracter, socket, FIFO

20. Ce conțin blocurile de date ale unui director?


Structuri de tip dentry. Pot fi dentry-uri de fisiere sau de alte directoare

21. Ce este un sistem de fișiere virtual?


Un nivel de abstractizare deasupra unui sistem de fisiere concret

22. Ce este un dispozitiv virtual?


Un diver care nu comunica cu un dispozitiv fizic ci prelucreaza request-urile
intern

23. Ce tipuri de dispozitive cunoașteți? Clasificați-le din orice punct de vedere


cunoașteți
Input: mouse, tastatura, microfon
Output: monitor, imprimanta

Stocare: HDD, SSD, USB drive, CD-ROM


Media: camera web, difuzor, microfon

Intern: HDD, baterie


Extern: camera web, boxe, mouse

24. Cu ce diferă un dispozitiv de tip bloc de un dispozitiv de tip caracter? Dați câte
un exemplu de fiecare.
Dispozitivele de tip bloc au file pointer.
Bloc: /dev/sda
Caracter: /dev/random

25. De ce nu are sens operația de seek pe un dispozitiv de tip caracter?


Deoarece comunicatia cu dispozitivele de tip caracter are loc sub forma de
byte stream si dispozitivele caracter nu au file pointer

26. Ce adresă IP locală și ce port local are un socket întors de apelul accept()?
Aceeasi adresa si acelasi port cu socket-ul listener dat ca parametru la accept

27. Ce valoare poate întoarce un apel read() sau un apel write()?


Read: numarul de octeti cititi, 0 in caz ca sa ajuns la EOF, negativ in caz de
eroare
Write: numarul de octeti scrisi, 0 in caz ca s-a inchis celalalt capat al canalului
de comunicatie, negativ in caz de eroare

28. Ce operații se pot face pe fișiere?


Citire, scriere, trunchire, modificare pozitie cursor, stergere, citire/modificare
metadate

29. Ce operații asupra fișierelor modifică/nu modifică valoarea cursorului unui


fișier?
Modifica: citire, scriere, modificare pozitie cursor
Nu modifica: aflare pozitie cursor, citire/modificare metadate, mutare, copiere

30. Ce operații asupra fișierelor modifică/nu modifică dimensiunea fișierului?


Modifica: scriere(in anumite cazuri), trunchiere
Nu modifica: citire, aflare pozitie cursor, mutare, copiere

31. Unde este reținută valoarea cursorului de fișiere (file pointer) și unde este
reținută dimensiunea fișierului?
Valoare cursorului de fisier este retinuta in file channel-ul pe care il refera
descriptorul de fisier
Dimensiunea este retinuta in FCB

32. De ce avem două buffere asociate fiecărui socket, ce rol are fiecare?
Unul e pentru transmisie(send) si celalalt e pentru receptie(receive)

33. Ce este o întrerupere? Când este livrată o întrerupere?


Un semnal trimis pe magistrala de un dispozitiv catre procesor. Dispozitivul
livreaza o intrerupere cand este disponibil sa primeasca sau sa scrie date

34. Cu ce diferă port-mapped I/O de memory-mapped I/O?


La port-mapped I/O exista un interval de adrese separat de memoria
fizica(RAM), pe cand la memory-mapped I/O anumite intervale de adrese din
memoria fizica sunt folosite pentru a comunica cu dispozitivele I/O

35. Ce este o operație asincronă?


O operatie al carei rezultat nu este primit la initializarea operatiei ci este primit
mai tarziu printr-o notificare de la sistemul de operare sau este verificata
explicit incheierea operatiei
36. Ce este o operație neblocantă?
O operatie care nu blocheaza firul de executie in caz ca nu poate fi executata
in acel moment

37. Cu ce diferă un socket de rețea de un socket UNIX?


Un socket de retea se foloseste pentru comunicatia intre procese aflate pe
sisteme diferite, prin intermediul retelei
Un socket UNIX se foloseste pentru comunicatia intere procese aflate pe
acelasi sistem

38. Care este diferența între un pipe anonim și un pipe cu nume (named pipe)?
Pipe-urile cu nume au in spate un fisier de tip FIFO

39. Ce este buffer cache-ul? Care este rolul său?


Un cache in memoria RAM in care sunt tinute fisierele modificate recent. Are
rolul de a eficientiza accesul la fisiere

40. De ce operația write pe fișiere este foarte rar blocantă?


Pentru ca write se blocheaza cand buffer cache-ul e plin, dar pentru ca buffer
cache-ul e suficient de mare se intampla rar ca write sa scrie cand mai e putin
spatiu disponibil in buffer cache

41. În ce situație operația read() pe fișier se blochează?


Cand fisierul nu se afla in buffer cache

42. Care este rolul unui device driver?


De a intermedia comunicatia aplicatiilor din user space cu dispozitivul

43. Ce rol are controller-ul hardware?


Comanda dispozitivul si comunica cu procesorul

44. Care este rolul DMA-ului (Direct Memory Access)?


De a copia blocuri mari de date din controller in memoria RAM fara a implica
procesorul

45. Când are sens să folosim polling în loc de întreruperi?


Atunci cand exista trafic mare de date

46. Ce înseamnă zero-copy? Ce mecanism/apel folosește zero-copy?


Transfer de date care are loc in kernel fara a fi copiate si in user space.
Mmap, splice, sendfile (linux) si TansmitFile (windows) folosesc zero-copy

47. Ce rol are mecanismul de TCP offload engine?


De a eficientiza operatiile de incapsulare si decapsulare, implementand
aceste operatii in hardware la nivelul placii de retea

48. Care este sursa primară pentru care un apel send() pe un socket TCP se
blochează?
Buffer-ul de transmisie din kernel este plin
49. Care este sursa primară pentru care un apel send() pe un socket UDP se
blochează?
Buffer-ul de transmisie din kernel este plin

50. Ce garanții ni se oferă în momentul în care apelul send() se întoarce în user


space?
S-a scris cel putin un byte daca nu au aparut erori

51. Cu ce diferă afișarea folosind printf() față de folosirea write()?


Printf foloseste un buffer in user space

52. De ce subsistemul de networking nu folosește buffer cache-ul?


Buffer cache-ul e pentru fisiere

53. Ce rol are apelul / comanda sync?


Face flush la buffer cache

54. Care este rolul apelului ioctl / DeviceIoControl?


Rolul de a comunica cu dispozitive atunci cand nu se poate folosi un alt apel
de sistem

55. De ce în general doar utilizatorul root are permisiuni de scriere (uneori doar
root are permisiuni de citire) pe intrările din /dev?
Deoarece intrarile din /dev reprezinta drivere si o scriere neautorizata poate
afecta dispozitivul pe care il reprezinta driverul (de exemplu /dev/sda - hard
disk-ul)

56. Ce permisiuni are zona .text/.data/.rodata/.bss/de stivă/ de heap?


.text read, execute
.data read, write
.rodata read
.bss read, write
stiva read, write
heap read, write

57. De ce este apelul fwrite mai rapid decât write atunci când facem multe scrieri?
Pentru ca fwrite foloseste un buffer si scrierile pe disk se fac doar cand buffer-
ul e plin, nu la orice apel

58. Ce se întâmplă dacă facem open de mai multe ori consecutiv pe același fișier?
Vom obtine doi file descriptori diferiti independenti

59. Ce fișiere sunt deschise, în general, la crearea unui proces nou?


stdin, stdout, stderr

60. De ce este utilă prezența unor dispozitive pur virtuale în ierarhia /dev (ex.
/dev/vboxnetctl, /dev/urandom)?
Pentru teste si pentru functionalitatile pe care le implementeaza(de
exemplu /dev/urandom genereaza numere aleatoare)
61. Ce conține tabela vectorilor de întrerupere / interrupt descriptor table?
Rutine de tratare a intreruperilor

62. Ce utilitar putem folosi pentru crearea unui hard link al unui fișier? Dar al unui
director?
Pentru a crea un hard link unui fisier se foloseste ln. Nu se poate crea hard
link pentru directoare

63. De ce nu se păstrează numele fișierului în inode?


Pentru ca se pastreaza in dentry

64. Ce informații conține un directory entry (dentry)?


Un nume si un numar de inode

65. De ce, în general, ln permite crearea de link-uri simbolice pentru un director,


dar nu și crearea de hard link-uri?
Un hard link la un director ar duce la inconsistente in sistemul de fisiere

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