OPERACIJSKI SUSTAVI 16.9.2002.

1. Objasnite razliku izmedu donja dva programska odsječka. Kako izgleda hijerarhija procesa pokrenutih donjim programima i napišite što programi ispisuju?

  for (i=0; i<3; i++){
       pid = fork();
       if (pid == 0){
           printf(”<Test>\n”);
           exit(0);
       }
       printf(”u petlji %d\n”, i);
  }
  printf(”Izasao iz petlje\n”);

                                       for (i=0; i<3; i++){
                                            pid = fork();
                                            printf(”u petlji %d\n”, i);
                                       }
                                       if (pid == 0){
                                           printf(”<Test>\n”);
                                           exit(0);
                                       }
                                       printf(”Izasao iz petlje\n”);

2. Služba za korisnike neke tvrtke ima M ’pospanih’ zaposlenika koji odgovaraju na pozive korisnika te telefonsku centralu koja na čekanju može držati N poziva. Ako nemaju posla zaposlenici drijemaju na radnom mjestu dok ih telefonski poziv ne probudi. Riješite problem sinkronizacije za korisnike, zaposlenike i telefonsku centralu (u pseudo-jeziku) na način da su pozivi korisnika ravnomjerno rasporedeni na djelatnike. U slučaju da nema slobodnog djelatnika, a manje od N poziva je u listi čekanja poziv se stavlja na čekanje, a ako je već N poziva na čekanju poziv se odbija. Pozivi se mogu dogadati u isto vrijeme.

3. Sustav dretvi se sastoji od 7 dretvi D_{i}, i ∈ {1, 2, 3, 4, 5, 6, 7}. Relacija ”treba se dogoditi prije (<)” definirana je za sljedeće parove dretvi:

\begin{matrix}D_{2} < D_{j} & j ∈ \{6, 7\} \\ D_{3} < D_{j} & j ∈ \{6, 7\} \\ D_{4} < D_{j} & j ∈ \{1, 2, 6, 7\} \\ D_{5} < D_{j} & j ∈ \{2, 3, 6, 7\} \\ D_{6} < D_{j} & j ∈ \{7\} \end{matrix}

a) Objasnite pojmove ”medusobno zavisni” i ”medusobno nezavisni” zadaci u višedretvenom modelu, i izrecite uvjet medusobne nezavisnosti.

b) Nacrtajte pripadni usmjeravajući graf.

c) Napišite sve parove nezavisnih dretvi.

4. Objasnite što je Belady-eva anomalija i navedite jedan primjer.

5. Napišite program koji množi dvije kvadratne matrice reda n u 4 procesa.(Svaki proces računa svoj dio rezultirajuće matrice.) Da li nam za ovaj zadatak treba medusobno isključivanje procesa? Zašto? Objasnite u čemu bi bila razlika da smo zadatak umjesto sa više procesa rješavali pomoću više dretvi? Napomena: Program može biti pisan u psudo-jeziku. U tom slučaju funkcije za rad sa semaforima i sa zajedničkom memorijom moraju biti objašnjene i moraju biti ekvivalentne stvarnim naredbama.

Rezultati:

Boris Milašinović

borismil@math.hr