Ada95 przetwarzanie rozproszone

Podobne dokumenty
Ada95 przetwarzanie rozproszone

Ada-95. Dariusz Wawrzyniak

Pakiety podprogramów Dynamiczny SQL

Język PL/SQL Pakiety podprogramów

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Wywoływanie procedur zdalnych

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Wstęp do programowania 2

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1

Zdalne wywoływanie procedur RPC 27. października 2010

15. Funkcje i procedury składowane PL/SQL

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Język PL/SQL Procedury i funkcje składowane

Wstęp do programowania 2

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Oracle PL/SQL. Paweł Rajba.

Wywoływanie procedur zdalnych

Tworzenie aplikacji rozproszonej w Sun RPC

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Wywoływanie procedur zdalnych

Wywoływanie metod zdalnych

Procedury i funkcje składowane

Aplikacje RMI

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Systemy Rozproszone Technologia ICE

Wywoływanie metod zdalnych

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie systemów czasu rzeczywistego laboratorium. Ćwiczenie 2. Temat zajęć: pakiety, zadania, synchronizacja czasowa, mechanizm spotkań

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Wstęp do programowania

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Michał Jankowski. Remoting w.net 2.0

Oprogramowanie systemów równoległych i rozproszonych. Wykład 6

Programowanie Urządzeń Mobilnych. Część II: Android. Wykład 2

Tworzenie własnych komponentów

Przykład połączenie z bazą danych

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Programowanie obiektowe

Aplikacje RMI Lab4

Wyjątki - wprowadzenie

Wprowadzenie. Dariusz Wawrzyniak 1

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

PL/SQL. Zaawansowane tematy PL/SQL

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Język PL/SQL. Rozdział 4. Procedury i funkcje składowane

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący

Serwery LDAP w środowisku produktów w Oracle

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Komunikacja i wymiana danych

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Specyfikacja API Runtime BAS 3.0

Oracle11g: Programowanie w PL/SQL

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Integracja systemów sterowania i sterowanie rozproszone 5 R

Wymagania do zdalnej instalacji agentów firmy StorageCraft

NFS jest protokołem zdalnego wywoływania procedur (RPC)

Wybrane działy Informatyki Stosowanej

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Programowanie strukturalne

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Oracle PL/SQL. Paweł Rajba.

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Podprogramy. Rozdział 11 Procedury i funkcje składowane

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Graficzny terminal sieciowy ABA-X3. część druga. Podstawowa konfiguracja terminala

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Java jako język programowania

Cele. Definiowanie wyzwalaczy

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Pakiety i interfejsy. Tomasz Borzyszkowski

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

EXSO-CORE - specyfikacja

Programowanie współbieżne i rozproszone

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Podstawy Programowania 2

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Ćwiczenia 2 IBM DB2 Data Studio

Integracja systemów sterowania i sterowanie rozproszone 5 R

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

14. Elementy systemu wykonawczego

Zaawansowane bazy danych i hurtownie danych semestr I

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

PROFESJONALNE SYSTEMY BEZPIECZEŃSTWA

Oracle PL/SQL. Paweł Rajba.

Transkrypt:

Ada95 przetwarzanie rozproszone 1. Model systemu rozproszonego 2. Partycje i jednostki kompilacji 3. Glade narzędzie gnatdist język opisu konfiguracji 4. Przykład programu rozproszonego Model systemu rozproszonego węzeł partycja jednostka biblioteczna Przetwarzanie rozproszone w języku Ada95 2

Węzły (ang. nodes) Węzły są jednostkami w modelu przetwarzania rozproszonego w Adzie, na których rezydują programy i dane. W zależności od przeznaczenia wyróżnia się węzły przetwarzające (ang. processing nodes) węzły, na których odbywa się przetwarzanie danych i na których mogą być umieszczane partycje aktywne, węzły składnice (ang. storage nodes) węzły, które składują i udostępniają dane i na których mogą być umieszczane tylko partycje pasywne. Przetwarzanie rozproszone w języku Ada95 3 Partycje Partycje są jednostkami tworzącymi program rozproszony w Adzie, umożliwiającymi komunikację rozproszoną pomiędzy różnymi węzłami. Partycja grupuje jedną lub kilka odpowiednio zaetykietowanych jednostek bibliotecznych. Rodzaje partycji: aktywne rezydują i wykonują się w węzłach przetwarzających i muszą mieć swój wątek sterowania, pasywne rezydują w węzłach-składnicach lub węzłach przetwarzających i mogą zawierać tylko jednostki zadeklarowane jako Pure lub Shared_Passive. Przetwarzanie rozproszone w języku Ada95 4

Kategorie jednostek bibliotecznych w partycjach Pure jednostka opracowana, która nie zmienia się w trakcie wykonywania programu, Shared_Passive jednostka umożliwiająca współdzielenie danych i programów przez partycje aktywne, Remote_Types jednostka podobna do Pure, ale dopuszcza zdalne typy wskaźnikowe, Remote_Call_Interface jednostka zawierająca definicję interfejsu do komunikacji pomiędzy aktywnymi partycjami, normalna jednostka biblioteczna Przetwarzanie rozproszone w języku Ada95 5 Kategoria Pure Jednostka kategorii Pure nie może zawierać deklaracji żadnej zmiennej ani definicji typu wskaźnikowego. W jednostce kategorii Pure najczęściej występują definicje stałych, typów i podprogramów, wykorzystywanych w innych jednostkach. Jednostka kategorii Pure może być powielana w wielu partycjach systemu rozproszonego. Jednostka kategorii Pure może pojawić się w kontekście dowolnej innej jednostki (dowolna inna jednostka może być od niej zależna semantycznie). Jednostka kategorii Pure może być semantycznie zależna tylko od innej jednostki kategorii Pure. Przetwarzanie rozproszone w języku Ada95 6

Kategoria Shared_Passive Obiekty jednostki kategorii Shared_Passive odwzorowywane są we współdzieloną przestrzeń adresową (np. plik, pamięć). Jednostka kategorii Shared_Passive umożliwia komunikację pomiędzy aktywnymi partycjami poprzez zapis i odczyt deklarowanych w niej obiektów współdzielonych. Jednostka kategorii Shared_Passive może być semantycznie zależna tylko od innej jednostki kategorii Pure lub Shared_Passive. Jednostka kategorii Shared_Passive nie może zawierać zadań ani obiektów chronionych z wejściami (alokowane są na partycjach pasywnych, więc nie mają sterowania) oraz wywołań zdalnych. Przetwarzanie rozproszone w języku Ada95 7 Kategoria Remote_Types W porównaniu z jednostką kategorii Pure jednostka kategorii Remote_Types umożliwia definiowanie zdalnych typów wskaźnikowych. Zdalny typ wskaźnikowy obejmuje identyfikator węzła oraz lokalizację wskazywanego obiektu na tym węźle (ang. fat pointer). Jednostki kategorii Remote_Types wykorzystywane są najczęściej do definiowanie zdalnych (rozproszonych) obiektów dostępnych przez wskaźniki oraz operacji na tych obiektach. Jednostka kategorii Remote_Types może być semantycznie zależna tylko od innej jednostki kategorii Pure, Shared_Passive lub Remote_Types. Przetwarzanie rozproszone w języku Ada95 8

Kategoria Remote_Call_Interface Jednostka kategorii Remote_Call_Interface udostępnia zdalnie wywoływane podprogramy. Przy wywołaniu zdalnego podprogramu obowiązuje semantyka co najwyżej raz (ang. at most once). Jednostka kategorii Remote_Call_Interface może też udostępniać zdalne typy wskaźnikowe. Jednostka kategorii Remote_Call_Interface może być semantycznie zależna od innej jednostki kategorii Pure, Shared_Passive, Remote_Types lub Remote_Call_Interface. Przetwarzanie rozproszone w języku Ada95 9 Asynchroniczne wywołania zdalne Wywołanie asynchroniczne występuje wówczas, gdy wywoływany zdalny podprogram (procedura) wskazana jest po stronie serwera jako asynchroniczna za pomocą deklaracji pragma Asynchronous(nazwa procedury) Procedura asynchroniczna może mieć tylko parametry wejściowe. Nie może być asynchronicznej funkcji. Wszystkie wyjątki zgłaszane podczas wykonania procedury asynchronicznej są gubione. Przetwarzanie rozproszone w języku Ada95 10

Wiązanie Wiązanie statyczne na etapie kompilacji, gdy odwołujemy się do konkretnego obiektu (procedury) zdalnego, specyfikując odpowiednio jego nazwę w programie. Wiązanie dynamiczne na etapie wykonania, gdy posługujemy się wskaźnikiem do zdalnego obiektu (procedury), którego wartość ustalana jest dopiero w czasie wykonania. Przetwarzanie rozproszone w języku Ada95 11 Narzędzie gnatdist Aneks E (DSA) specyfikacji Ada95 Reference Manual nie precyzuje wymagań odnośnie narzędzia do budowy aplikacji rozproszonych, pozostawiając swobodę decyzji w zakresie rozwiązań projektantom. Narzędzie gnatdist jest jednym z rozwiązań, stanowiącym część pakietu w Glade. Narzędzie gnatdist służy do budowania aplikacji na podstawie odpowiednio zaetykietowanych jednostek bibliotecznych oraz opisu konfiguracji tych jednostek (ich przydziału do poszczególnych węzłów). Język opisu konfiguracji oparty jest na składni języka Ada i obejmuje deklaracje poszczególnych partycji oraz definicje różnych atrybutów. Przetwarzanie rozproszone w języku Ada95 12

Narzędzie gnatdist sposób użycia 1. przygotowanie odpowiednio zaetykietowanego programu, 2. ewentualne zbudowanie aplikacji zwartej i jej przetestowanie, 3. przygotowanie opisu konfiguracji w pliku z rozszerzeniem cfg (np. conf.cfg), 4. Uruchomienie narzędzia gnatdist np.: gnatdist conf.cfg Przetwarzanie rozproszone w języku Ada95 13 Język opisu konfiguracji Słowa kluczowe języka Ada 95 są zastrzeżone (nawet gdy nie są używane w języku opisu konfiguracji) Nowe (w porównaniu z językiem Ada 95) słowa kluczowe: configuration, Partition, Channel. Konfiguracja musie mieć swoją nazwę, która jest zgodna z nazwą pliku zawierającego jej opis. Partition i Channel są traktowane jako nazwy typów danych. Przetwarzanie rozproszone w języku Ada95 14

Deklaracja konfiguracji configuration nazwa is część deklaracyjna begin ciąg instrukcji end nazwa ; Przetwarzanie rozproszone w języku Ada95 15 Składowe części deklaracyjnej deklaracja partycji deklaracja kanału komunikacyjnego pomiędzy partycjami deklaracja podprogramu klauzula reprezentacji pragma Przetwarzanie rozproszone w języku Ada95 16

Deklaracja partycji nazwa : Partition; nazwa1, nazwa2 : Partition; nazwa : Partition :=(jednostka1, jednostka2); Przetwarzanie rozproszone w języku Ada95 17 Atrybuty partycji Host statyczna lub dynamiczna specyfikacja nazwy maszyny, na której ma być uruchomiona dana partycja. Main specyfikację alternatywnej procedury głównej. Storage_Dir specyfikacja katalogu z binariami. Termination specyfikacja sposobu zakończeniu działania danej partycji (Global_Termination domyślne, Local_Termination). Reconection specyfikacja sposobu reakcji na awarie partycji. Command_Line argumenty linii poleceń przekazywane do danej partycji przy uruchamianiu. Przetwarzanie rozproszone w języku Ada95 18

Specyfikacja nazwy maszyny nazwa : Partition; for nazwa Host use nazwa_maszyny; -- statyczna function nazwa_funkcji (s: in String) return String; for nazwa Host use nazwa_ funkcji; -- dynamiczna Przetwarzanie rozproszone w języku Ada95 19 Specyfikacja procedury głównej nazwa_partycji : Partition; -- zasadnicza procedura główna procedure nazwa_procedury is in nazwa_partycji; -- alternatywna procedura główna for nazwa_ partycji Main use nazwa_ procedury; Przetwarzanie rozproszone w języku Ada95 20

Specyfikacja katalogu z binariami nazwa: Partition; for nazwa Storage_Dir use ścieżka; Przetwarzanie rozproszone w języku Ada95 21 Specyfikacja sposobu zakończeniu nazwa : Partition; for nazwa Termination use Global_Termination; for nazwa Termination use Local_Termination; for nazwa Termination use Defered_Termination; Przetwarzanie rozproszone w języku Ada95 22

Specyfikacja sposobu reakcji na awarie partycji nazwa : Partition; for nazwa Reconection use Reject_On_Restart; -- brak restartu for nazwa Reconection use Fail_Until_Restart; -- odrzucanie wywołań do momentu restartu for nazwa Reconection use Wait_Until_Restart; -- zawieszenie wywołań do momentu restartu Przetwarzanie rozproszone w języku Ada95 23 Deklaracja kanału komunikacyjnego i specyfikacja atrybutu Filter nazwa : Channel; nazwa1, nazwa2 : Channel; nazwa : Channel :=(partycja1, partycja2); for nazwa Filter use ZIP ; Przetwarzanie rozproszone w języku Ada95 24

Specyfikacja pragma Starter sposób uruchamiania zadań Ada procedura startująca w języku Ada, Shell wykorzystanie skryptu shell a, None uruchamianie ręczne, Boot_Server specyfikacja węzła startowego wg. standardu <protocół>://<dane_protokołu> np. tcp://localhost:5557. Import importowanie skryptów, jako procedur głównych programu lub procedur do określania hostów Przetwarzanie rozproszone w języku Ada95 25 pragma Starter pragma Starter (None); pragma Starter (Ada); pragma Starter (Shell); Przetwarzanie rozproszone w języku Ada95 26

pragma Boot_Server pragma Boot_Server ( "tcp", "localhost:5557"); Przetwarzanie rozproszone w języku Ada95 27 Przykład specyfikacji jednostki kategorii Remote_Call_Interface package Server is pragma Remote_Call_Interface; type Back_Reference is access procedure ( ret : Positive); procedure F1 (a,b : Positive; bptr : Back_Reference); pragma asynchronous (F1); end Server; Przetwarzanie rozproszone w języku Ada95 28

Przykład specyfikacji pakietu klienta (z zamiarem udostępniania procedury call back) package Client is pragma Remote_Call_Interface; procedure Call_Back(val : Positive); end Client; Przetwarzanie rozproszone w języku Ada95 29 Implementacja pakietu klienta with Text_IO; use Text_IO; package body Client is procedure Call_Back(val : Positive) is begin Put_Line("Client: Got the result :"&Integer'Image(val)); end Call_Back; end Client; Przetwarzanie rozproszone w języku Ada95 30

Przykład procedury głównej with Text_IO; use Text_IO; with Server; use Server; with Client; use Client; procedure start is i : Integer; begin Put_Line("Calling service"); Server.F1(3,4, Call_Back'Access); Put_Line("Call done..."); for i in Integer range 1..20 loop Put_Line("..."); Delay(0.5); end loop; Put_Line("Client tarminated..."); end start; Przetwarzanie rozproszone w języku Ada95 31 Przykład opisu konfiguracji configuration CallBack is pragma Starter (None); -- programs are launched manually. pragma Boot_Server ("tcp", "localhost:5556"); Msg_Client: Partition := (Client); Msg_Server: Partition := (Server); Procedure start is in Msg_Client; end CallBack; Przetwarzanie rozproszone w języku Ada95 32