Pr-1st-1.1-m04-Slajd22

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Kanały FIFO

Kanały FIFO

W ogólności, każda wiadomość jest przetwarzana (interpretowana) w pewnym kontekście, określonym często przez wiadomości wcześniej odebrane. Brak właściwego kontekstu, spowodowany na przykład zmianą kolejności przesyłanych wiadomości, może prowadzić do niewłaściwej interpretacji wiadomości i w efekcie do błędów przetwarzania. Jeżeli, dla ilustracji, rozważymy system rezerwacji miejsc lotniczych, to właściwym kontekstem dla wiadomości anulującej rezerwację, jest oczywiście wiadomość zgłoszenia rezerwacji. Wiadomość o anulowaniu nie powinna być odebrana i standardowo przetwarzana przez system rezerwacji, jeśli nie dotarło jeszcze odpowiednie zgłoszenie. Dla takiej aplikacji wskazana byłaby zatem komunikacja gwarantująca porządek odbioru zgodny z kolejnością wysłania - porządek FIFO. Dokładniej, należałoby zagwarantować w sposób niewidoczny dla procesów aplikacyjnych, że jeżeli proces wysyła do wiadomość przed wysłaniem do wiadomości , to proces nie odbierze (nie otrzyma) dopóty, dopóki nie odbierze .

Mechanizm gwarantujący właściwą kolejność interpretowania wiadomości można oczywiście budować w procesy aplikacyjne, lecz wówczas to projektant aplikacji musi rozwiązać wspomniany problem. Wskazane jest jednak często inne postępowanie, polegające na skonstruowaniu, na przykład przez odpowiednią rozbudowę monitorów , warstwy programowej pośredniczącej między środowiskiem komunikacyjnym nie zachowującym uporządkowania FIFO, a procesami aplikacyjnymi . Warstwa taka - przechowując i ewentualnie wstrzymując w buforach wiadomości, które dotarły zbyt wcześnie - zapewniałaby dostarczenie wiadomości do procesów aplikacyjnych w porządku FIFO. Ideę takiego podejścia ilustruje slajd kolejny, a jego przykładową implementację algorytm przedstawiony na kolejnych slajdach. Formalnie, warstwa monitorów powinna zagwarantować dla wszystkich procesów i każdej wiadomości, że:


<< Poprzedni slajd | Spis treści | Następny slajd >>