OS1/Februar 2015

Izvor: SI Wiki
< ОС1
Datum izmene: 20. jul 2022. u 00:00; autor: KockaAdmiralac (razgovor | doprinosi) (Formatiranje)
(razl) ← Starija izmena | Trenutna verzija (razl) | Novija izmena → (razl)
Pređi na navigaciju Pređi na pretragu

Zadaci na stranici predmeta.

1. zadatak

Postavka

Šta je bio osnovni motiv za uvođenje multiprogramiranja u računarske sisteme?

Rešenje

Videti zadatak iz septembarskog roka 2011.

2. zadatak

Postavka

Na asembleru nekog zamišljenog dvoadresnog RISC procesora sa load/store arhitekturom napisati program koji vrši prenos bloka podataka iz memorije na izlazni uređaj tehnikom programiranog izlaza korišćenjem prekida. Samostalno usvojiti potrebne detaljne pretpostavke.

Rešenje

main:   LD R1, blockAddr
        LD R2, cnt
        LD R3, #0
        ST [ctrl], #0..1
wait:   CMP R3, #1
        JNZ wait
        
intr:   LD R0, [R1]
        ST [data], R0
        INC R1
        DEC R2
        JNZ ret
        ST R3, #1
        ST [ctrl], #0
ret:    RTI

3. zadatak

Postavka

Korišćenjem Unix sistemskih poziva fork() i execlp() napisati program koji prima jedan celobrojni argument i koji, ukoliko se proces pokrene sa parametrom -c, kreira još jedan isti takav proces, samo bez parametra, a u suprotnom se samo završava. Sistemski poziv execlp prima argumente komandne linije:

int execlp(char const *file, char const *arg0, ...)

Rešenje

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

4. zadatak

Postavka

Napisati kod za međusobno isključenje kritične sekcije korišćenjem binarnih semafora.

Rešenje

var mutex : Semaphore := 1;

process P
begin
    loop
        wait(mutex);
        <critical>
        signal(mutex);
        <non-critical>
    end
end P;

5. zadatak

Postavka

Objasniti zašto linkeru ne predstavlja nikakav problem prilikom povezivanja to što fajl a.obj uvozi simbol koji je definisan u b.obj, a b.obj uvozi simbol koji je definisan u a.obj. Kako se ova situacija rešava?

Rešenje

U prvom prolazu će se napraviti tabele simbola, a u drugom prolazu razrešiti vrednosti tih promenljivih na mestima korišćenja.

6. zadatak

Postavka

U nekom sistemu primenjuje se best-fit algoritam kontinualne alokacije memorije. Inicijalno je prostor veličine 512KB potpuno slobodan za alokaciju korisničkih procesa. Potom su različiti procesi zadavali sledeće zahteve (slovna oznaka označava proces koji je postavio zahtev, brojna oznaka označava veličinu alociranog prostora u KB, a minus označava gašenje procesa i oslobađanje njegove memorije)

A128, B32, C256, D64, A-, E16, F64, B-

Odgovoriti na sledeća pitanja koja se odnose na stanje memorije nakon ove sekvence zahteva:

  1. Koliko je ukupno slobodnih fragmenata?
  2. Kolika je veličina najmanjeg slobodnog fragmenta?
  3. Kolika je veličina najvećeg slobodnog fragmenta?

Rešenje

  1. 2
  2. 16KB
  3. 96KB

7. zadatak

Postavka

Virtuelna memorija organizovana je stranično, a adresibilna jedinica je bajt. Virtuelna adresa je 32-bitna, stranica je veličine 4KB, deskriptor stranice je 32-bitni, a PMT je organizovana u dva nivoa, pri čemu je polje za straničenje prvog nivoa veličine 8 bita. Koliki prostor bi ukupno zauzimala PMT nekog procesa kada bi:

  1. proces koristio ceo svoj virtuelni adresni prostor?
  2. proces koristio samo dve stranice, prvu i poslednju u adr. prostoru?

Rešenje

Stranica je 4KB, tako da joj je potrebno 12 bita za adresiranje bajtova, odnosno pomeraj. Polje za straničenje prvog nivoa je 8 bita, tako da je struktura adrese VA(32): page1(8) page2(12) offset(12).

  1. ceo prostor:
  2. prva i poslednja stranica u virtuelnom adresnom prostoru:

8. zadatak

Postavka

Umesto tehnike spooling, pristup uporednih procesa štampaču u nekom sistemu omogućuje se međusobnim isključenjem pomoću operacije rezervacije: svaki proces, pre nego što zatraži bilo koju operaciju sa štampačem, mora da ga rezerviše, a tu rezervaciju otpušta tek kada završi sa celim jednim poslom štampe. Pored eventualnog sprečavanja mrtve blokade, o čemu još mora da vodi računa operativni sistem da se ne bi dešavalo neograničeno zauzeće štampača.

Rešenje

Treba voditi računa i o tome da li je proces koji trenutno koristi uređaj "otkazao" ili postao trajno suspendovan bez oslobađanja uređaja.

9. zadatak

Postavka

Izvod iz jednog uputstva za Unix fajl sistem i dodelu prava pristupa fajlu iz komandne linije:

To change the mode of a file, use the chmod command. The general form is chmod X@Y file1 file2 ... where: X is any combination of the letters 'u' (for owner), 'g' (for group), 'o' (for others), 'a' (for all; that is, for 'ugo'); @ is either '+' to add permissions, '-' to remove permissions, or '=' to assign permissions absolutely; and Y is any combination of 'r', 'w', 'x'.

Na primer, komanda chmod u=rx file daje vlasniku prava rx, ali ne i pravo w.

Napisati komande koje za dati fajl postavljaju prava na sledeći način:

  1. grupi i ostalima oduzimaju prava na rx, ali ne i na w
  2. svima dodaju pravo na izvršavanje

Rešenje

  1. chmod go-rx file
  2. chmod a+x file

10. zadatak

Postavka

Neki fajl sistem podržava kombinovano indeksiran pristup alokaciji fajlova, pri čemu FCB sadrži 256 ulaza sa direktnim indeksom (sadrže brojeve blokova za podatke). Ako sadržaj fajla preraste veličinu koju podržava ovaj indeks nultog nivoa, za blokove preko te veličine postoji indeks prvog nivoa sa 256 ulaza u FCB; svaki od tih ulaza sadrži pokazivač na indeks drugog nivoa u kome je po 256 ulaza sa pokazivačima na blokove sa sadržajem. Koliki je maksimalni kapacitet fajla u blokovima? (Odgovor dati kao izraz.)

Rešenje