OPERACIJSKI SUSTAVI 10.7.2002.

1. Objasnite razliku izmedu donja dva programa. 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. Zamislimo brijačnicu u kojoj radi samo jedan brijač. On ima jednu stolicu na kojoj brije ljude i n stolica za čekanje. U slučaju da nema posla naš brijač sjedne na stolicu i zaspe. Kada netko dode na brijanje mora probuditi brijača. Ako dode još osoba, one sjedaju na slobodna mjesta ili izlaze iz brijačnice (u slučaju da su sva mjesta za čekanje zazuzeta). Riješite problem sinkronizacije za brijača i njegove mušterije.

3. Objasnite princip rada binarnog semafora i napisati jezgrine funkcije za rad sa binarnim semaforima.

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: danas, 10.7.2002 u 16:30

Boris Milašinović