Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij proces (int pid){ int stat; stat = kill(pid, 9); return stat; 2 żądanie a main(int argc,char** argv){ int id, status; t id = atoi(argv[1]); status = zabij_proc(id); exit(status); int zabij_proces (int pid){ int stat; t stat = kill(pid, 9); return stat; programista system a 3 int zabij_proces (int pid){ main (){ int stat; int p, stat; wyślij_żądanie(pid); odbierz_żądanie (&p); // oczekiwanie na odp. stat = zabij_proc(p); odbierz_odp (&stat); wyślij_odp (stat); return stat; komunikacja sieciowa 4 Dariusz Wawrzyniak (IIPP) 1
przeźroczystość dostępu ukrycie komunikacji sieciowej jprzed aplikacją przez odpowiednie opakowanie funkcji komunikacyjnych namiastką a oraz a. gwarancja wykonania ukrywanie błędów komunikacyjnych specyfikacja interfejsu sposób opisu sygnatur procedur zdalnych (nazwy, typy parametrów) obsługa sytuacji wyjątkowych namiastka a (ang. client stub) udostępnienie aplikacji klienckiej lokalnej odpowiedzialnej za przesłanie danych do a oraz odebranie wyników namiastka a (ang. server stub) udostępnienie aplikacji po stronie a lokalnej odpowiedzialnej za odebranie identyfikatora do wywołania, parametrów, a odesłanie wyników lub zgłoszenie wyjątków 5 6 namiastka a (zdalna proc.) namiastka a oczekiwanie powrót z wywołania SELECT CHAN BLAST prot. warstwy sieciowej protokół sieć SELECT CHAN BLAST prot. warstwy sieciowej 7 żądanie wraz z argumentami lokalne wykonanie z wynikiem 8 Dariusz Wawrzyniak (IIPP) 2
przekazywanie przez wartość (ang. call-by-value) problem różnic w reprezentacji danych, np. w kodowaniu znaków, uporządkowaniu bajtów, w formatach liczb zmiennopozycyjnych itp. przekazywanie przez referencje (ang. call-byreference) problem zinterpretowania wartości wskaźnika w innej przestrzeni adresowej przekazywanie przez kopiowanie i odtwarzanie problem przetaczania (kwestia opisu struktur danych w celu prawidłowego zidentyfikowania wszystkich składowych) format kanoniczny 9 10 11 12 Dariusz Wawrzyniak (IIPP) 3
Semantyka ewentualnie brak gwarancji, procedura mogła się wykonać lub mogła się nie wykonać. Semantyka co najmniej j raz po uzyskaniu odpowiedzi (wyniku) od a ma pewność, że wywoływana procedura wykonała się co najmniej raz. Semantyka co najwyżej raz po uzyskaniu odpowiedzi (wyniku) od a wie, że wywoływana procedura wykonała się dokładnie raz. Jak należy zinterpretować przypadek wystąpienia błędu (wyjątku) w wywołaniu? Semantyka dokładnie raz niemożliwa do uzyskania, jeśli system narażony jest na awarie (np. a lub łączy). Przetwarzanie interfejsu Wiązanie a z em Obsługa komunikacji - Realizacja semantyki błędu Problem osieroconych obliczeń 13 14 Generowanie namiastki a Generowanie namiastki a Generowanie przykładowego programu a (client sample) Generowanie wzorca do implementacji procedur zdalnych (template) Generowanie plików do zarządzania kompilacją Wiązanie statyczne ma wprowadzony na stałe identyfikator komunikacyjny y a (np. para: adres IP, nr portu). Wiązanie dynamiczne uzyskuje adres a za pośrednictwem łącznika (np. portmap lub rpcbind w Sun ). 15 16 Dariusz Wawrzyniak (IIPP) 4
przekazanie identyfikatora komunikacyjnego zapytanie o identyfikator komunikacyjny rejestracja a BLAST realizuje przesyłanie dużych komunikatów poprzez p podział na mniejsze części, ę transmisję poszczególnych części i ponowne złożenie w jeden komunikat po stronie odbiorczej, CHAN synchronizuje wymianę komunikatów z żądaniami wywołania procedur oraz odpowiedziami, SELECT rozdziela i przekazuje komunikaty z żądaniami do odpowiednich procesów. 17 18 odbiorca ragment 1 ragment 2 ragment 3 ragment 4 ragment 5 ragment 6 (ost.) SRR R ragment 3 ragment 5 SRR R żądanie ż nadawca 19 20 Dariusz Wawrzyniak (IIPP) 5
żądanie ż żądanie ż żą ądanie pi ing po ong pi ing po ong 21 22 żądanie ż jeszcze żyję j jeszcze żyję j nie można zlokalizować a zgłoszenie wyjątku zaginione żądanie retransmisja żądania po upłynięciu ustalonego czasu oczekiwania zaginiona retransmisja żądania stosowanie procedur idempotentnych numerowanie żądań i retransmisja odpowiedzi awaria a przed podjęciem realizacji retransmisja żądania po wykonaniu zgłoszenie wyjątku awaria a osierocenie obliczeń 23 24 Dariusz Wawrzyniak (IIPP) 6
Eksterminacja rejestrowanie działań podejmowanych przez a na nośniku niewrażliwym na awarie i usuwanie na tej podstawie osieroconych obliczeń po restarcie a. Reinkarnacja każdy restart a rozpoczyna nową epokę (identyfikowaną przez numer kolejny), po której usuwane są wszystkie obliczenia związane z poprzednią epoką. Łagodna reinkarnacja reinkarnacja, w której usuwa się ę tylko te obliczenia rozpoczęte ę w starej epoce, dla których nie ma właściciela. Wygaśnięcie przydział określonego czasu T owi na wykonanie. Jeśli wykonanie nie zakończy się w czasie T, musi uzyskać kolejny przydział, pod warunkiem, że obliczenia nie zostały osierocone. Jeśli odczeka czas T przy restarcie, osierocone obliczenia same się zakończą. 25 26 po stronie a: odwzorowanie wywoływanej na jej j identyfikator, przekazywany y do a. po stronie a: zlokalizowanie wywoływanej na podstawie identyfikatora. Wywołanie asynchroniczne nie czeka na wynik wykonania (wykonywanie y odbywa się równolegle z przetwarzaniem po stronie a). Wywołanie zwrotne udostępnia procedurę zdalną po swojej stronie i przekazuje owi informacje umożliwiające jej (zamiana ról pomiędzy em a em). 27 28 Dariusz Wawrzyniak (IIPP) 7
żądanie wraz z argumentami żądanie wraz z argumentami lokalne wykonanie lokalne wykonanie 29 30 żądanie wraz z argumentami lokalne wykonanie zwrotnej 31 Dariusz Wawrzyniak (IIPP) 8