ОС1/Јун 2020

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Zadaci na stranici predmeta.

1. zadatak

Postavka

Ako se nad sledećim programom kreira jedan proces, koliko će ukupno procesa biti kreirano (uključujući i taj jedan početni) u funkciji N, pod pretpostavkom da su svi sistemski pozivi uspeli?

const unsigned N = ...;
void f (unsigned n) {
    if (n==0) return;
    if (n%2) f(n-1);
    else if (!fork()) f(n-1);
}
void main { f(N); }

Rešenje

Ova funkcija zove samu sebe ukoliko je argument neparan broj, a pravi novi proces (a trenutni se završava) ako je paran. Ovaj proces se nastavlja sve dok argument ne dostigne 0, a argument se smanjuje svakog poziva za 1. To znači da će svakog, osim prvog, neparnog poziva biti napravljen novi proces, pa se ukupan broj napravljenih procesa može izračunati kao .

2. zadatak

Postavka

Šta je problem sledeće implementacije kritične sekcije uposlenim čekanjem (obratiti pažnju na to da procesi nisu sasvim simetrični)?

shared var flag1, flag2 : boolean = false;
process P1
begin
    loop
        while flag2 = true do null end;
        flag1 := true;
        <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 P2;

Rešenje

Može da se desi sledeća situacija:

  1. P1 uradi proveru za flag2, vidi da je false, prođe proveru i promeni se kontekst
  2. P2 postavi flag2 na true očekujući kako je zaključao sekciju od P1, uradi proveru za flag1, vidi da je false, prođe proveru, uđe u kritičnu sekciju i promeni se kontekst dok je u kritičnoj sekciji
  3. P1 postavi flag1 na true (ali sa zakašnjenjem, jer je P2 već ušao u kritičnu sekciju) i uđe u kritičnu sekciju
  4. Sada su oba procesa u kritičnoj sekciji

3. zadatak

Postavka

Šta je osnovna razlika između tehnike dinamičkog učitavanja i tehnike preklopa (overlays)?

Rešenje

Dinamičko učitavanje nam samo kaže da neki deo učitavamo kasnije kada je potreban, preklopi zahtevaju da se jedan isti segment memorije koristi za više različitih strukture u različitim vremenima (vremensko multipleksiranje).

4. zadatak

Postavka

Virtuelni adresni prostor je veličine 1MB i organizovan je stranično, adresibilna jedinica je bajt, a veličina stranice je 256B. Neki proces je alocirao dva logička segmenta, oba su veličine po 16 stranica, jedan zauzima najniže, a drugi najviše adrese u adresnom prosturu. Stranice se učitavaju na zahtev, a trenutno nije učitana nijedna stranica ovog procesa. Posmatraju se tri date virtuelne adrese nezavisno (svaka za sebe kao da se izvrši sama u opisanom stranju); hardver je prilikom preslikavanja adrese generisao izuzetak zbog nemogućnosti preslikavanja (page fault). Navesti kako će operativni sistem obraditi svaki od ovih izuzetaka.

Virtuelna adresa (hex) Način obrade
004CA
FF745
F0745

Rešenje

Virtuelna adresa ima 20 bita, od kojih je viših 12 za adresiranje stranice a nižih 8 za offset. Zauzete stranice su onda od 000 do 00F i od FF0 do FFF.

Virtuelna adresa (hex) Način obrade
004CA Učitaće stranicu 004 nižeg logičkog segmenta.
FF745 Učitaće stranicu FF7 višeg logičkog segmenta.
F0745 Generisaće grešku u pristupu memoriji jer stranica F07 nije alocirana.

5. zadatak

Videti isti ovaj zadatak iz avgusta 2020.

6. zadatak

Postavka

Dat je rezultat komande ls za neki direktorijum na nekom sistemu nalik sistemu Unix. Korisnik Jane koji pripada grupi staff izvršava proces koji otvara fajl WideTable.pdf za upis. Da li će taj proces moći da otvori ovaj fajl?

$ ls -l
-rw-r--rw- 1 JohnDoe staff 549387 Jul 8 2019 WideTable.pdf

Rešenje

Neće, jer grupa korisnika Jane nema pristup fajlu.

7. zadatak

Postavka

Navesti razlog zašto bi neki fajl sistem koristio klastere na disku različite veličine.

Rešenje

Za manji fajl se upotrebljava manji klaster a za veći fajl veći klaster pa je manja interna fragmentacija.