Operativni Sistemi Flashcards
1) Koje instrukcije/funkcije se izvršavaju u kernel, a koje u korisničkom modu?
a) fork()
b) semsignal(s)
c) a = sin(3,14)
a) fork() - kernel
b) semsignal(s) - korisnički
c) a = sin(3,14) - korisnički
2) Za svaku funkciju navesti da li uzrokuju prelazak u kernel mod i da li uzrokuju zamenu aktivnog procesa?
a) exchange(0, 1)
b) semwait(1)
c) strcmp(a, b)
d) scanf()
e) malloc()
a) exchange(0, 1) - ne uzrokuje prelaz u kernel mod, ne uzrokuje zamenu aktivnog procesa..
b) semwait(1) - ne uzrokuje prelaz u kernel mod, ne uzrokuje zamenu aktivnog procesa..
c) strcmp(a, b) - ne uzrokuje prelaz u kernel mod, ne uzrokuje zamenu aktivnog procesa.
d) scanf() - uzrokuje prelazak u kernel mod, uzrokuje zamenu aktivnog procesa.
e) malloc() - uzrokuje prelaz u kernel mod, ne uzrokuje zamenu aktivnog procesa
3) Koje funkcije uzrokuju prelazak u kernel mod? Objasniti zašto jednom rečenicom.
a) execv()
b) semwait(s)
c) strcat(a, b)
d) test&set()
e) printf()
a) execv() - uzrokuje prelazak u kernel mod, radi se o sistemskom pozivu, koji služi za poziv novog procesa iz postojećeg.
b) semwait(s) - u zavisnosti od vrednosti semafora moze da uzrokuje prelazak u kernel mod radi zamene procesa ( s <= 0 ).
c) strcat(a, b) - ne uzrokuje prelaz u kernel mod, zato što je to poziv funkcije iz standardne biblioteke.
d) test&set() - ne uzrokuje prelaz u kernel mod, zato što se ne vrši zamena procesa.
e) printf() - uzrokuje prelaz u kernel mod, zato što je ulazno-izlazna operacija.
4) U kom stanju je bio i u koje stanje prelazi proces kada:
a) izvrši read() funkciju
b) izvrši semsignal(s), pri čemu je proces blokiran na semaforu višeg prioriteta
c) izvrši test&set() instrukciju
a) izvrši read() funkciju - Running => Blocked
b) izvrši semsignal(s), pri čemu je proces blokiran na semaforu višeg prioriteta- Blocked => Blocked ( ne menja stanje )
c) izvrši test&set() instrukciju - Running => Running ( ne menja stanje )
5) Da li prekid kloka uzrokuje prelazak u kernel mod i zasto da/ne?
Prekid clock-a uzrokuje prelazak u kernel mod. Čuvaju se argumenti procesa na steku i prelazi se na rutinu za obradu prekida koja se izvršava u kernel modu.
6) Koje instrukcije/funkcije se izvrsavaju u kernel modu:
a) execve()
b) read()
c) strcpy()
d) semwait()
e) a+=3
a) execve()
b) read()
d) semwait() - u zavisnosti od vrednosti semafora prelazi u kernel mod.
7) Kada jedan proces kreira novi proces korišćenjem fork(), šta je deljeno između parent i child procesa?
a) stek
b) heap
c) programski kod
c) programski kod
8) U koje stanje prelazi aktivni proces kada:
a) izvrši semwait(s), pri cemu je s = 1
b) pozove recieve() funkciju
c) njegova memorijska slika prebaci na disk jer je dugo blokiran na U/I
d) izvrši compare&swap() instrukciju
e) nastane prekid clock-a
a) izvrši semwait(s), pri cemu je s = 1 - ne menja stanje
b) pozove recieve() funkciju - blokira se
c) njegova memorijska slika prebaci na disk jer je dugo blokiran na U/I - blokiran/suspendovan
d) izvrši compare&swap() instrukciju - nastavlja sa izvrsenjem
e) nastane prekid clock-a - spreman
Prekid kloka ili poziv U/I operacije uzrokuje prebacivanje prekinutog
procesa u novo stanje (Spreman, Blokiran)
9) Koja je osnovna razlika između sistemskog poziva i funkcije iz standardne C biblioteke?
Kada se radi o sistemskom pozivu prelazi se u kernel mod, dok kod poziva funkcije standardne biblioteke to nije slučaj.
10) Sta se menja u upravljačkom bloku niti prilikom zamene niti (context switch-a) i zašto?
Menja se stanje niti, vrednosti registra opste namene, flegova, program counter-a.
11) Šta je multiprogramiranje i kakve promene unosi u upravljanje memorijom i procesorom u odnosu na jednoprogramiranje?
a) Za šta služi stek u memorijskoj slici procesa?
Multiprogramiranje predstavlja kada operativni sistem u isto vreme smešta u memoriju vise poslova(procesa). U jednom trenutku samo jedan od poslova se izvršava na procesoru, ukoliko se blokira izvršenjem U/I operacije aktivira se planiranje poslova(job scheduling).
Kod jednoprogramiranja CPU mora da čeka dok se ne izvrši neka U/I instrukcija, nema zamene procesa.
a) Stek služi za čuvanje parametara pri pozivu funkcije, povratne adrese i lokalne promenljive funkcije.
12) Ako izvršite sledeći C program, koji su mogući izlazi u slučaju da je fork() funkcija uspešna?
main()
{
int pid;
pid=fork();
printf(“%d \n”, pid);
}
Moguća su dva slučaja da je PID = 0 ili PID > 0 ukoliko je funkcija fork() uspešno izvršena, u suprotnom ako je PID < 0 nastaje greska
13) U kom slučaju se proces sa tri ULT niti brže izvršava od procesa sa tri KLT niti? Objasniti ukratko.
Izvršava se u slučaju kada nema blokiranja niti. Kod ULT-a ukoliko dođe do blokiranja niti, blokira se ceo proces. Međutim ukoliko nema blokiranja niti, ULT niti se izvršavaju brže jer pri promeni procesa ne zahteva privilegije kernel moda.