Zdalne wywoływanie procedur 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 Dariusz Wawrzyniak 1
Zdalne wywoływanie procedur żądanie a odpowiedź a 3 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; wyślij_żądanie(pid); // oczekiwanie na odp. odbierz_odp (&stat); return stat; komunikacja } int zabij_proces (int pid){ int stat; stat = kill(pid, 9); return stat; } programista main (){ int p, stat; odbierz_żądanie (&p); stat = zabij_proc(p); wyślij_odp (stat); system } sieciowa 4 Dariusz Wawrzyniak 2
Zdalne wywoływanie procedur przeźroczystość dostępu ukrycie komunikacji sieciowej przed 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 5 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 zdalnej do wywołania, parametrów, a odesłanie wyników lub zgłoszenie wyjątków 6 Dariusz Wawrzyniak 3
Zdalne wywoływanie procedur (zdalna proc.) namiastka a namiastka a SELECT CHAN BLAST protokół SELECT CHAN BLAST prot. warstwy sieciowej sieć prot. warstwy sieciowej 7 wywołanie zdalnej oczekiwanie powrót z wywołania zdalnej żądanie wraz z argumentami odpowiedź z wynikiem lokalne wykonanie 8 Dariusz Wawrzyniak 4
Zdalne wywoływanie procedur 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) 9 format kanoniczny 10 Dariusz Wawrzyniak 5
Zdalne wywoływanie procedur 11 12 Dariusz Wawrzyniak 6
Zdalne wywoływanie procedur Semantyka co najmniej 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 zdalnej? Semantyka dokładnie raz niemożliwa do uzyskania, jeśli system narażony jest na awarie (np. a lub łączy). Semantyka ewentualnie brak gwarancji, procedura mogła się wykonać lub mogła się nie wykonać. 13 Przetwarzanie interfejsu Wiązanie a z em Obsługa komunikacji - Realizacja semantyki błędu Problem osieroconych obliczeń 14 Dariusz Wawrzyniak 7
Zdalne wywoływanie procedur 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ą 15 Wiązanie statyczne ma wprowadzony na stałe identyfikator komunikacyjny a (np. para: adres IP, nr portu). Wiązanie dynamiczne uzyskuje adres a za pośrednictwem łącznika (np. portmap lub rpcbind w Sun ). 16 Dariusz Wawrzyniak 8
Zdalne wywoływanie procedur wywołanie zapytanie o identyfikator komunikacyjny rejestracja a przekazanie identyfikatora komunikacyjnego 17 BLAST realizuje przesyłanie dużych komunikatów poprzez 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. 18 Dariusz Wawrzyniak 9
Zdalne wywoływanie procedur odbiorca fragment 1 fragment 2 fragment 3 fragment 4 fragment 5 fragment 6 (ost.) SRR fragment 3 fragment 5 SRR nadawca 19 żądanie ACK odpowiedź ACK 20 Dariusz Wawrzyniak 10
Zdalne wywoływanie procedur żądanie odpowiedź żądanie odpowiedź ACK 21 żądanie ping pong ping pong odpowiedź ACK 22 Dariusz Wawrzyniak 11
Zdalne wywoływanie procedur żądanie jeszcze żyję jeszcze żyję odpowiedź ACK 23 nie można zlokalizować a zgłoszenie wyjątku zaginione żądanie retransmisja żądania po upłynięciu ustalonego czasu oczekiwania zaginiona odpowiedź 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ń 24 Dariusz Wawrzyniak 12
Zdalne wywoływanie procedur 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ą. 25 Ł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ą. 26 Dariusz Wawrzyniak 13
Zdalne wywoływanie procedur po stronie a: odwzorowanie wywoływanej na jej identyfikator, przekazywany do a. po stronie a: zlokalizowanie wywoływanej na podstawie identyfikatora. 27 Wywołanie asynchroniczne nie czeka na wynik wykonania zdalnej (wykonywanie zdalnej 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 wywołanie (zamiana ról pomiędzy em a em). 28 Dariusz Wawrzyniak 14
Zdalne wywoływanie procedur wywołanie zdalnej żądanie wraz z argumentami lokalne wykonanie 29 wywołanie zdalnej żądanie wraz z argumentami lokalne wykonanie 30 Dariusz Wawrzyniak 15
Zdalne wywoływanie procedur wywołanie zdalnej żądanie wraz z argumentami lokalne wykonanie wywołanie zwrotnej 31 Dariusz Wawrzyniak 16