OPERACIJSKI SUSTAVI 28.6.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. Restoran na jezeru je sa ostatkom svijeta povezan uskom cestom na kojoj se ne mogu mimoići 2 automobila. U taj restoran dolaze ljudi sa osobnim automobilima, putnici u autobusima i vozači kamiona te se zadržavaju neko vrijeme. Za to vrijeme njihova vozila su parkirana ispred restorana. Problem je u tome što restoran ima ograničen kapacitet prostora za vozila i to u iznosu od 12 parkirnih jedinica. Osobni automobil zauzima jedno mjesto, autobus 2, i kamion 3 mjesta. (Npr. jedna od dozvoljenih kombinacija je 3 autobusa, jedan kamion i 3 osobna automobila i sl.) Riješite problem sinkronizacije dolaska, zadržavanja i odlaska iz restorana. (Napomena: Možemo smatrati da su vozila u svakom trenutku optimalno razmještena na parkiralištu, tako da problem parkirališne ”fragmentacije” ne postoji.)

3. Definirajte pojam signala i napišite (u pseudo kodu) algoritam za obradu prekida različitih prioriteta. (Napišite samo prekidnu rutinu). Objasnite kako onemogućiti pojedine prekide i zašto je to ponekad potrebno napraviti.

4. Nabrojite i objasnite strategije zamjena stranica.

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: 1.7.2002 u 13:00

Boris Milašinović