ОС1/Јун 2011

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

Zadaci na stranici predmeta.

1. zadatak

Postavka

Dati kratke definicije multiprocesorskog sistema i distribuiranog sistema.

Rešenje

Videti prvi zadatak iz julskog roka 2012. godine.

2. zadatak

Postavka

Koji je razlog deobe procesorskog vremena (time sharing) kod interaktivnih sistema?

Rešenje

Ravnomerniji odziv na akcije više korisnika nego bez deobe vremena.

3. zadatak

Postavka

Zašto je stek deo konteksta izvršavanja programa?

Rešenje

Stek predstavlja deo konteksta izvršavanja programa zato što se prilikom poziva bilo kog potprograma u programu na steku pamti mesto odakle je potprogram pozvan kako bi se po povratku moglo nastaviti odakle se stalo.

4. zadatak

Postavka

Napisati deo koda koji obezbeđuje kritičnu sekciju pomoću brojačkih semafora, uz dozvolu konkurentnog izvršavanja kritične sekcije do N uporednih procesa.

Rešenje

var mutex : Semaphore := N;
process P
begin
    loop
        wait(mutex);
        <critical section>
        signal(mutex);
        <non-critical section>
    end
end

5. zadatak

Postavka

Korišćenjem sistemskih poziva fork() i execlp() napisati C program koji kreira proces nad programom u fajlu čije je ime zadato argumentom komandne linije.

Rešenje

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

6. zadatak

Postavka

Memorija nekog računara organizovana je stranično, sa stranicom veličine 4KB. Adresibilna jedinica je bajt, a virtuelna adresa je 32-bitna. Fizička adresa je veličine 32 bita. Ako je PMT organizovana u dva nivoa, s tim da su veličine polja za broj ulaza u tabele oba nivoa isti, kolika je veličina (u bajtovima) PMT prvog nivoa?

Rešenje

  • VA(32): 10, 10, 12
  • Ulaz je veličine 32b tj. 4B

7. zadatak

Postavka

Da li linker prilikom povezivanja sa ciljem dobijanja izvršnog programa (.exe) pravi razliku između fajlova tipa .obj i tipa .lib?

Rešenje

Linker ne pravi razliku između .obj i .lib fajlova prilikom povezivanja. Razlika je jedino što je .obj fajl nastao prevođenjem jednog fajla dok je lib fajl nastao povezivanjem više objektnih, moguće i više drugih fajlova.

8. zadatak

Postavka

Kojom tehnikom se znakovno orijentisani ulazni uređaj može učiniti logički (virtuelno) blokovski orijentisanim?

Rešenje

Tehnikom baferisanja.

9. zadatak

Postavka

Neki proces izvršava redom sledeće sistemske pozive. Pod pretpostavkom da korisnik u čije ime se izvršava ovaj proces ima pravo pristupa do oba fajla i na čitanje i na upis, i da oba poziva za otvaranje fajlova uspevaju, navesti koji od preostalih poziva će biti uspešan, a koji neuspešan (upisati na liniji pored poziva).

FHANDLE f1 = fopen("x.doc", read);
FHANDLE f2 = fopen("y.doc", read | write);
  1. fread(f1, buffer1, n1);
  2. fwrite(f1, buffer2, n2);
  3. fread(f2, buffer1, n1);
  4. fwrite(f2, buffer2, n2);

Rešenje

  1. uspešan
  2. neuspešan
  3. uspešan
  4. uspešan

10. zadatak

Postavka

Korišćenjem podataka iz koje tabele otvorenih fajlova sistem proverava pravo pristupa za pozive iz prethodnog zadatka (fread i fwrite), u globalnoj tabeli ili u tabeli koja je deo konteksta datog procesa?

Rešenje

U tabeli koja je kontekst datog procesa.