OPERACIJSKI SUSTAVI 18.2.2002.

1. Ideja ova dva programa je bila kreirati 3 potprocesa. Medutim samo jedan je točan. Objasnite koji i zašto, odnosno napišite što će donji programi ispisati.

  for (i=0; i<3; i++){
       pid = fork();
       if (pid == 0){
           printf(”<Child created>\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(”<Child created>\n”);
                                                exit(0);
                                            }
                                            printf(”Izasao iz petlje\n”);

2. Prepostavimo da imamo dvije skupine ljudi A i B. Za uspješno izvršavanje odredenih poslova trebaju sudjelovati osobe iz obje grupe i to na sljedeći način. Proizvoljna osoba (nazovimo ga kordinator akcije) prvo bira neku osobu iz skupine A. Nakon što bude odabrana osoba iz skupine A, ona bira odgovarajuću osobu iz skupine B (način odabira nije bitan). Odabrana osoba iz skupine A i skupine B, zajedno sa kordinatorom rješavaju problem. Po završetku posla, ovaj postupak se ponavlja s nekim drugim osobama. Svaka osoba neka predstavlja neki proces, koji ispisuje poruke da se kreirao, zatim da obavlja posao, te da je završio rad. Pomoću semafora riješite problem sinkronizacije ovih procesa, ako je poznato da u svakom trenutku na sustavu može postojati samo jedan kordinator akcije uz sljedeće uvjete:

a) kordinator akcije je uvijek isti

b) po završetku posla kordinator se može promijeniti.

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_{1} < D_{j} & j ∈ \{3, 5, 6\} \\ D_{2} < D_{j} & j ∈ \{4, 5\} \\ D_{3} < D_{j} & j ∈ \{5, 6\} \\ D_{7} < D_{j} & j ∈ \{2, 3, 4, 5, 6\} \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. Napišite program koji množi dvije kvadratne matrice reda n u 4 potprocesa.(Svaki proces računa svoj dio rezultirajuće matrice ). Učitavanje matrice i ispis rezultata radi se u glavnom programu.

5. Pomoću semafora ostvariti sinkronizaciju sedam procesa prema zadanom grafu (npr. Z3 smije početi tek kada završe Z1 i Z2). Zadatak koji obavlja svaki od procesa dan je pseudokodom:

proces Z(i) /* i = [1..7] */
    za j = 1 do 20-i radi
        ispisi (i, j)
kraj.

Detaljno objasnite izvodenje pojednih operacija na semaforima. (Npr. kako simulirati negativne vrijednosti na semaforu i sl.)

Rezultati: 20.2.2002 u 15:30

Boris Milašinović