Operating Systems Exam Questions

Lakukan tugas rumah & ujian kamu dengan baik sekarang menggunakan Quizwiz!

Care sunt zonele writable din spațiul de adrese al unui proces?

.data .bss

Două procese sunt pornite din același executabil, ce zone din spațiul de adrese vor partaja?

.rodata .cod?

Câte procese se pot găsi în starea RUNNING, READY și WAITING?

1 - RUNNING, in READY SI WAITING depinde de memoria sistemul de operare ??

Ce cauzează schimbări de context?

5 cauze: yield (cedeaza de buna voie), ii expira cuanta, apare un proces cu prioritate mai mare, se termina, se blocheaza in asteptare i/o

Ce înseamnă tabelă de pagini multi-nivel (ierarhică)? De ce este utilă?

?

Cum tratăm situația în care apelăm o funcție non-reentrantă într-un handler de semnal?

?

Ce este un thread?

Abstractizare a procesorului.

Ce operații / instrucțiuni low-level (ISA) se pot executa doar în mod privilegiat?

Accesul direct la memorie, modificarea prioritatii proceselor (modificarea prioritatii statice cu ceva negativ),

Care sunt avantajele și dezavantajele folosirii memoriei partajate pentru comunicarea inter-proces?

Acest mecanism permite comunicarea între procese prin accesul direct și partajat la o zonă de memorie bine determinată. Este un mod mai rapid de comunicare între procese decât celelalte mijloace IPC, dar are un mare dezavantaj, procesele ce comunică trebuie să fie pe aceeași mașină (spre deosebire de sockeți, pipe-urile cu nume și cozile de mesaje din Windows)

Ce conține o intrare în tabela de pagini?

Adresa virtuala, adresa fizica, permisiunile si daca e valida/invalida

Cum tratează planificatorul procesele I/O intensive și procesele CPU intensive?

Alora i/o intensive le da cuanta mai mare pentru ca se vor bloca des si la alea cpu cuanta mai mica.

Ce se întâmplă când există o eroare critică (de tip Segmentation fault) la nivelul sistemului de operare?

Apare un semnal, la segmantation fault = SIGSEGV

Care este asocierea apel de bibliotecă / apel de sistem?

Apelul la bibliotecă poate depinde de apelul de sistem. De exemplu functiile din stdio.h fwrite, fread, etc sunt wrappere peste apelurile de sistem read, write, etc.

Ce rol are tabela de pagini?

Asociaza o pagina fizica cu una virtuala?

Ce înseamnă mecanismul de memorie virtuală?

Asocierea unui spatiu fizic cu mai multe adrese virtuale a.i. procesele sa creada ca au tot spatiul la dispozitie.

Două thread-uri ale unui proces execută aceeași funcție. Care sunt diferențele între cele două thread-uri?

Au stive diferite.

Ce avantaj / dezavantaje au apelurile de sistem?

Avantaj: acces la spatiul kernel. Dezavantaj: overhead

Ce înseamnă deadlock?

Blocarea unui thread in asteptarea unui eveniment ce nu poate aparea.

Când se blochează un producător în problema producător-consumator? Dar un consumator?

Cand bufferul e plin. Consumatorul se blocheaza cand bufferul e gol

Ce este fragmentarea internă a memoriei?

Cand exista goluri. De exemplu pagina are 4kb si programul meu cere 5kb => imi vor fi date 2 pagini dar cu 3kb nu fac nimic

Când are loc un TLB miss?

Cand nu se gaseste pagina respectiva (e null intrarea)? sau cand e invalida?

În ce situație apare page fault fără a cauza segmentation fault?

Cand pagina e alocata. (apare in sistemul de operare cu un flag de alocata)

În ce situație a[300] rezultă în Segmentation fault?

Cand pagina nu e rezervata in memorie cand se incearca aducerea ei.

Ce rol are spațiul de swap?

Cand spatiul fizic e mai mic ca cel virtual.

Ce este un proces I/O intensive?

Care are des nevoie de acces la io

Ce este un proces CPU intensive?

Care are nevoie des sa stea pe procesor (calcule, procesare date)

Ce înseamnă waiting time (timp de așteptare) în planificarea proceselor?

Cat stau in ready.

Ce este o bibliotecă statică? Ce este o bibliotecă dinamică?

Cea statica e formata din fisiere obiect, cea dinamica e un fisier obiect. În cazul bibliotecilor statice codul funcției de bibliotecă este copiat în codul executabil la link-editare. De partea cealaltă, în cazul bibliotecilor partajate, codul este încărcat în memorie în momentul rulării.

Ce este o schimbare de context voluntară și o schimbare de context nevoluntară?

Cea voluntara tine de proces. Cea involuntara tine de scheduler.

Ce se întâmplă când toate procesele sistemului sunt blocate?

Când toate procesele sunt blocate, pe fiecare procesor se planifica un proces IDLE care face busy Waiting

Putem avea un sistem multi-core cu un singur proces aflat în starea RUNNING și mai multe procese în READY?

Da, daca procesul face atatea thread-urile cate core-uri sunt si prioritatea e maxima.

Poate un thread să acceseze stiva altui thread? Cum?

Da, folosind TLS

Poate fi un proces zombie orfan? Ce se întâmplă cu un proces zombie orfan?

Da. Va fi omorat de init.

Ce se întâmplă dacă un thread realizează un acces nevalid la o zonă de memorie?

Daca pagina e alocata se va aduce pagina respectiva, daca nu => segmentation fault.

Care este rolul unui page fault. În ce condiții apare?

Daca procesul vrea undeva interzis sau nu exista

De ce, în general, o aplicație trebuie să execute un apel de sistem pentru a accesa un dispozitiv hardware? De ce NU poate accesa direct dispozitivul hardware?

Dispozitivul hardware este I/O. Accesul la i/o se face din kernel mode pentru a asigura fairness si corectitudine.

Ce este și ce rol are MMU (Memory Management Unit)?

Este un dispozitiv hardware care traduce adresa virtuala in adresa fizica.

Când preferăm folosirea static linking, respectiv dynamic linking? Cu ce diferă un executabil dinamic de un executabil static?

Executabilul static are dim mai mare dar e portabil si mai rapid.

Ce se întâmplă în momentul tranziției în mod privilegiat? Cum se/Cine asigură (enforcement) existența modului privilegiat?

Existenta spatiului kernel e data de hardware. In momentul tranzitiei in mod privilegiat cred ca se schimba undeva un bit in care se precizeaza ca e root.

Cum asigură sistemul de operare separația între procese?

Fiecare proces are spatiul propriu de adrese.

Ce este paginarea memoriei?

Folosirea de pagini fixe pentru alocare

Ce efect are apelul exec()?

Incarca date din executabil in memoria procesului copil creat cu fork.

Ce înseamnă livelock? Cum diferă de un deadlock?

La livelock nu se blocheaza, ele sunt in running dar nu pot trece mai departe

Care este rolul bibliotecii standard C (libc)?

Libc este un wrapper, intre so si aplicatie...

Dați exemplu de mecanism / funcție care reduce overhead-ul spațial și unul care reduce overhead-ul temporal.

Mecanism reducere overhead spatial: zero-copy, thread-uri, hardlink vs symbolic link, biblioteci/exec dinamice. Mecanism reducere overhead temporal: libc buffering, operatii asincrone, TLB, memorie cache, demand paging

Care sunt stările în care se poate găsi un proces/thread?

NEW, READY, RUNNING, BLOCKED, TERMINATED

Ce înseamnă mecanismul de copy-on-write?

Nu e nevoie de dublarea spatiului de adrese virtuale pana la momentul actiunii de write.

De ce schimbarea de context între două thread-uri ale aceluiași proces este mai rapidă decât schimbarea de context între două thread-uri din procese diferite?

Nu se mai face flush la TLS, nu trebuie schimbate spatiile de mem virtuala.

Ce reprezintă spațiul virtual de adrese al unui proces?

O asociere?

Ce este o bibliotecă?

O colectie de functii precompilate.

Ce forme de comunicare inter-proces cunoști?

O comunicare intre procese(IPC= interprocess comunication) pot fi pipe urile. Și pipe urile sunt de 2 tipuri: anonime și cu nume. La Cele anonime procesele trebuie sa fie "înrudite" ca sa comunice. Mai pot comunica prin fisiere.

Care sunt dezavantajele sincronizării?

Overhead

Ce înțelegem prin overhead spațial și overhead temporal?

Overhead spatial = cand o actiune foloseste mai multa memorie decat ar trebui? Overhead temporal = cand o actiune dureaza prea mult

De ce sunt avantajoase bibliotecile dinamice pentru spațiul de adrese al unui proces?

Partajare cod cu mai multe procese

Ce resurse partajează/nu partajează procesul părinte și procesul copil în cazul apelului fork()?

Partajeaza mem fizica si virtuala pana la primul write. Nu partajeaza pid-ul, stiva de intructiuni...

De ce sunt necesare apeluri de sistem?

Pentru a putea efectua actiuni privilegiate.ca sa poată accesa acel spațiu privilegiat

Se alocă un buffer a[100]. De ce a[105] NU va rezulta, în general, în Segmentation fault?

Pentru ca pagina e rezervata in memorie.

Ce conține PCB (Process Control Block)?

Pid ul procesului, pid ul parintelui, spatiul virtual de adrese, program counter, stiva de instructiuni, ebp

Care sunt avantajele și dezavantajele pipe-urilor pentru comunicarea inter-proces?

Pipe-urile (canalele de comunicație) sunt mecanisme primitive de comunicare între procese. Un pipe poate conține o cantitate limitată de date.

Cum se realizează tranziția în mod privilegiat?

Prin apeluri de sistem sau intreruperi.

Cine trimite un semnal unui proces?

SIstemul de operare?

Ce este o schimbare de context? Ce se întâmplă la o schimbare de context?

Schimbare de context = schimbarea unui proces cu un alt proces, se salveaza datele procesului vechi si se restitutie informatiile noului proces

Cum este implementat operatorul | din shell?

Se ia outputul primei instructiuni => va fi inputul la a doua intructiune

Ce înseamnă demand paging?

Se va aduce o pagina doar cand e nevoie de ea?

Ce este fragmentarea externă a memoriei?

Segmente de memorie nefolosite de procese?

Ce este un sistem de operare?

Set de programe care asigura distributia corecta a resurselor.

De ce este necesară sincronizarea proceselor/thread-urilor?

Sincronizarea este necesara pentru a nu suprascrie zone de memorie.

Ce înseamnă user/application mode/space (mod neprivilegiat)? Ce înseamnă kernel/supervisor mode/space (mod privilegiat)?

Spațiul kernel este un spațiu privilegiat la care doar nucleul sistemului de operare are acces. User space inseamna un spatiu neprivilegiat in care ruleaza aplicatiile.

Ce zone de memorie au comune thread-urile unui proces și ce zone au specifice?

Specifice : stiva, registrele. Comune: spatiul virtual de adrese al procesului mama.

Când are loc swap in și swap out?

Swap out => se duce pagina in zona de swap, Swap in => se aduce pagina din swap

De ce se golește TLB-ul (TLB flush) la schimbare de context?

TLB e per proces.

De ce nu este nevoie de TLB flush la schimbarea de context între două thread-uri ale aceluiași proces?

TLB e per proces. Threadurile sunt ale unui proces

În ce situație este utilă zona TLS (thread local storage)?

TLS =zona dedicata unde fiecare thread are o referinta a acelei variabile

Ce este un apel thread-safe? Ce este un apel reentrant?

Thread-safe inseamna ca va functiona corect indiferent de cate thread-uri sunt. Un apel reentrant : nu se folosesc date globale pentru un task, ci date locale

Cum este afectat spațiul virtual de adrese al unui proces în momentul creării unui thread?

Threadurile impart spatiul virtual al procesului din care se nasc.

Ce rol are TLB?

Tine paginile care au fost cel mai recent folosite.

Ce este un proces orfan? De ce un proces este orfan foarte puțin timp?

Un proces orfan e cand ii moare parintele, init va avea grija de acest proces.

Ce este un proces?

Un program in executie.

Ce este un semnal? Când se trimite un semnal către un proces?

Un semnal este o întrerupere software, în fluxul normal de execuție a unui proces. Un semnal primit de un proces poate fi generat: fie direct de sistemul de operare - în cazul în care acesta raportează diferite erori; fie de un proces - care-și poate trimite și singur semnale (semnalul va trece tot prin sistemul de operare).

Cu ce diferă un thread de un proces?

Un thread este un fir de executie a unui proces.

Ce sunt thread-urile cu implementare user-level și thread-urile cu implementare kernel-level?

User-level - kernel nu prea stie de ele, daca se strica unul se duc toate, se creaza mai rapid.Kernel - level - au suportul sistemului de operare care se ocupa de sincronizare

Ce efect are apelul fork()?

Va crea un proces copil. Se intoarce de doua ori, o data in parinte (cu 0 sau < 0) si o data in copil cu pid-ul copilului creat.

Ce efect are folosirea operatorului & din shell în crearea unui proces?

Va rula in background, parintele nu il mai asteapta, devine zombie si va fi adoptat de init.

Ce este un proces zombie? Cum apare un proces zombie? Care este problema proceselor zombie?

Zombie = cand parintele nu il mai asteapta

Ce acțiuni se pot executa doar în mod privilegiat?

alocarea / dezalocarea de resurse pentru o aplicație, accesare resurselor de intrare / ieșire (I/O), comunicarea cu alte aplicații (inter-process communication) - pe același sistem sau pe alt sistem, crearea / încheierea de fnoi aplicații, configurarea de permisiuni pe resurse ale sistemului

De ce este necesară prezența unei instrucțiuni de tipul atomic_compare_and_swap în fiecare ISA?

atomicitate. sincronizare

Care sunt secțiunile/zonele din spațiul de adrese al unui proces?

cod/text, bss, data, rodata

Ce înseamnă TOCTTOU (time of check to time of use)?

datele se pot schimba de cand le verifici pana le folosesti

Cum se implementează pe un sistem single-core un spinlock? Cum se implementează pe un sistem multi-core un spinlock?

implementare naivă: --- lock = 0; /* init */ while (lock == 1) ; /* do nothing */ lock = 1; /* get lock */ --- poate apărea un TOCTOU; este nevoie de atomizarea comparației și inițializării procesoarele oferă instrucțiuni de tipul compare-and-swap / compare-and-exchange: CAS(lock, 0, 1): --- if value == to_compare value = to_update return initial_value --- --- while (CAS(lock, 0, 1) == 1) ; ---

Care este avantajul folosirii mașinilor virtuale din perspectiva securității?

izolarea de host, poti verifica programe care pot fi rele pentru ca o masina virtuala se restituie usor

Dați exemplu de apel de sistem blocant.

lock pe mutex daca mutexul e deja luat. read daca buffer gol, write daca buffer plin

Ce este un sistem de operare monolitic?

mai multe componente în sistemul de operare -> performanță mai bună, totul în kernel mode, un apel de sistem face mai multe; dar totul este într-un singur loc, suprafață de atac mare

Care tip de sistem de operare are mai multe apeluri de sistem?

microkernel

Care sunt avantajele unui sistem de operare monolitic?

performanță mai bună

Ce înseamnă race condition?

problema de concurenta, când mai multe procesoare vor sa acceseze memoria

Ce este un sistem de operare de tip microkernel?

sistem de operare mai mic, suprafață de atac mai mică, performantă mai mică: se fac tranziții mai multe user-kernel pentru a permite componentelor software care rulează în user mode să interacționeze

Cu ce diferă un spinlock de un mutex? Când folosim spinlock-uri? Când folosim mutex-uri?

spinlock-ul este primitiva de bază pentru asigurarea atomicității face busy waiting în așteptarea eliberării, se bazează pe compare-and-swap mutex-ul este o primitivă mai complexă, cu o coadă de thread-uri în așteptare; dacă mutex-ul este luat, thread-ul intră în sleep pentru protejarea structurilor interne, un mutex are un spinlock spinlock-ul este util pentru regiuni critice de mici dimensiuni mutex-ul este util pentru regiuni critice mai mari sau unele în care thread-ul de blochează

Care sunt avantajele unui sistem de operare de tip microkernel?

suprafață de atac mai mic

Dați exemplu de apel de sistem neblocant.

unlock pe mutex, release pe semafor, read/write daca buffer nu e gol/plin


Set pelajaran terkait

acct ii ch 14 ungraded questions

View Set

What is the job of judicial branch

View Set