ОС1/Септембар 2012

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

Zadaci na stranici predmeta.

1. zadatak

Postavka

Kod kakvih sistema se najpre pojavljuje time sharing i sa kakvim motivom?

Rešenje

Time sharing se najpre pojavljuje kod interaktivnih višekorisničkih sistema. Motiv je da se postigne ravnomerniji odziv na akcije više korisnika nego bez time sharing-a.

2. zadatak

Postavka

Korišćenjem funkcija setjmp i longjmp iz standardne C biblioteke realizovati operaciju wait na binarnom semaforu u školskom jezgru

Rešenje

Videti zadatak iz julskog roka 2012.

3. zadatak

Postavka

Korišćenjem sistemskih poziva fork() i execlp() napisati program P koji pokreće proces nad programom u fajlu čiji je naziv zadat kao argument izvršavanja programa P.

Rešenje

int main(int argc, char* argv[]) {
    if (argc < 2) {
        return -1;
    }
    pid_t pid = fork();
    if (pid < 0) {
        return -2;
    }
    if (pid == 0) {
        execlp(argv[1]);
        return -3;
    } else {
        wait(0);
    }
    return 0;
}

4. zadatak

Postavka

Proces P treba da sačeka da sva tri procesa X, Y i Z ispune neki svoj uslov, u bilo kom redosledu. Napisati deo koda procesa P i bilo kog od druga tri procesa, uz potrebne deklaracije, koji obezbeđuju ovu uslovnu sinhronizaciju pomoću jednog standardnog brojačkog semafora.

Rešenje

Videti zadatak iz februarskog roka 2012.

5. zadatak

Postavka

Koja dva podatka čine memorijski kontekst procesa kod kontinualne alokacije memorije za proces sa dinamičkim preslikavanjem adresa?

Rešenje

  • Segment Base pokazivač - govori koja je početna adresa od koje se preslikava memorija
  • Limit pokazivač - sadrži ili veličinu segmenta ili poslednju adresu u njemu, zavisno od implementacije hardvera

6. zadatak

Postavka

Virtuelni adresni prostor sistema je 8GB, adresibilna jedinica je 16-bitna reč, a virtuelni adresni prostor je organizovan stranično sa stranicom veličine 32KB. Fizički adresni prostor je veličine 2GB. Tabele preslikavanja stranica su organizovane u dva nivoa, s tim da tabela drugog nivoa ima 1K ulaza. Ako deskriptori u PMT i prvog i drugog nivoa sadrže samo broj okvira u koji se stranica preslikava i ništa više (posebna vrednost označava da preslikavanje nije moguće), koliko bajtova zauzima jedna PMT prvog, a koliko drugog nivoa?

Rešenje

VA(32): Page(18), Offset(14)

PA(30): Block(16), Offset(14)

Pošto imamo (256K) stranica,a svaki PMT drugog nivoa sadrži pokazivač na 1K stranica, treba nam 256 PMT-a drugog nivoa, što znači da PMT prvog nivoa ima 256 ulaza. Obratite pažnju da svaki od ulaza u sebi sadrži samo broj bloka tj samo 16 bita odnosno dva bajta.

PMT Prvog Nivoa:

PMT Drugog Nivoa:

7. zadatak

Postavka

Zaokružiti slovo ispred one ili onih podataka koji nisu neophodni u deskriptoru stranice u PMT koji koristi hardver za preslikavanje adresa kod virtuelne memorije:

  1. Informacija da preslikavanje nije moguće izvršiti
  2. Adresa bloka na disku u kome se nalazi stranica
  3. Informacija da je stranica deljena sa drugim procesom tehnikom copy-on-write
  4. Informacija da je stranica zabranjena za izbacivanje jer se koristi kao I/O bafer
  5. Da li je dozvoljen upis u stranicu
  6. Broj okvira u koji se stranica preslikava.

Rešenje

Podaci 1 i 5 sigurno nisu neophodni, a za samo preslikavanje nije neophodan ni podatak 4, mada iz pitanja nije baš najjasnije da li je se ovde misli šta je neophodno samo za preslikavanje.

8. zadatak

Postavka

Na asembleru nekog zamišljenog RISC procesora sa LOAD/STORE arhitekturom napisati program koji prenosi blok podataka zadate dužine na zadatu adresu sa ulaznog uređaja korišćenjem programiranog ulaza/izlaza sa prozivanjem (polling).

Rešenje

main:   LD R1, blockAddr
        LD R2, cnt
        ST [ctrl], #0..1
wait:   LD R0, [status]
        AND R0, #1..0
        JZ wait
        LD R0, [data]
        INC R1
        DEC R2
        JNZ wait
        ST [ctrl], #0

9. zadatak

Postavka

U fajl podsistemu nekog operativnog sistema ne vodi se tabela otvorenih fajlova za svaki proces, već postoji samo jedna globalna tabela otvorenih fajlova za ceo sistem. Drugim rečima, ne postoji nikakva informacija o upotrebi otvorenog fajla lokalna (privatna) za pojedinačni proces, već su sve takve informacije globalno deljene. Kako treba da izgleda API funkcija za čitanje bloka podataka dužine len iz nekog fajla, da bi se procesu obezbedila mogućnost sekvencijalnog čitanja svih podataka iz fajla?

Rešenje

IOStatus readFile(FHANDLE fh, void* buffer, long len, long offset);

10. zadatak

Postavka

Posmatra se disk kapaciteta 80MB i blokom veličine 1KB. Ako se za evidenciju slobodnog prostora koristi bit-vektor sa maksimalnom kompakcijom (svih 8 bita u bajtu su iskorišćeni itd.), koliko celih blokova treba zauzeti na disku za smeštanje ovog vektora?

Rešenje

blokova