Szczecin, dn. 14 czerwiec 2000 r,
Kierunek INFORMATYKA - studia magisterskie dzienne PODSTAWY SYSTEMÓW OPERACYJNYCH - Grupa A
Imię i nazwisko:........................................................................ Ocena:
| Nr zadania' |
■ Max.liczba punktów |
Uzyskana liczba punktów |
I |
0? |
1 1 |
| • : :;2' “ • |
0.5 |
’ | |
1 .r?' 3 •• u. - |
1.5 |
.. .. ! |
i 4:,w • |
10 | |
’:5~ |
0.5 | |
1 ' 6 V |
'■0 |
.. 1 |
0.5 |
....._ ... . . ... ! | |
■ ■ ■ s • .- |
I-O 1 |
! |
Razem: |
6.5 ( |
- - - _J |
Pytanie I (0.5 punktu):
Co to jest spoooling? Dlaczego spooling jest niezbędny do przetwarzania wsadowego? Czy jest on potrzebny w systemach z podziałem czasu? Uzasadnij odpowiedz
Pytanie 2 f0.5 punktuj:
Załóżmy. *e dwa procesy współdzielą pamięć w sposób przedstawiony poniżej, Podaj możliwe wanośi wydrukowanych parametrów « oraz b dfa każdego z procesów. Przyjmij, że operacje pobierania, zachowywania oraz testowania są niepodzielne. . .
PO wykonuję;_PI wykonuje:
shared im o: shared int a:
int b: im b:
b-l; b^/00:
a—b; a-b+l:
Primfa.b): Print(a.b);
Pytanie 3 (i .5 tunktuł:
Dana jest definicja semafora uogólnionego s:
wait(s): s - s-I; if(s<0) s/eepfs): signal(s) : s - s+1; if(s<0) wakeup(s):
Zastosujmy semafor uogólniony do problemu produccnt/konsumenl (I producent i I konsument), przy czym zakładamy, iż operacja moduio zawsze daje wynik nieujemny, np. */ % 3 = (3-1)% 3*2,
se map hor? MUTEX, EMPTY FULI: (początkowo FULL~0, EMPTY‘3. MUTEX^1)
shared int buf[3J*{-!, -/, -1), |
index^0; |
kod oroduccnta: |
kod konsumenta: |
int nextp~ 100: |
int nextc~-l: |
whilefl) { |
whilefl) ! |
nextp -• nextp~3; |
wait(FULL); |
waii(EMPTY): |
wutl(MVTEX): |
wau(MUTEX): |
nextc = bufferfindex/: |
buffer(index] “ nextp: |
index — (index-t) % 3: |
index * (index+l) % 3 |
wait(MUTEX): |
signal(MUTEX): |
s ignal (EMP TY); |
signai(FULL); \ i |
printf("%d\n ", nextc): } |
(a) Wyjaśnij rolę każdego z semaforów MUTEX, FULL i EMPTY.
(b) Załóżmy, że najpierw wykonuje się producent, aż do momnetu zawieszenia się na semaforze. Przyjmijmy także, konsumnet jeszcze nie wykonywa) się, gdy wyiisowaliśmy zawartość pamięci. Podaj zawartość elementów wektora buffer, wartość każdego z semaforów oraz wszystkich pozostałych zmiennych programu.
(c) Niech po operacji listowania producent nadal będzie zawieszony na semaforze. Konsument w tym czasie wykonuje się i drukuje dwie wartości. Jakie to wartości.