Programowanie współbieżne i rozproszone/PWR Ćwiczenia 1: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Mengel (dyskusja | edycje)
mNie podano opisu zmian
Mengel (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
Oto przykładowy program
== Zadanie ==
 
=== Treść ===
{|
Uruchamiamy współbieżnie dwa następujące procesy:
{|
|
|
  '''process''' P1;
  '''process''' P1;
Linia 7: Linia 8:
   '''while''' true '''do'''  
   '''while''' true '''do'''  
   '''begin'''
   '''begin'''
     własne_sprawy;
     <tt>własne_sprawy</tt>;
     sekcja_krytyczna;
     <tt>protokół_wstępny</tt>;
    <tt>sekcja_krytyczna</tt>;
    <tt>protokół_końcowy</tt>;
   '''end'''
   '''end'''
  '''end''';
  '''end''';
Linia 16: Linia 19:
   '''while''' true '''do'''  
   '''while''' true '''do'''  
   '''begin'''
   '''begin'''
     własne_sprawy;
     <tt>własne_sprawy</tt>;
     sekcja_krytyczna;
     <tt>protokół_wstępny</tt>;
    <tt>sekcja_krytyczna</tt>;
    <tt>protokół_końcowy</tt>;
   '''end'''
   '''end'''
  '''end''';  
  '''end''';  
|}
|}
 
Chcemy zapewnić, że w tym samym czasie co najwyżej jeden z nich
wykonuje fragment programu oznaczony jako ''sekcja_krytyczna''. Jakie
instrukcje należy umieścić w protokołach, aby zrealizować ten
cel? Nie dysponujemy żadnymi mechanizmami synchronizacyjnymi, więc protokoły
powinny umiejętnie wykorzystać zmienne globalne oraz instrukcje
języka programowania.

Wersja z 08:51, 9 cze 2006

Zadanie

Treść

Uruchamiamy współbieżnie dwa następujące procesy:

process P1;
begin
  while true do 
  begin
    własne_sprawy;
    protokół_wstępny;
    sekcja_krytyczna;
    protokół_końcowy;
  end
end;
process P2;
begin
  while true do 
  begin
    własne_sprawy;
    protokół_wstępny; 
    sekcja_krytyczna;
    protokół_końcowy;
  end
end; 

Chcemy zapewnić, że w tym samym czasie co najwyżej jeden z nich wykonuje fragment programu oznaczony jako sekcja_krytyczna. Jakie instrukcje należy umieścić w protokołach, aby zrealizować ten cel? Nie dysponujemy żadnymi mechanizmami synchronizacyjnymi, więc protokoły powinny umiejętnie wykorzystać zmienne globalne oraz instrukcje języka programowania.