OS1/Jun 2024

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

Zadaci na stranici predmeta.

1. zadatak

Postavka

Napisati Unix komandnu liniju koja pokreće procese nad sistemskim programima cat i less, tako da prvi proces znakove sa svog standardnog ulaza dobija iz fajla text, a znakove svog standardnog izlaza prosleđuje na stanadardni ulaz drugog procesa. Fajl text se nalazi u poddirektorijumu docs roditeljskog direktorijuma tekućeg direktorijuma interpretera komandne linije.

Rešenje

cat < ../docs/text | less

2. zadatak

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Postavka

Na asembleru 32-bitnog procesora picoRISC napisati naredbu tela date funkcije f koja u registar r1 učitava vrednost argumenta z. Upotrebiti simboličku konstantu, a njenu vrednost prethodno definisati direktivom def. Argumenti se na stek smeštaju zdesna nalevo, stek raste ka nižim adresama, SP ukazuje na poslednju popunjenu lokaciju, povratna adresa je 32-bitna i samo ona se, osim argumenata, stavlja na stek pri pozivu potprograma, adresiblina jedinica je bajt, a tip int je 32-bitni. void f (int x, int y, int z);

Rešenje

3. zadatak

Postavka

a) Šta je eksterna fragmentacija? b) Da li se ona javlja kod kontinualne organizacije memorije, a da li se javlja kod segmentno-stranične organizacije memorije? c) Navesti samo naziv tehnike kojom se rešava eksterna fragmentacija bez promene načina organizacije memorije.

Rešenje

  1. Eksterna fragmentacija je situacija u kojoj je slobodna memorija izdeljena među memorijom alociranom za procese. Fragmentacija je u tom slučaju eksterna jer se nalazi van prostora alociranog za procese. Pri eksternoj fragmentaciji može doći do situacije da u sistemu ima dovoljno slobodne memorije, ali da se neko parče zbog svoje veličine ne može alocirati u kontinuitetu.
  2. Eksterna fragmentacija se javlja kod kontinualne organizacije memorije, ali ne i kod segmentno-stranične.
  3. kompakcija

4. zadatak

Postavka

a) Kojom tehnikom se izbegava nepotrebna alokacija fizičke memorije za procese pokrenute sistemskim pozivom fork (navesti samo naziv na srpskom i engleskom)? Kakva hardverska podrška je neophodna za implementaciju ove tehnike?

Rešenje

  1. kopiranje na upis (engl. copy-on-write)
  2. Potrebno je da procesor podržava virtuelizaciju memorije, to jest da ima MMU, kao i da desktiptori stranica imaju bitove za dozvolu upisa, kako bi moglo da dođe do određenog izuzetka kada bi se stranice iskopirale.

5. zadatak

Postavka

Napisati deo C koda kojim tekući Unix proces čeka da mu se završi proces dete sa pid datim u promenljivoj cpid, a povratni status tog procesa deteta upisuje u promenljivu stat.

Rešenje

...
waitpid(cpid, &stat);
...

6. zadatak

Postavka

a) Koji hardverski mehanizam je neophodan za to da operativni sistem radi preotimanje (preemption) procesora? b) Kako se zovu hardverski uređaji računara koji omogućavaju implementaciju vremenske raspodele (time sharing) procesora?

Rešenje

  1. Spoljašnji hardverski prekidi.
  2. Tajmeri.

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 P2;

Rešenje

Problem datog rešenja je mogići livelock. Ako bi jedan proces izgubio procesor nakon svoje flagx := true linije, došlo bi do livelocka-a.

8. zadatak

Postavka

Precizno objasniti šta radi sledeći fragment programa:

int fd = open("./log",O_CREAT|O_TRUNC|O_WRONLY);
if (fd<0) handle_error("Cannot open log file.");
int pid = fork ();
if (pid==0) {
    dup2(fd,2);
    execlp("./myprog.a",NULL);
    handle_error("Cannot open exe file.");
}

Rešenje

Proces otvara fajl log za upisivanje i prazni ga. Ukoliko ne postoji, biće napravljen. Zatim pravi dete proces koji preusmerava svoj izlaz za greške na dati fajl, i na kraju pokreće program myprog.a. Ukoliko pokretanje programa ne bude uspešno, ispisaće poruku o grešci.

Ukratko: Pokreće proces-dete nad myprog.a, čiji će se izlaz za greške upisati u fajl log.

9. zadatak

Postavka

Kako se zove jednostavan i jedan od najstarijih standardnih protokola za prenos fajlova između udaljenih računara po principu klijent-server (dati pun naziv i akronim)?

Rešenje

FTP, File Transfer Protocol.

10. zadatak

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Postavka

Šta predstavlja struktura pod nazivom dentry cache u implementaciji fajl sistema i čemu služi? Navesti kratak primer upotrebe te strukture.

Rešenje