external Data Representation

Podobne dokumenty
Sun RPC/XDR. Dariusz Wawrzyniak 1

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1

external Data Representation

Tunelowanie, kapsułkowanie, XDR. 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR.

76.Struktura oprogramowania rozproszonego.

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Tworzenie aplikacji rozproszonej w Sun RPC

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Sieciowa komunikacja procesów - XDR i RPC

Język ludzki kod maszynowy

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

Programowanie obiektowe

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Funkcje zawarte w bibliotece < io.h >

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

Funkcje zawarte w bibliotece < io.h >

Projektowanie klas c.d. Projektowanie klas przykład

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Wstęp do programowania 1

Wprowadzenie do szablonów klas

Podstawy programowania skrót z wykładów:

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Podstawy programowania w języku C++

Inżynieria Wytwarzania Systemów Wbudowanych

PROGRAMOWANIE w C prolog

Część 4 życie programu

Szablony funkcji i szablony klas

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

MATERIAŁY DO ZAJĘĆ II

Podstawowe części projektu w Javie

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Microsoft IT Academy kurs programowania

Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1

Programowanie strukturalne język C - wprowadzenie

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Biblioteka standardowa - operacje wejścia/wyjścia

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

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

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Algorytmy i struktury danych. wykład 1

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Różności w C++ Marek Pudełko

Podstawy programowania komputerów

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Programowanie z użyciem RPC

Języki programowania - podstawy

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

ROZDZIAŁ 2. Operatory

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy programowania w języku C++

Wykład 1

Tablice w argumentach funkcji. Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku

Programowanie strukturalne i obiektowe

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Struktury. Przykład W8_1

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Tablice, funkcje - wprowadzenie

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Podstawy programowania w języku C++

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

Zajęcia 4 procedury i funkcje

I - Microsoft Visual Studio C++

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

1. Wprowadzanie danych z klawiatury funkcja scanf

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Programowanie Proceduralne

Formaty plików graficznych - wprowadzenie

Język C zajęcia nr 11. Funkcje

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Pliki. Informacje ogólne. Obsługa plików w języku C

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

Podstawy programowania w języku C++

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)

Wykład :37 PP2_W9

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

RPC ZDALNE WYWOŁYWANIE PROCEDUR (ang. Remote Procedure Calls)

Wskaznik. Przekazywanie wyniku funkcji przez return. Typy i zmienne wskaznikowe. Zmienna wskazywana. typ * nazwa_wkaznika

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

Programowanie i struktury danych

PARADYGMATY PROGRAMOWANIA Wykład 2

Programowanie komputerowe. Zajęcia 4

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

2 Przygotował: mgr inż. Maciej Lasota

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Podstawy Programowania

Transkrypt:

Remote Procedure Call external Data Representation Opis standardu RFC 1014 Kanoniczna reprezentacja danych oparta na formacie IEEE Deklaratywny język opisu struktur danych (zbliżony do języka C) Koncepcja konwersji oparta na potokach miejscach przechowywania danych w formacie XDR filtrach procedurach konwersji pomiędzy własnym formatem maszyny a formatem kanonicznym (w obu kierunkach) 2 Narzędzia Przetwarzania Rozproszonego 1

Potok jest miejscem składowania danych XDR, a dokładniej środkiem dostępu do nich w celu: zapisu potok kodujący odczytu potok dekodujący Rodzaje potoków: potok na standardowym wejściu-wyjściu na otwartym pliku potok w pamięci w obszarze pamięci opisanym przez adres i rozmiar w bajtach potok komunikatów (rekordów) na strumieniu danych, zdefiniowanym wraz z procedurami obsługi tego strumienia (zapis, odczyt) 3 Filtr jest procedurą konwersji, służącą do realizacji dostępu do danych w potoku w celu zapisu (kodującą) lub odczytu (dekodującą) zależnie od kierunku działania potoku. Rodzaje filtrów filtr prosty służy do konwersji typów prostych filtr złożony służy do konwersji typów złożonych (np. tablicowych, wskaźnikowych) ź filtr pochodny połączenie innych filtrów w ramach jednej procedury filtrującej 4 Narzędzia Przetwarzania Rozproszonego 2

filtry potok kodujący potok dekodujący 5 Filtr dla: typów prostych: bool_ t,, char,, short,, int,, long, (również bez znaku) float, double typu wyliczeniowego (enum) typu void Ogólna postać procedury filtrującej (na przykładzie typu unsigned int): bool_t xdr_u_int(xdr* xdrs, unsigned int *ptr); 6 Narzędzia Przetwarzania Rozproszonego 3

Filtr do konwersji tablic bajtów o ustalonej lub zmiennej wielkości xdr_opaque, xdr_bytes tablic elementów określonego typu o ustalonej lub zmiennej wielkości xdr_vector, xdr_array łańcuchów znaków xdr_string, xdr_wrapstring typów wskaźnikowych xdr_reference, xdr_pointer unii xdr_union (w praktyce dla statycznie zdefiniowanych typów unijnych stosowany jest filtr pochodny) 7 Ogólna postać filtru złożonego: xdr_typ(xdr typ(xdr* xdrs, ptr,..., [xdrproc_t elproc]); W przypadku typu statycznego (ustalona zajętość pamięci) wskaźnik ptr, ma postać char *ptr, w przypadku typu o zmiennej wielkości (konieczność dynamicznej alokacji pamięci) char **ptr. Jeśli typ podstawowy (w przypadku tablic, wskaźników) nie jest z góry określony, konieczne jest wskazanie filtru XDR do konwersji elementu typu podstawowego. 8 Narzędzia Przetwarzania Rozproszonego 4

xdr_array(xdrs, arrp, sizep, maxsize, elsize, elproc) XDR *xdrs; char **arrp; u_int *sizep, maxsize, elsize; xdrproc_t elproc; xdr_vector(xdrs, arrp, size, elsize, elproc) char *arrp; u_int size, elsize; // pozostae parametry j.w. xdr_bytes(xdrs, sp, sizep, maxsize) char **sp; // pozostae parametry j.w. xdr_opaque(xdrs, cp, cnt) char *cp; u_int cnt; 9 xdr_string(xdrs, sp, maxsize) XDR *xdrs; char **sp; u_int maxsize; xdr_wrapstring(xdrs, sp) xdr_string(xdrs, sp, MAXUN.UNSIGNED ); xdr_wrapstring nie wymaga podania rozmiaru (liczby znaków łańcucha) 10 Narzędzia Przetwarzania Rozproszonego 5

xdr_reference(xdrs, pp, size, proc) XDR *xdrs; char **pp; u_int size; xdrproc_t proc; xdr_pointer(xdrs, objpp, objsize, xdrobj) XDR *xdrs; char **objpp; u_int objsize; xdrproc_t xdrobj; xdr_pointer w przeciwieństwie do xdr_reference interpretuje wskaźnik pusty, co umożliwia obsługę rekurencyjnych struktur danych 11 Definicja struktury struct struktura { int x; long y; char c; short s; Filtr XDR bool_t xdr_struktura (XDR *xdrs, struktura *objp) { if (!xdr_int (xdrs, &objp->x)) return FALSE; if (!xdr_long (xdrs, &objp->y)) return FALSE; if (!xdr_char (xdrs, &objp->c)) return FALSE; if (!xdr_short (xdrs, &objp->s)) return FALSE; return TRUE; } 12 Narzędzia Przetwarzania Rozproszonego 6

Przekazanie pustego wskaźnika typu char** przy konwersji dekodującej spowoduje dynamiczną alokację pamięci przez filtr XDR. Zwolnienie obszaru dynamicznie zaalokowanej pamięci przez filtr XDR musi nastąpić w programie aplikacyjnym. Ogólna postać funkcji zwalniania pamięci: xdr_free(xdrproc_t proc, char* objp); 13 Potok na standardowym wejściu-wyjściu: void xdrstdio_create(xdr *xdrs, FILE *file, enum xdr_op op); Potok w pamięci: void xdrmem_create(xdr *xdrs, char *addr, u_int size, enum xdr_op op); Potok komunikatów: void xdrrec_create(xdr *xdrs, u_int sendsize, u_int recvsize, char *handle, int (*readit)(char*,char*,int), int (*writeit)(char*,char*,int)); 14 Narzędzia Przetwarzania Rozproszonego 7

Ustalenie kierunku potoku musi nastąpić po jego utworzeniu (np. xdrs -> x_op = XDR_ENCODE) Rozmiary buforów (parametry sendsize i recvsize) mogą mieć wartość 0, co oznacza przyjęcie wartości domyślnych. Gdy konieczne jest opróżnienie bufora wyjściowego (wysłanie danych) lub zapełnienie bufora wejściowego, wywoływana jest odpowiednia funkcja (writeit, readit) z trzema parametrami: uchwytem handle adresem bufora liczbą bajtów do zapisu/odczytu 15 Oznaczenie końca rekordu (przy zapisie) xdrrec_endofrecord(xdr *xdrs, int sendnow); Pominięcie reszty rekordu (przy odczycie) xdrrec_skiprecord(xdr *xdrs); Sprawdzenie zakończenia strumienia (przy odczycie) xdrrec_eof(xdr *xdrs); 16 Narzędzia Przetwarzania Rozproszonego 8

XDR (rpcgen) stałe const MAX = 512; typy wyliczeniowe enum COLOR { red = 1, green = 2, blue = 4 język C #define MAX 512 enum COLOR { red = 1, green = 2, blue = 4 typedef enum COLOR COLOR; 17 XDR (rpcgen) stuktury struct ST { int a; int b; język C struct ST { int a; int b; typedef struct ST ST; 18 Narzędzia Przetwarzania Rozproszonego 9

XDR (rpcgen) unie union UN switch (int d) { case 1: int a; case 2: char b; default: short c; język C struct UN { int d; union { int a; char b; short c; } UN_u; typedef struct UN UN; 19 XDR (rpcgen) tablice typedef int tabf[10]; typedef int tabv<10>; podobnie tablice bajtów typedef opaque btf[10]; typedef opaque btv<10>; łańcuchy znaków typedef string s10<10>; typedef string sbo<>; język C typedef int tabf[10]; typedef struct { u_int tabv_len; int *tabv_val; } tabv; typem bazowym w jest wówczas char 20 Narzędzia Przetwarzania Rozproszonego 10