ОС1/Јул 2022
1. zadatak
Postavka
Navedeno je nekoliko funkcija standardne biblioteke jezika C (libc). Za svaku od njih navesti da li u svojoj implementaciji sigurno sadrži sistemski poziv (upisati "Da") ili najverovatnije ne sadrži sistemski poziv (iako bi teorijski i to moglo da bude deo funkcionalnosti jezgra operativnog sistema, za tim nema nikakve potrebe, pa se iz praktičnih razloga ne radi; upisati "Ne").
Funkcija | Opis | Sadrži sist. poziv |
---|---|---|
void* memcpy(void* dest, const void* src, size_t count)
|
Kopira niz bajtova u memoriji sa jednog mesta na drugo. | |
void exit (int status)
|
Završava izvršavanje programa. | |
int getchar(void)
|
Učitava znak sa standardnog ulaza. | |
char* strchr(const char *str, int c)
|
Traži prvu pojavu znaka u datom nizu znakova. |
Rešenje
Odozgo na dole: Ne, Da, Da, Ne.
2. zadatak
Postavka
Precizno objasniti zašto klasičan linker svoj pasao obavlja u dva prolaza (a ne može samo u jednom). Obrazloženje ilustrovati primerom.
Rešenje
Videti isti ovaj zadatak iz jula 2017.
3. zadatak
Postavka
Ukratko objasniti zašto je kod segmentne organizacije virtuelne memorije obavezna provera prekoračenja granice segmenta prilikom svakog adresiranja, a kod stranične organizacije ta provera ne postoji.
Rešenje
Videti isti ovaj zadatak iz avgusta 2020.
4. zadatak
Postavka
Šta je DLL i čemu služi? Objasniti osnovni motiv za postojanje ovog koncepta.
Rešenje
Videti isti ovaj zadatak iz juna 2019.
5. zadatak
Postavka
Šta radi procesorska instrukcija tipa test-and-set i za šta se ona tačno koristi u operativnim sistemima?
Rešenje
Videti isti ovaj zadatak iz jula 2017.
6. zadatak
Postavka
Precizno objasniti ceo mehanizam u sistemima nalik sistemu Unix kojim se postiže to da sistemskim pozivom kill jedan proces gasi drugi proces (šta tačno radi ovaj sistemski poziv i kako dovodi do gašenja procesa).
Rešenje
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
7. zadatak
Postavka
Šta je problem sledeće implementacije kritične sekcije uposlenim čekanjem?
shared var flag1 = false, flag2 = false;
process P1
begin
loop
flag1 := true;
while flag2 = true do null end;
<critical section>
flag1 := false;
<non-critical section>
end
end P1;
process P2
begin
loop
flag2 := true;
while flag1 = true do null end;
<critical section>
flag2 := false;
<non-critical section>
end
end P1;
Rešenje
Problem je u slučaju da oba procesa postave svoju zastavu na true, jer će onda neprestano uposleno čekati (livelock).
8. zadatak
Postavka
int fd = open("./mydoc.txt", O_CREAT|O_TRUNC|O_WRONLY);
if (fd<0) handle_error("Cannot open data file.");
int pid = fork ();
if (pid==0) {
dup2(fd,1);
execlp("./myprog.a", NULL);
handle_error("Cannot open exe file.");
}
Rešenje
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
9. zadatak
Postavka
Precizno objasniti šta radi sledeća komanda:
chmod g=x, u+rwx, o-wx .././frd
Rešenje
Fajlu frd iz roditeljskog direktorijuma tekućeg direktorijuma pravila pristupa postaju sledeća: grupa može isključivo da izvršava fajl, vlasnik može da čita, upisuje i izvršava fajl, dok ostali gube pravo pristupa pisanja i izvršavanja ako su ih do sad imali.
10. zadatak
Postavka
Precizno objasniti šta je i zašto najveći nedostatak ulančane organizacije fajla kod proizvoljnog pristupa fajlu. Zašto taj problem ne postoji kod FAT organizacije?
Rešenje
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.