Zastosowanie narzędzia rpcgen

Wielkość: px
Rozpocząć pokaz od strony:

Download "Zastosowanie narzędzia rpcgen"

Transkrypt

1 Plan wykładu 1. Narzędzie rpcgen. 2. Generowanie programu rozproszonego. 3. Zdalny dostęp a przesyłanie plików. 4. Zasada działania Sieciowego Systemu Plików (NFS) 5. Pliki w systemie UNIX i NFS. 6. Serwer i klient NFS 7. Serwer NFS jako program RPC protokół NFS, protokół montowania, kontrola uprawnień. 8. Podstawy konfiguracji serwera i klienta NFS. 9. Inne rozwiązania: CIFS/SMB. 1

2 2 Zastosowanie narzędzia rpcgen W implementacjach Sun RPC jest dostępne narzędzie pozwalające znacznie zmniejszyć nakład pracy potrzebny do skonstruowania aplikacji rozproszonej rpcgen. Na wejściu otrzymuje on plik specyfikacji zawierający deklaracje stałych, globalnych typów danych, zmiennych globalnych i zdalnie wywoływanych procedur. Pliki kodu źródłowego otrzymane na wyjściu to przede wszystkim procedury łącznikowe dla strony klienta i serwera zawierający kod realizujący serializację argumentów, wysyłanie i odbieranie komunikatów RPC, konwersję danych pomiędzy reprezentacją natywną i zewnętrzną.

3 Procedury produkowane przez rpcgen Procedura A Procedura sprzęgająca klienta Komunikacyjna procedura łącznikowa klienta Komunikacyjna procedura łącznikowa serwera Procedura sprzęgająca serwera Procedura B Procedura łącznikowa zostaje podzielona na część komunikacyjną i sprzęgającą. Część komunikacyjna jest niemal identyczna dla wszystkich aplikacji rozproszonych. Część sprzęgająca pełni rolę interfejsu pomiędzy procedurą komunikacyjną a programem. 3

4 4 Pliki na wejściu i wyjściu programu rpcgen Nazwa pliku Zawartość plik.x plik.h plik_xdr.c plik_clnt.c plik_svc.c plik wejściowy specyfikacja zdalnego programu deklaracje typów używanych w wygenerowanym kodzie. wywołania procedur XDR używanych przez klienta i program serwera w celu w celu dokonania serializacji argumentów. łącznikowa procedura komunikacyjna strony klienta. łącznikowa procedura komunikacyjna strony serwera.

5 Pliki na wejściu i wyjściu programu rpcgen Program użytkowy klienta Procedury sprzęgająca klienta plik_clnt.c plik.h kompilator C Klient plik.x rpcgen plik_xdr.c kompilator C Serwer plik_svc.c Zdalnie wywoływane procedury Procedury sprzęgająca serwera 5

6 6 Generowanie programu rozporszonego (przykład) Budowanie aplikacji rozproszonej z wykorzystaniem narzędzia rpcgen odbywa się w ośmiu krokach: 1. Skonstruowanie i przetestowanie zwykłego (działającego lokalnie) programu użytkowego. 2. Podział programu na część lokalną i zdalną. 3. Napisanie specyfikacji zdalnie wywoływanego programu wykorzystywanej przez rpcgen. 4. Użycie generatora rpcgen do wyprodukowania plików źródłowych wykorzystywanych do budowy klienta i serwera.

7 7 Generowanie programu rozporszonego (przykład) 5. Implementacja procedur sprzęgających po stronie klienta i serwera. 6. Uzupełnienie, kompilacja i konsolidacja (linkowanie) plików składających się na program kliencki. 7. Uzupełnienie, kompilacja i konsolidacja (linkowanie) plików składających się na program serwera. 8. Uruchomienie serwera na komputerze odległym i klienta (jednego lub wielu) na komputerach lokalnych.

8 Krok 1: program lokalny Przykładowy program przedstawia prostą implementację dla zbioru słów. #include<stdio.h> #define WORDLEN 50 int main(int argc, char **argv){ char cmdline[wordlen+3]; char cmd; int i; while(1){ scanf("%s", cmdline); if (strlen(cmdline)<1){ printf("brak komendy\n"); continue; } cmd = cmdline[0]; switch(cmd){ case 'I': i = init(); printf("zbior zainicjowany (%d)\n", i); break; 8

9 Krok 1: program lokalny case 'i': i = insert(cmdline + 2); printf("wstawiono '%s' (%d)\n", cmdline + 2, i); break; case 'd': i = delete(cmdline + 2); printf("skasowano '%s' (%d)\n", cmdline + 2, i); break; case 'l': if((i = lookup(cmdline + 2))>=0){ printf("slowo '%s' odnalezione (%d)\n", cmdline + 2, i); }else{ printf("slowo '%s' nieodnalezione (%d)\n", cmdline + 2, i); } break; case 'q': printf("koniec pracy\n"); exit(1); default: printf("nieznana komenda '%c' \n", cmd); break; }// switch }// while } 9

10 int init(){ size = 0; return 1; } int insert(char *word){ strcpy(wordset[size], word); return ++size; } int lookup(char *word){ int i, found = -1; for(i=0; i<size; i++){ if (strcmp(wordset[i], word)==0){ found = i; break; } } return found; } 10 Krok 1: program lokalny Procedury realizujące poszczególne funkcje programu: #define SETSIZE 100 char wordset[setsize][wordlen+1]; int size = 0;

11 Krok 1: program lokalny int delete(char *word){ int i, j; i = lookup(word); if(i>=0){ for (j=i; j<size; j++){ strcpy(wordset[j], wordset[j+1]); } size--; } return size; } Przykładowe komendy wydawane programowi po uruchomieniu: I i:jeden i:dwa l:jeden d:jeden l:jeden l:dwa 11

12 Krok 2: podział programu main scanf init insert lookup delete main scanf init insert lookup delete Dane używane jako zbiór słów 12

13 Krok 3: specyfikacja dla rpcgen Specyfikacja musi zawierać deklaracje: stałych używanych w programie, typów danych, używanych zdalnych programów i funkcji. Specyfikacja jest pisana w języku RPC plik rset.x. const WORDLEN=50; const SETSIZE=100; struct example{ // przykład, obrazujące struktury XDR int id; char c; }; program RSETPROG{ // deklaracja nazwy zdalnego programu version RSETVERS { // deklaracja wersji int INIT(void) = 1; // deklaracje zdalnych procedur int INSERT(string) = 2; int LOOKUP(string) = 3; int DELETE(string) = 4; } = 1; // numer wersji } = 0x ; // numer programu 13

14 Krok 3: specyfikacja dla rpcgen Przestrzeń numerów dla zdalnych programów: 0 1fffffff określone przez firmę Sun fffffff do wykorzystania lokalnego fffffff dla aplikacji wykorzystujących dynamiczne numerowanie programów fffffff pozostałe adresy są zarezerwowane fffffff do późniejszego wykorzystania a bfffffff i nie powinny być używane c dfffffff w programach e ffffffff 14

15 Krok 4: użycie rpcgen Program rpcgen na podstawie specyfikacji tworzy pliki źródłowe wykorzystywane do kompilacji programu klienckiego i serwera. Plik rset.h zawiera deklaracje używane przez oba programy: #ifndef _RSET_H_RPCGEN #define _RSET_H_RPCGEN #include <rpc/rpc.h> #ifdef cplusplus extern "C" { #endif #define WORDLEN 50 #define SETSIZE 100 struct example { int id; char c; }; typedef struct example example; 15

16 16 Krok 4: użycie rpcgen #define RSETPROG 0x #define RSETVERS 1 #if defined( STDC ) defined( cplusplus) #define INIT 1 extern int * init_1(void *, CLIENT *); extern int * init_1_svc(void *, struct svc_req *); #define INSERT 2 extern int * insert_1(char **, CLIENT *); extern int * insert_1_svc(char **, struct svc_req *); #define LOOKUP 3 extern int * lookup_1(char **, CLIENT *); extern int * lookup_1_svc(char **, struct svc_req *); #define DELETE 4 extern int * delete_1(char **, CLIENT *); extern int * delete_1_svc(char **, struct svc_req *); extern int rsetprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);

17 17 Krok 4: użycie rpcgen #else /* K&R C */ // stary styl deklaracji #define INIT 1 extern int * init_1(); extern int * init_1_svc(); #define INSERT 2 extern int * insert_1(); extern int * insert_1_svc(); #define LOOKUP 3 extern int * lookup_1(); extern int * lookup_1_svc(); #define DELETE 4 extern int * delete_1(); extern int * delete_1_svc(); extern int rsetprog_1_freeresult (); #endif /* K&R C */

18 Krok 4: użycie rpcgen /* the xdr functions */ #if defined( STDC ) defined( cplusplus) extern bool_t xdr_example (XDR *, example*); #else /* K&R C */ extern bool_t xdr_example (); #endif /* K&R C */ #ifdef cplusplus } #endif #endif /*!_RSET_H_RPCGEN */ Zdefiniowane procedury zewnętrzne (np. init_1() i init_1_svc()) są procedurami łącznikowymi, które powinny być napisane przez programistę. 18

19 19 Krok 4: użycie rpcgen Plik rset_xdr.c jest tworzony gdy w specyfikacji były zdefiniowane dodatkowe struktury, z których korzysta program. #include "rset.h" bool_t xdr_example (XDR *xdrs, example *objp){ register int32_t *buf; } if (!xdr_int (xdrs, &objp->id)) return FALSE; if (!xdr_char (xdrs, &objp->c)) return FALSE; return TRUE;

20 int insert(char *word){ char **arg; arg = &word; return *insert_1(arg, handle); } 20 Krok 5: procedury łącznikowe Plik rset_clnt.c zawiera komunikacyjne procedury łącznikowe klienta, np. int *insert_1(char **argp, CLIENT *clnt){ static int clnt_res; } memset((char *)&clnt_res, 0, sizeof(clnt_res)); if (clnt_call (clnt, INSERT, (xdrproc_t) xdr_wrapstring, (caddr_t) argp, (xdrproc_t) xdr_int, (caddr_t) &clnt_res, TIMEOUT)!= RPC_SUCCESS) { // wywołanie zdalnej procedury return (NULL); } return (&clnt_res); Program klienta o definicję procedur łącznikowych. Zwykle definiuje się je w osobnym pliku rset_cif.c (krok 5).

21 Krok 5: procedury łącznikowe Plik rset_svc.c zawiera kod serwera.... char *result; xdrproc_t _xdr_argument, _xdr_result; char *(*local)(char *, struct svc_req *);... case INSERT: _xdr_argument = (xdrproc_t) xdr_wrapstring; _xdr_result = (xdrproc_t) xdr_int; local = (char *(*)(char *, struct svc_req *)) insert_1_svc; break;... memset ((char *)&argument, 0, sizeof (argument)); if (!svc_getargs (transp, (xdrproc_t)_xdr_argument, (caddr_t)&argument)){ svcerr_decode (transp); return; } // pobranie argumentów result = (*local)((char *)&argument, rqstp); // wywołanie procedury if (result!= NULL &&!svc_sendreply(transp, (xdrproc_t)_xdr_result, result)){ svcerr_systemerr (transp); } // wysłanie odpowiedzi if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)){ fprintf (stderr, "%s", "unable to free arguments"); exit(1); } // zwolnienie pamięci 21

22 22 Krok 5: procedury łącznikowe Procedury łącznikowe serwera zazwyczaj grupowane są w osobnym pliku (rset_sif.c). #include<rpc/rpc.h> #include "rset.h" static int retint; int *init_1_svc(void *w, struct svc_req *sreq){ retint = init(); return &retint; } int *insert_1_svc(char **w, struct svc_req *sreq){ retint = insert(*w); return &retint; }...

23 23 Krok 6: kompilacja klienta W pliku źródłowym klienta rset.c należy dodać fragmenty kodu związane z inicjacją połączenia RPC. #include<rpc/rpc.h> #include"rset.h" #define RMACHINE "komputer.domena" // nazwa lub adres ip serwera CLIENT *handle; // uchwyt wykorzystywany do komunikacji... if ((handle=clnt_create(rmachine, RSETPROG, RSETVERS, "tcp"))==null){ printf("nie mozna nawiazac polaczenia\n"); exit(1); } // nawiązanie połączenia Kompilacja i linkowanie: gcc -o rset rset.c rset_cif.c rset_clnt.c rset_xdr.c

24 24 Krok 7: kompilacja serwera Na serwer, oprócz plików wygenerowanych automatycznie: rset_svr.c, rset_xdr.c i funkcji łącznikowych rset_sif.c i składa się plik zawierający implementację zdalnych funkcji rset_fun.c. Kompilacja i linkowanie: gcc -o rsetd rset_svr.c rset_fun.c rset_sif.c rset_xdr.c

25 25 Krok 8: testowanie i uruchomienie programów Serwer powinien rozpocząć działanie zanim klient nawiąże próbę połączenia. Zarówno program klienta jak i serwer można w celach testowych uruchomić na tym samym komputerze. W tym celu należy w programie rset.c zastąpić istniejącą deklarację przez: #define RMACHINE "localhost Aby ułatwić zarządzanie projektem podczas poprawiania lub wprowadzania zmian, warto zautomatyzować proces kompilacji za pomocą narzędzia make.

26 26 Zdalny dostęp a przesyłanie plików Wiele wczesnych systemów sieciowych udostępniało użytkownikowi usługi polegające na przesyłaniu kopii plików pomiędzy komputerami. Nowsze systemy umożliwiają programom użytkowym zdalny dostęp do plików. Dzięki temu mechanizmowi można przechowywać jedną kopię dla każdego pliku. Dostęp do pliku jest możliwy zarówno z tego komputera, na którym plik jest przechowywany jak i z komputera odległego. Operacja pobrania danych z pliku lub ich zapisania zlecana przez system operacyjny, na którym działa program użytkowy, dotyczy zazwyczaj małego bloku pliku. Właśnie tym usługa zdalnego dostępu różni się od usługi przesyłania plików jednorazowo są przesyłane małe bloki danych a nie całe pliki.

27 27 Sieciowy system plików Sieciowy system plików NFS (Network File System) [RFC 1094, 3530] pozwala wykonywać na plikach odległych te same operacje, które można wykonać na plikach lokalnych. Tak więc program użytkowy wykonuje operacje open(), aby otworzyć plik odległy, operacje read(), aby przeczytać z niego dane, write(), aby zapisać dane, seek(), aby przesunąć wskaźnik położenia w pliku do określonego miejsca oraz operacje close(), aby zamknąć plik.

28 28 Dostęp do plików w niejednorodnym środowisku sieciowym Oprócz podstawowych operacji, programy realizujące usługę muszą tworzyć i usuwać pliki, przeszukiwać katalogi, sprawdzać uprawnienia klientów, zapewniać ochronę plików a także tłumaczyć informacje różnie reprezentowaną w różnych komputerach. Protokół NFS zaprojektowano tak, aby mógł działać w niejednorodnym środowisku systemów komputerowych, pomimo że jego konstrukcja mocno związana z systemem plików w systemie UNIX. Postarano się o dostosowanie definiowanych operacji na plikach do wymagań wielu systemów tak dalece, jak było to możliwe bez nadmiernej komplikacji komplikacji systemu i przy zachowaniu warunku efektywności działania.

29 Przegląd systemu plików w systemie UNIX Z punktu widzenia użytkownika plik jest zdefiniowany jako ponumerowany ciąg bajtów. Każdy plik ma dokładnie jednego właściciela i należy do dokładnie jednej grupy. Identyfikatory właściciela i grupy są przechowywane razem z plikiem. Właściciel może określić oddzielne prawa dostępu do pliku (read, write, execute) dla siebie, członków grupy i wszystkich pozostałych użytkowników: właściciel grupa inni = 755 wykonywanie zapis odczyt 29

30 30 Przegląd systemu plików w systemie UNIX UNIX umożliwia współbieżny dostęp do pliku. Dostęp odbywa się za pośrednictwem struktury danych wskazywanej przez deskryptor pliku. Każde wywołanie funkcji open() tworzy nową, niezależną strukturę, w której zapisana jest między innymi informacja o pozycji w pliku. Dzięki oddzieleniu informacji o pozycji w pliku od pliku możliwy jest współbieżny dostęp wielu programów użytkowych do jednego pliku bez wzajemnych zakłóceń. UNIX nie umożliwia wzajemnego wykluczania pomiędzy procesami podczas korzystania z plików. Jeżeli kilka procesów realizuje zapis tej samej pozycji w pliku efekt ich działania może zależeć od kolejności w jakiej uzyskały one dostęp do procesora.

31 Przegląd systemu plików w systemie UNIX Katalogi pozwalają wprowadzenie hierarchicznej struktury plików. / k1 k2 p1 k3 p2 p3 k4 p4 p5 p6 p7 Prawo czytania katalogu oznacza możliwość uzyskania listy plików znajdujących się w tym katalogu. Prawo zapisu umożliwia utworzenie nowego pliku, natomiast prawo wykonywania pozwala odwoływać się do dowolnego pliku w danym katalogu. 31

32 Przegląd systemu plików w systemie UNIX Montowanie systemu plików. / k1 k2 p1 k3 / k4 p4 / p2 p3 p5 p6 p7 Mechanizm odwzorowania nazw plików tworzy dla użytkowników i programów użytkowych jedną, połączoną hierarchię plików, mimo że pliki należące do tej hierarchii mogą być fizycznie przechowywane na różnych dyskach. 32

33 Pliki w systemie NFS Pliki w systemie NFS, podobnie jak pliki UNIX'owe, są widziane przez system jako ciągi bajtów. Analogicznie są także struktury wykorzystywane do opisu plików: enum ftype { NFNON = 0, NFREG = 1, NFDIR = 2, NFBLK = 3, NFCHR = 4, NFLNK = 5 NF3SOCK = 6, NF3FIFO = 7 }; // to nie jest plik // zwykły plik // katalog // urządzenie blokowe (np. dysk) // urządzenie znakowe (np. terminal) // link symboliczny // gniazdo // potok nazwany struct timeval { // struktura do przekazywania czasu unsigned int seconds; // liczba sekund od 1 stycznia 1970 r. unsigned int useconds; // liczba mikrosekund }; 33

34 34 Pliki w systemie NFS Podobna sytuacja zachodzi także dla atrybutów plików: struct fattr { ftype type; // typ pliku unsigned int mode; // rodzaj pliku unsigned int nlink; // liczba twardych dowiązań do pliku unsigned int uid; // identyfikator właściciela pliku unsigned int gid; // identyfikator grupy do której należy plik unsigned int size; // rozmiar w bajtach unsigned int blocksize; // rozmiar bloku w urządzeniu unsigned int rdev; // numer urządzenia jeśli typ pliku to NFCHR lub NFBLK unsigned int blocks; // rozmiar pliku w blokach unsigned int fsid; // identyfikator systemu plików unsigned int fileid; // identyfikator pliku timeval atime; // czas ostatniego dostępu timeval mtime; // czas ostatniej modyfikacji timeval ctime; // czas ostatniej modyfikacji informacji o pliku (i-node) };

35 Pliki w systemie NFS Rodzaj pliku jest sumą logiczną następujących stałych (zapisanych w systemie ósemkowym): katalog typ NFDIR urządzenie znakowe - typ NFCHR urządzenie blokowe typ NFBLK zwykły plik - typ NFREG link symboliczny typ NFLNK plik specjalny (np. Gniazdo) typ NFNON ustaw właściciela w momencie uruchomienia ustaw grupę w momencie uruchomienia zapamiętaj tekst z obszaru wymiany po użyciu prawo read dla właściciela prawo write dla właściciela prawo execute dla właściciela prawo read dla grupy prawo write dla grupy prawo execute dla grupy prawo read dla wszystkich prawo write dla wszystkich prawo execute dla wszystkich 35

36 Serwer i klient NFS Serwer NFS działa na komputerze, który ma własny lokalny system plików. Udostępnia on część lokalnych plików komputerom odległym. Większość implementacji oprogramowania klienckiego zapewnia integrację plików dostępnych przez NFS z rodzimym systemem plików danego komputera. funkcja systemowa np. open() analiza nazwy ścieżki kod programu klienta NFS kod systemu zarządzania plikami 36

37 Klient NFS Aby programy użytkowe po stronie klienta mogły działać niezależnie od miejsca przechowywania plików i od właściwości systemów, w których działają serwery (np. inny format nazw ścieżek), w systemie NFS przyjęto zasadę, że pełne nazwy ścieżek są interpretowane tylko po stronie klienta. Klient wysyła do serwera kolejno poszczególne składowe nazwy ścieżki. Dla każdej składowej otrzymuje w odpowiedzi informację dotyczącą pliku lub katalogu, z którym ta nazwa składowa jest związana. W ten sposób przebywa całą ścieżkę w hierarchii katalogów serwera. Główna wada tego rozwiązania to duża liczba komunikatów przesyłanych pomiędzy klientem a serwerem. Główna zaleta to identyczny dostęp do plików zdalnych i lokalnych z punktu widzenia oprogramowania użytkowego. 37

38 Uchwyty do plików Po odnalezieniu i otwarciu pliku klient musi mieć możliwość identyfikacji tego pliku podczas operacji takich jak odczytywanie czy zapisywanie. W tym celu w systemie NFS stosuje się 32 bajtowe uchwyty plików (handles). typedef opaque fhandle[fhsize]; Uchwyt pliku dla klienta jest nieprzezroczysty, co oznacza, że klient nie może sam zdekodować uchwytu ani utworzyć nowego. Uchwyty są tworzone i rozpoznawane tylko przez serwery. Często w implementacjach NFS wyposażonych w mechanizmy ochrony, stosuje się skomplikowane sposoby kodowania uchwytów, aby program kliencki nie mógł odgadnąć uchwytu dla pliku. Dodatkowym zabezpieczeniem może być ograniczenie czasu ważności uchwytu. Transakcje między klientem a serwerem potrzebne do uzyskania uchwytu są niewidoczne dla programu użytkowego. 38

39 Serwer NFS Serwery NFS są serwerami bezstanowymi. Informacja o stanie interakcji jest przechowywana po stronie klienta. Dzięki temu przerwy w pracy serwera (lub sieci) nie muszą mieć wpływu na działanie klienta. Dodatkowo implementacja serwera staje się prostsza, gdyż nie musi zawierać operacji odtwarzania stanu serwera po awarii. W sytuacji gdy dana operacja nie może być zrealizowana w jednym akcie komunikacji używa się tzw.,,magic cookie. Jest to informacja o stanie interakcji wysyłana klientowi przez serwer. Aby uzyskać dalszą część danych klient w kolejnym zapytaniu odsyła magic cookie. Klient nie może interpretować ani sam tworzyć magic cookies. Wykorzystanie tej techniki nie zapewnia niepodzielności operacji ani wykluczania dostępu! 39

40 Protokół NFS program NFS_PROGRAM { version NFS_VERSION { void NFSPROC_NULL(void) = 0; attrstat NFSPROC_GETATTR(fhandle) = 1; attrstat NFSPROC_SETATTR(sattrargs) = 2; void NFSPROC_ROOT(void) = 3; diropres NFSPROC_LOOKUP(diropargs) = 4; readlinkres NFSPROC_READLINK(fhandle) = 5; readres NFSPROC_READ(readargs) = 6; void NFSPROC_WRITECACHE(void) = 7; attrstat NFSPROC_WRITE(writeargs) = 8; diropres NFSPROC_CREATE(createargs) = 9; stat NFSPROC_REMOVE(diropargs) = 10; stat NFSPROC_RENAME(renameargs) = 11; stat NFSPROC_LINK(linkargs) = 12; stat NFSPROC_SYMLINK(symlinkargs) = 13; diropres NFSPROC_MKDIR(createargs) = 14; stat NFSPROC_RMDIR(diropargs) = 15; readdirres NFSPROC_READDIR(readdirargs) = 16; statfsres NFSPROC_STATFS(fhandle) = 17; } = 2; } = ; 40

41 Protokół NFS void NFSPROC_NULL(void) = 0; procedura wykorzystywana do testowania czasu odpowiedzi serwera. attrstat NFSPROC_GETATTR (fhandle) = 1; zwraca strukturę zawierającą atrybuty pliku określonego przez uchwyt fhandle: union attrstat switch (stat status) { case NFS_OK: fattr attributes; // atrybuty default: void; }; attrstat NFSPROC_SETATTR (attrargs) = 2; ustawia atrybuty dla pliku. struct sattrargs { fhandle file; sattr attributes; }; // uchwyt pliku // atrybuty 41

42 Protokół NFS Struktura attrstat w zależności od stanu (status) zwracane są atrybuty pliku na którym dokonywano operacji (fattr) lub typ void. Możliwe stany: enum stat { NFS_OK =0, // procedura wykonana poprawnie NFSERR_PERM =1, // niezgodność lub błąd identyfikatora właściciela NFSERR_NOENT =2, // plik lub katalog nie istnieje NFSERR_IO =5, // wystąpił błąd w urządzeniu we-wy NFSERR_NXIO =6, // nie istniejące urządzenie lub adres NFSERR_ACCES =13,// odmowa zezwolenia na dostęp NFSERR_EXIST =17,// plik o podanej nazwie juz istnieje NFSERR_NODEV =19,// wskazane urządzenie nie istnieje NFSERR_NOTDIR =20,// wskazany obiekt nie jest katalogiem NFSERR_ISDIR =21,// wskazany obiekt jest katalogiem NFSERR_FBIG =27,// plik za duży dla serwera NFSERR_NOSPC =28,// brak miejsca na dysku NFSERR_ROFS =30,// próba zapisu do systemu plików tylko do odczytu NFSERR_NAMETOOLONG =63,// za długa nazwa pliku NFSERR_NOTEMPTY =66,// katalog nie jest pusty NFSERR_DQUOT =69,// przekroczony limit miejsca na dysku NFSERR_STALE =70,// uchwyt do pliku przeterminowany NFSERR_WFLUSH =99 // bufor zapisu został opróżniony }; 42

43 43 Protokół NFS Z poziomu klienta NFS ustawiany może być jedynie podzbiór wszystkich dostępnych atrybutów: struct sattr { unsigned int mode; // rodzaj pliku unsigned int uid; // identyfikator właściciela unsigned int gid; // grupa do której należy plik unsigned int size; // rozmiar pliku w bajtach timeval atime; // czas ostatniego dostępu timeval mtime; // czas ostatniej modyfikacji };

44 Protokół NFS void NFSPROC_ROOT(void) = 3; niepotrzebna, zastąpiona przez MNTPROC_MNT w programie MOUNTPROG. diropres NFSPROC_LOOKUP(diropargs) = 4; zwraca strukturę zawierającą uchwyt oraz atrybuty katalogu lub pliku. Procedura korzysta z następujących struktur danych: struct diropargs { fhandle dir; // uchwyt katalogu filename name; // nazwa pliku - typedef string filename<maxnamlen>, gdzie const MAXNAMELEN = 255; }; union diropres switch (stat status) { case NFS_OK: struct { fhandle file; // uchwyt katalogu lub pliku fattr attributes; // atrybuty katalogu lub pliku } diropok; default: void; }; 44

45 45 Protokół NFS readlinkres NFSPROC_READLINK(fhandle) = 5; zwraca informacje o linku symbolicznym poprzez strukturę: union readlinkres switch (stat status) { case NFS_OK: path data; // ścieżka do pliku - typedef string path<maxpathlen>, gdzie const MAXPATHLEN=1024 default: void; }; UWAGA: protokół NFS zakłada, że ścieżka jest przetwarzana po stronie klienta. Ponieważ nie ma zdefiniowanej standardowej notacji sieciowej dla ścieżek, wynik wywołania tej procedury zależy istotnie od architektury i systemu operacyjnego serwera NFS.

46 Protokół NFS readres NFSPROC_READ(readargs) = 6; odczytuje dane z pliku. Korzysta z następujących struktur: struct readargs { fhandle file; unsigned offset; unsigned count; unsigned totalcount; }; // uchwyt pliku // miejsce, od którego rozpocząć czytanie, 0 - początek pliku // liczba bajtów do odczytania // ignorowane, usunięte w kolejnych wersjach union readres switch (stat status) { case NFS_OK: fattr attributes; // atrybuty plikupo odczycie nfsdata data; // dane maksymalnie 8192 bajty default: void; }; void NFSPROC_WRITECACHE(void) = 7; do użycia w przyszłych wersjach protokołu. 46

47 47 Protokół NFS attrstat NFSPROC_WRITE(writeargs) = 8; zapisuje dane do pliku. Argumenty znajdują się w strukturze struct writeargs { fhandle file; // uchwyt do pliku unsigned beginoffset; // ignorowane, usunięte w kolejnych wersjach unsigned offset; // miejsce, od którego należy rozpocząć zapis unsigned totalcount; // ignorowane, usunięte w kolejnych wersjach nfsdata data; // zapisywane dane (maks bajty) }; Zwracane atrybuty określają stan pliku po operacji WRITE. Zapis musi być wykonany w sposób niepodzielny. Dane wysyłane przez różnych klientów wywołujących funkcję WRITE nie mogą zostać zmieszane.

48 48 Protokół NFS diropres NFSPROC_CREATE(createargs) = 9; tworzy nowy plik zgodnie z informacją zawartą w strukturze struct createargs { diropargs where; sattr attributes; }; // miejsce stworzenia pliku // atrybuty tworzonego pliku gdzie attributes zawiera atrybuty pliku ustawiane przez klienta. W przypadku udanego zakończenia operacji zwracany jest uchwyt do stworzonego pliku wraz z pełnym zestawem atrybutów. UWAGA: procedura powinna tworzyć plik tylko wtedy gdy on nie istnieje.

49 Protokół NFS stat NFSPROC_REMOVE(diropargs) = 10; usuwa wskazany plik. stat NFSPROC_RENAME(renameargs) = 11; zmienia nazwę pliku. Argumentem jest struktura struct renameargs { diropargs from; diropargs to; }; stat NFSPROC_LINK(linkargs) = 12; tworzy nowy twardy link do określonego pliku. struct linkargs { fhandle from; diropargs to; }; // uchwyt do pliku // miejsce utworzenia dowiązania symbolicznego UWAGA: UWAGA: procedury REMOVE, RENAME i LINK nie są indepotentne. 49

50 50 Protokół NFS stat NFSPROC_SYMLINK(symlinkargs) = 13; tworzy nowy link symboliczny do wskazanego pliku. struct symlinkargs { diropargs from; path to; sattr attributes; }; // uchwyt do pliku // ścieżka dowiązania // atrybuty mogą być nieużywane w zależności od systemu operacyjnego diropres NFSPROC_MKDIR (createargs) = 14; tworzy nowy katalog i zwraca jego uchwyt. stat NFSPROC_RMDIR (diropargs) = 15; usuwa wskazany katalog. UWAGA: procedury MKDIR i RMDIR nie są indepotentne.

51 51 Protokół NFS readdirres NFSPROC_READDIR (readdirargs) = 16; zwraca poszczególne pozycje w podanym katalogu. Wykorzystuje struktury: struct readdirargs { fhandle dir; nfscookie cookie; unsigned count; }; // uchwyt katalogu // magic cookie (4 bajty). Aby otrzymać wpisy od początku katalogu należy ustawić wszystkie bity na 0 // maksymalna liczba zwracanych bajtów

52 52 Protokół NFS Na wynik działania READDIR składają się struktury: struct entry { unsigned fileid; // unikalny identyfikator pliku filename name; // nazwa pliku nfscookie cookie; // magic cookie wskazujące na następną pozycję w katalogu entry *nextentry; // następny wpis }; union readdirres switch (stat status) { case NFS_OK: struct { entry *entries; // wskaźnik do pierwszego zwróconego wpisu bool eof; // TRUE jeśli brak kolejnych wpisów w katalogu } readdirok; default: void; };

53 53 Protokół NFS statfsres NFSPROC_STATFS(fhandle) = 17; zwraca informacje o sieciowym systemie plików. union statfsres (stat status) { case NFS_OK: struct { unsigned tsize; // optymalna dla serwera liczba przesyłanych bajtów dla instrukcji READ i WRITE unsigned bsize; // rozmiar bloku w bajtach unsigned blocks; // całkowita liczba bloków w systemie unsigned bfree; // liczba wolnych bloków }; } info; default: void; unsigned bavail; // liczba bloków dostępnych dla użytkowników

54 54 Protokół montowania Protokół montowania współpracuje z serwerem NFS przy nawiązywaniu połączenia z klientem. W przeciwieństwie do NFS jest on protokołem stanowym. Służy do sprawdzania ścieżek plików, oraz autoryzacji i uprawnień klienta. Klient używa tego protokołu aby dostać pierwszy uchwyt do korzenia systemu plików. program MOUNTPROG { version MOUNTVERS { void MOUNTPROC_NULL(void) = 0; fhstatus MOUNTPROC_MNT(dirpath) = 1; mountlist MOUNTPROC_DUMP(void) = 2; void MOUNTPROC_UMNT(dirpath) = 3; void MOUNTPROC_UMNTALL(void) = 4; exportlist MOUNTPROC_EXPORT(void) = 5; } = 1; } = ;

55 Protokół montowania void MNTPROC_NULL(void) = 0; służy do testowania serwera. fhstatus MNTPROC_MNT(dirpath) = 1; zwraca uchwyt do zdalnego katalogu. Używane typy danych: typedef string dirpath<mntpathlen>; const MNTPATHLEN = 1024; union fhstatus switch (unsigned status) { case 0: fhandle directory; // uchwyt do katalogu default: void; } mountlist MNTPROC_DUMP(void) = 2; zwraca listę zamontowanych systemów plików na serwerze. struct *mountlist { name hostname; // nazwa hosta dirpath directory; // katalog - ścieżka mountlist nextentry; // wskażnik do następnego wpisu }; 55

56 Protokół montowania void MNTPROC_UMNT(dirpath) = 3; odmontowuje wskazany system plików. void MNTPROC_UMNTALL(void) = 4; odmontowuje wszystkie zamontowane uprzednio systemy plików. exportlist MNTPROC_EXPORT(void) = 5; zwraca listę dostępnych systemów plików na serwerze. struct *groups { name grname; groups grnext; }; struct *exportlist { dirpath filesys; groups groups; exportlist next; }; // nazwa grupy // następny element // system plików // lista grup, które mogą go importować // następny element 56

57 57 Kontrola uprawnień Do sprawdzenia uprawnień klienta stosuje się tryb AUTH_UNIX lub AUTH_NONE. Od Wersji 3 możliwa jest dodatkowo autoryzacja poprzez AUTH_SHORT, AUTH_DES, oraz AUTH_KERB. W przypadku stosowania trybu AUTH_UNIX serwer może bezpośrednio określać uprawnienia klienta do poszczególnych katalogów i plików. W przypadku AUTH_DES i AUTH_KERB musi istnieć dodatkowe mapowanie (zwykle po stronie serwera) wiążące dane użytkownika z jego identyfikatorem i grupą używaną w ramach systemu plików.

58 Konfiguracja Konfiguracja serwera lista punktów montowania wraz z listą komputerów mogących korzystać z niego korzystać jest zapisana w pliku /etc/exports. W zależności od rodzaju systemu UNIX poszczególne linie pliku mogą mieć postać: /u (ro,no_root_squash) lub /u1 -ro W obu przypadkach użytkownik komputera może ubiegać sie o dostęp do katalogu /u1 wraz z podkatalogami z prawem czytania. Inne wybrane opcje access host[:host]... root=0 -anon=uid - pełny dostęp (w trybie rw) - mapuje użytkownika root pod uid=0 - mapuje użytkownika anonimowego pod uid 58

59 59 Konfiguracja Konfiguracja klienta w celu zamontowania zdalnego systemu plików klient wywołuje komendę mount: mount -o ro -t nfs :/u1 /u Aby montowanie odbywało się automatycznie po uruchomieniu komputera w pliku /etc/fstab należy umieścić linijkę: :/u1 /u nfs ro 0 0

60 60 Inne rozwiązania - CIFS/SMB CIFS (Common Internet File System) - podstawowe własności: dostęp do plików i drukarek, blokowanie plikow, optymalizacja (read-ahead, write-behind), powiadomienia o zmianach pliku, negocjacja wersji protokołu rozszerzone atrybuty (autor, zawartość), rozproszone replikowalne wirtualne wolumeny korzystanie z DNS, grupowanie żądań.

61 61 CIFS schemat działania CIFS (Common Internet File System): parsowanie nazwy zasobu: file://fs.corp.com/u/fred/stuff.txt, \\server\public\policy.doc, x:\policy.doc zlokalizowanie serwera, w przypadku korzystania z TCP, nawiązanie połączenia, wymiana komunikatów SMB (Server Message Block).

62 CIFS schemat działania SMB_COM_NEGOTIATE - inicjacja komunikacji. Odpowiedź zawiera wybrany dialekt, SMB SMB_COM_SESSION_SETUP_ANDX - dane autoryzacyjne klienta. SMB_COM_TREE_CONNECT pełna ściżka dostępu do wolumenu. W odpowiedzi odesłany zostaje jego identyfikator (Tid). SMB_COM_OPEN - przesłanie lokalizacji zasoby względem wolumenu (Tid). W odpowiedzi otrzymuje się identyfikator zasobu (Fid). SMB_COM_READ klient przesyła Tid, Fid, offset, i liczbe bajtów do odczytu. SMB_COM_CLOSE zamknięcie pliku (Fid) SMB_COM_TREE_DISCONNECT rozłączenie z wolumenem (Tid). 62

63 63 CIFS Implementacja Samba Samba to serwer umożliwiający dostęp do plików komputerom działającym pod kontrolą systemu Windows. Składniki Samby: smbd - demon umożliwiający współdzielenie plików i drukarek w sieci SMB i zapewniający uwierzytelnianie klientów SMB (porty 137, 138). smbd - demon świadczący usługi Windows Internet Name Service (WINS) i wspomagający przeglądanie zasobów sieci (porty 135, 139 i 445). Więcej informacji:

64 Podsumowanie Zwykle do konstrukcji programów rozproszonych wykorzystywane jest narzędzie rpcgen. Proces budowania aplikacji rozproszonej można podzielić na osiem etapów. Najpierw programista buduje zwykły program lokalny. Następnie musi on zostać podzielony na część lokalną i zdalną. Program rpcgen automatycznie generuje większość kodu potrzebnego do obsługi komunikacji RPC. Pomimo tego konwersją do modelu rozproszonego zwykle jest pracochłonna i wymaga uwagi. Protokół NFS umożliwia zdalny dostęp do plików. Za jego pomocą wielu użytkowników może jednocześnie korzystać ze wspólnych zasobów plikowych. Pomimo, że koncepcja plików w NFS'ie bazuje na rozwiązaniach znanych z systemów UNIX może on być używany także w ramach innych systemów. Specyfikacja NFS opiera się na modelu RPC i wykorzystuje XDR. 64

Programowanie z użyciem RPC

Programowanie z użyciem RPC Programowanie z użyciem RPC 1. Zastosowanie modelu zdalnie wywoływanych procedur. 2. Biblioteka RPC. 3. Podział programu na część lokalną i zdalną. 4. Narzędzie rpcgen. 5. Generowanie programu rozproszonego.

Bardziej szczegółowo

Sieciowa komunikacja procesów - XDR i RPC

Sieciowa komunikacja procesów - XDR i RPC *** abc.x Przyklad pliku RPCGEN Obliczanie sumy, roznicy i iloczynu dwoch liczb calkowitych *** ************************************ Wywolanie procedury odleglej dopuszcza tylko jeden argument wywolania

Bardziej szczegółowo

Sun RPC/XDR. Dariusz Wawrzyniak 1

Sun RPC/XDR. Dariusz Wawrzyniak 1 Remote Procedure Call external Data Representation trójwymiarowa identyfikacja procedur (nr programu, nr wersji, nr procedury) protokół RPC oparty na protokołach warstwy transportowej stosu TCP/IP (TCP

Bardziej szczegółowo

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

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1 Zdalne wywołanie procedur Krzysztof Banaś Systemy rozproszone 1 RPC Komunikacja za pomocą gniazd jest wydajna, gdyż korzystamy z funkcji systemowych niewygodna, gdyż musimy wyrażać ją za pomocą jawnego

Bardziej szczegółowo

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

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego

Bardziej szczegółowo

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

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1 Remote Procedure Call external Data Representation trójwymiarowa identyfikacja procedur (nr programu, nr wersji, nr procedury) protokół RPC oparty na protokołach warstwy transportowej stosu TCP/IP (TCP

Bardziej szczegółowo

Tworzenie aplikacji rozproszonej w Sun RPC

Tworzenie aplikacji rozproszonej w Sun RPC Tworzenie aplikacji rozproszonej w Sun RPC Budowa aplikacji realizowana jest w następujących krokach: Tworzenie interfejsu serwera w języku opisu interfejsu RPCGEN Tworzenie: namiastki serwera namiastki

Bardziej szczegółowo

external Data Representation

external Data Representation Remote Procedure Call external Data Representation Dariusz Wawrzyniak (IIPP) 1 trójwymiarowa identyfikacja procedur (nr programu, nr wersji, nr procedury) protokół RPC oparty na protokołach warstwy transportowej

Bardziej szczegółowo

external Data Representation

external Data Representation 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

Bardziej szczegółowo

76.Struktura oprogramowania rozproszonego.

76.Struktura oprogramowania rozproszonego. 76.Struktura oprogramowania rozproszonego. NajwaŜniejsze aspekty obiektowego programowania rozproszonego to: Współdziałanie (interoperability) modułów programowych na róŝnych maszynach. Wielokrotne wykorzystanie

Bardziej szczegółowo

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

Oprogramowanie systemów równoległych i rozproszonych. Wykład 6 Wykład 6 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 6 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Wykład 6 p.

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Wywoływanie procedur zdalnych Mechanizm wywołania 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

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Mechanizm wywołania Wywoływanie procedur zdalnych 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,

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Mechanizm wywołania Wywoływanie procedur zdalnych 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

Bardziej szczegółowo

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1 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

Bardziej szczegółowo

Argumenty wywołania programu, operacje na plikach

Argumenty wywołania programu, operacje na plikach Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują

Bardziej szczegółowo

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

Tunelowanie, kapsułkowanie, XDR. 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR. Tunelowanie, kapsułkowanie, XDR 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR. 1 Transmisja tunelowa i kapsułkowanie Sieci komputerowe rozwijały się stopniowo

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC 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

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC 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

Bardziej szczegółowo

Wprowadzenie do programowania rozproszonego

Wprowadzenie do programowania rozproszonego Wprowadzenie do programowania rozproszonego 1. Koncepcja programowania rozproszonego. 2. Model proceduralny. 3. Zdalne wywoływanie procedur. 4. Specyfkacja Sun RPC. 1 Programowanie rozproszone Przystępując

Bardziej szczegółowo

System plików warstwa logiczna

System plików warstwa logiczna Dariusz Wawrzyniak Pojęcie u Plik jest abstrakcyjnym obrazem informacji gromadzonej i udostępnianej przez system komputerowy. Plik jest podstawową jednostką logiczną magazynowania informacji w systemie

Bardziej szczegółowo

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

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1 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,

Bardziej szczegółowo

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

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne Zdalne wywołania procedur Jarosław Kuchta Programowanie Współbieżne Podstawy RPC Remote Procedure Call Wywołanie procedur jednego procesu z innego procesu. Proces wywoływany serwer Proces wywołujący -

Bardziej szczegółowo

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

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

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

Rodzina protokołów TCP/IP. Aplikacja: ipconfig. Rodzina protokołów TCP/IP. Aplikacja: ipconfig. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Specyfikacja struktury FIXED_INFO Nazwa struktury:

Bardziej szczegółowo

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

Zdalne wywoływanie procedur RPC 27. października 2010 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

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

OPERACJE NA PLIKACH. Podstawowe pojęcia:

OPERACJE NA PLIKACH. Podstawowe pojęcia: OPERACJE NA PLIKACH Podstawowe pojęcia: plik fizyczny, zbiór informacji w pamięci zewnętrznej wykorzystywany do trwałego przechowywania danych lub jako przedłużenie pamięci operacyjnej w przypadku przetwarzania

Bardziej szczegółowo

Klient-Serwer Komunikacja przy pomocy gniazd

Klient-Serwer Komunikacja przy pomocy gniazd II Klient-Serwer Komunikacja przy pomocy gniazd Gniazda pozwalają na efektywną wymianę danych pomiędzy procesami w systemie rozproszonym. Proces klienta Proces serwera gniazdko gniazdko protokół transportu

Bardziej szczegółowo

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

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami

Bardziej szczegółowo

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011 Obsługa plików Systemy Operacyjne 2 laboratorium Mateusz Hołenko 25 września 2011 Plan zajęć 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach otwieranie i zamykanie zapis i odczyt

Bardziej szczegółowo

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,

Bardziej szczegółowo

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

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku System plików 1. Pojęcie pliku 2. Typy i struktury plików 3. etody dostępu do plików 4. Katalogi 5. Budowa systemu plików Pojęcie pliku (ang( ang. file)! Plik jest abstrakcyjnym obrazem informacji gromadzonej

Bardziej szczegółowo

System plików. Warstwowy model systemu plików

System plików. Warstwowy model systemu plików System plików System plików struktura danych organizująca i porządkująca zasoby pamięci masowych w SO. Struktura ta ma charakter hierarchiczny: urządzenia fizyczne strefy (partycje) woluminy (w UNIXie:

Bardziej szczegółowo

Kolejki FIFO (łącza nazwane)

Kolejki FIFO (łącza nazwane) Kolejki FIFO (łącza nazwane) Systemy Operacyjne 2 laboratorium Mateusz Hołenko 6 listopada 2011 Plan zajęć 1 Łącza w systemie Linux kolejki FIFO vs. potoki specyfika łączy nazwanych schemat komunikacji

Bardziej szczegółowo

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

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

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

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

System operacyjny UNIX system plików. mgr Michał Popławski, WFAiIS

System operacyjny UNIX system plików. mgr Michał Popławski, WFAiIS System operacyjny UNIX system plików System plików systemu UNIX (s5fs) System plików ma strukturę drzewa. Na samym szczycie znajduje się korzeń (root), symbolicznie przedstawiany jako /. Z punktu widzenia

Bardziej szczegółowo

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII Wrocław 2006 INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl INTERNETOWE BAZY DANYCH PLAN NA DZIŚ : Cookies Sesje Inne możliwości

Bardziej szczegółowo

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

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

INFORMATYKA Studia Niestacjonarne Elektrotechnika

INFORMATYKA Studia Niestacjonarne Elektrotechnika INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl

Bardziej szczegółowo

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Przykład: $ ls more Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Tworzenie łącza #include int pipe(int filedes[2]); Przykład: int

Bardziej szczegółowo

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

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Instrukcja konfiguracji funkcji skanowania

Instrukcja konfiguracji funkcji skanowania Instrukcja konfiguracji funkcji skanowania WorkCentre M123/M128 WorkCentre Pro 123/128 701P42171_PL 2004. Wszystkie prawa zastrzeżone. Rozpowszechnianie bez zezwolenia przedstawionych materiałów i informacji

Bardziej szczegółowo

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.

Bardziej szczegółowo

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

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe Architektury Usług Internetowych Laboratorium 2. Usługi sieciowe Wstęp Celem laboratorium jest zapoznanie się z modelem usług sieciowych na przykładzie prostego serwera Apache Axis2. Apache Axis2 Apache

Bardziej szczegółowo

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Podział programu na moduły

Podział programu na moduły Materiały Podział programu na moduły Informatyka Szczegółowe informacje dotyczące wymagań odnośnie podziału na moduły: http://www.cs.put.poznan.pl/wcomplak/bfiles/c_w_5.pdf Podział programu na moduły pozwala

Bardziej szczegółowo

Systemy rozproszone. Cezary Sobaniec Marek Libuda. Skrypt do ćwiczeń laboratoryjnych. v1.1 07/09/2006

Systemy rozproszone. Cezary Sobaniec Marek Libuda. Skrypt do ćwiczeń laboratoryjnych. v1.1 07/09/2006 Systemy rozproszone Skrypt do ćwiczeń laboratoryjnych Cezary Sobaniec Marek Libuda v1.1 07/09/2006 Uczelnia On-Line 2006 Spis treści 1 Zdalne wywołanie procedur Sun RPC 5 1.1 Wprowadzenie.........................

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana Wykład Materiały bazują częściowo na slajdach Marata Dukhana Języki programowania Kompilowane np. C, C++, Pascal Interpretowane np. JavaScript, PHP, Python, VBA Pośrednie np. Java, C# Znane kompilatory

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 6 dr inż. Komunikowanie się procesów Z użyciem pamięci współdzielonej. wykorzystywane przede wszystkim w programowaniu wielowątkowym. Za pomocą przesyłania

Bardziej szczegółowo

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby

Bardziej szczegółowo

Specyfikacja API Runtime BAS 3.0

Specyfikacja API Runtime BAS 3.0 Specyfikacja API Runtime BAS 3.0 Spis treści Wstęp... 4 Informacja o dokumencie... 4 Opis usługi... 4 Typowy sposób wywołania usługi... 5 Udostępniane funkcje... 6 Funkcje liczące... 6 Execute... 6 SafeExecute...

Bardziej szczegółowo

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Typy plików. Oznaczenie f -

Typy plików. Oznaczenie f - Typy plików Oznaczenie f - d b c l p s Typ Zwykły plik Katalog Urządzenie blokowe Urządzenie znakowe Dowiązanie symboliczne Potok (pipe) do komunikacji międzyprocesowej Gniazdo (socket) do komunikacji

Bardziej szczegółowo

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

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h > PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece

Bardziej szczegółowo

SMB jako rozproszony system plików Prezentacja na SO

SMB jako rozproszony system plików Prezentacja na SO SMB jako rozproszony system plików Prezentacja na SO Sławomir Zatorski 21 stycznia 2003 1 Spis treści 1 Pakiet Samba 3 2 Implementacje Microsoftu 3 3 Dostęp do plików na innym komputerze 3 4 Różnice w

Bardziej szczegółowo

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists() Paweł Gmys PHP strona 1 Lekcja 10 Uprawnienia Aby skrypt PHP mógł odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są zależne od serwera. Najczęściej chyba skrypt ma uprawnienia takie,

Bardziej szczegółowo

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

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część siódma Przetwarzanie plików amorficznych Konwencja języka C Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie

Bardziej szczegółowo

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

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include

Bardziej szczegółowo

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

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy

Bardziej szczegółowo

Pliki. Operacje na plikach w Pascalu

Pliki. Operacje na plikach w Pascalu Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h > PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece

Bardziej szczegółowo

Praca w sieci równorzędnej

Praca w sieci równorzędnej Praca w sieci równorzędnej 1. Architektura sieci równorzędnej i klient-serwer Serwer - komputer, który udostępnia zasoby lub usługi. Klient komputer lub urządzenie korzystające z udostępnionych przez serwer

Bardziej szczegółowo

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

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411b Plan wykładu Operacje wejścia-wyjścia Dostęp do plików Struktury

Bardziej szczegółowo

Systemy plików i zarządzanie pamięcią pomocniczą. Struktura pliku. Koncepcja pliku. Atrybuty pliku

Systemy plików i zarządzanie pamięcią pomocniczą. Struktura pliku. Koncepcja pliku. Atrybuty pliku Systemy plików i zarządzanie pamięcią pomocniczą Koncepcja pliku Metody dostępu Organizacja systemu plików Metody alokacji Struktura dysku Zarządzanie dyskiem Struktura pliku Prosta sekwencja słów lub

Bardziej szczegółowo

Wykład 1

Wykład 1 Wstęp do programowania 1 Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Wprowadzenie Cel wykładów z programowania proceduralnego Wykład jest poświęcony językowi C i jego

Bardziej szczegółowo

System Kancelaris. Zdalny dostęp do danych

System Kancelaris. Zdalny dostęp do danych Kancelaris krok po kroku System Kancelaris Zdalny dostęp do danych Data modyfikacji: 2008-07-10 Z czego składaj adają się systemy informatyczne? System Kancelaris składa się z dwóch części: danych oprogramowania,

Bardziej szczegółowo

Laboratorium - Poznawanie FTP

Laboratorium - Poznawanie FTP Cele Część 1: Korzystanie z usługi FTP z wiersza poleceń. Część 2: Pobranie pliku z serwera FTP za pomocą WS_FTP LE Część 3: Korzystanie z usługi FTP w przeglądarce Scenariusz File Transfer Protocol (FTP)

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików: Pliki W celu wykonania jakiejkolwiek operacji na istniejącym pliku, plik ten musi zostać otwarty, natomiast jeśli plik jeszcze nie istnieje, to musi zostać utworzony. Plik może zostać otwarty w trybie:

Bardziej szczegółowo

Prezentacja systemu plików NFS

Prezentacja systemu plików NFS Prezentacja systemu plików NFS Jakub Jonik 15 stycznia 2003 1 1 Wprowadzenie NFS (network file system) jest rozproszonym systemem plików opracowanym przez firmę SUN Microsystems. Został wprowadzony do

Bardziej szczegółowo

IBM DCE/DFS. Mikołaj Gierulski. 17 stycznia 2003

IBM DCE/DFS. Mikołaj Gierulski. 17 stycznia 2003 IBM DCE/DFS Mikołaj Gierulski 17 stycznia 2003 1 Spis treści 1 IBM DCE 3 2 DCE/Distributed File Service 3 2.1 Rozwiązanie podstawowych problemów rozproszonych systemów plików.... 3 2.1.1 Nazewnictwo................................

Bardziej szczegółowo

Wstęp do programowania 1

Wstęp do programowania 1 Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short

Bardziej szczegółowo

Struktury. Przykład W8_1

Struktury. Przykład W8_1 Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Tablice, funkcje - wprowadzenie

Tablice, funkcje - wprowadzenie Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład

Bardziej szczegółowo

Przykład. Podaj nazwę domenową hosta a odczytaj jego adres IP, lub odwrotnie:

Przykład. Podaj nazwę domenową hosta a odczytaj jego adres IP, lub odwrotnie: Adres internetowy klasa wxipv4address - wymaga #include Najważniejsze metody: bool Hostname(const wxstring& hostname) ustawia nazwę domenową hosta lub adres IP w notacji kropki: a.b.c.d bool

Bardziej szczegółowo

Programowanie strukturalne język C - wprowadzenie

Programowanie strukturalne język C - wprowadzenie Programowanie strukturalne język C - wprowadzenie Dr inż. Sławomir Samolej D102 C, tel: 865 1766, email: ssamolej@prz-rzeszow.pl WWW: ssamolej.prz-rzeszow.pl Cechy programowania strukturalnego Możliwość

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017 Wykład nr 7 (11.01.2017) Rok akademicki 2016/2017, Wykład

Bardziej szczegółowo

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe Wykład 7: Transport: protokół TCP Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe (II UWr) Wykład 7 1 / 23 W poprzednim odcinku Niezawodny transport Algorytmy

Bardziej szczegółowo

Na chwilę obecną biblioteka ElzabObsluga.dll współpracuje tylko ze sprawdzarkami RSowymi.

Na chwilę obecną biblioteka ElzabObsluga.dll współpracuje tylko ze sprawdzarkami RSowymi. Instrucja wdrożenia biblioteki ElzabObsluga.dll Wymagane wersje: ihurt 6.3 ElzabObsluga.dll 6.1.0.0 KhAutomat 6.3.0.0 Schemat blokowy: Na chwilę obecną biblioteka ElzabObsluga.dll współpracuje tylko ze

Bardziej szczegółowo

Opis komunikacji na potrzeby integracji z systemem klienta (12 kwiecień, 2007)

Opis komunikacji na potrzeby integracji z systemem klienta (12 kwiecień, 2007) Opis komunikacji na potrzeby integracji z systemem klienta (12 kwiecień, 2007) Copyright 2004 Anica System S.A., Lublin, Poland Poniższy dokument, jak również informacje w nim zawarte są całkowitą własnością

Bardziej szczegółowo

INSTRUKCJA OBSŁUGI DLA SIECI

INSTRUKCJA OBSŁUGI DLA SIECI INSTRUKCJA OBSŁUGI DLA SIECI Zapisywanie dziennika druku w lokalizacji sieciowej Wersja 0 POL Definicje dotyczące oznaczeń w tekście W tym Podręczniku użytkownika zastosowano następujące ikony: Uwagi informują

Bardziej szczegółowo

Konfiguracja serwera OPC/DDE KEPSServerEX oraz środowiska Wonderware InTouch jako klienta DDE do wymiany danych

Konfiguracja serwera OPC/DDE KEPSServerEX oraz środowiska Wonderware InTouch jako klienta DDE do wymiany danych Ustawienia serwera 1. Uruchomić serwer KEPServerEX w trybie administracji 2. Wywołać ustawienia serwera 3. W zakładce Runtime Process ustawić opcję Process Mode w tryb Interactive 4. Zaakceptować ustawienia

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

SERWER AKTUALIZACJI UpServ

SERWER AKTUALIZACJI UpServ upserv_pl 02/14 SERWER AKTUALIZACJI UpServ SATEL sp. z o.o. ul. Schuberta 79 80-172 Gdańsk POLSKA tel. 58 320 94 00 serwis 58 320 94 30 dz. techn. 58 320 94 20; 604 166 075 info@satel.pl www.satel.pl SATEL

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

Bardziej szczegółowo

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł mysqli ma dwa interfejsy: proceduralny i obiektowy) PostgreSQL Oracle MS

Bardziej szczegółowo

Projektowanie klas c.d. Projektowanie klas przykład

Projektowanie klas c.d. Projektowanie klas przykład Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej

Bardziej szczegółowo

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Komunikacja za pomocą potoków. Tomasz Borzyszkowski Komunikacja za pomocą potoków Tomasz Borzyszkowski Wstęp Sygnały, omówione wcześniej, są użyteczne w sytuacjach błędnych lub innych wyjątkowych stanach programu, jednak nie nadają się do przekazywania

Bardziej szczegółowo

Java jako język programowania

Java jako język programowania Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)

Bardziej szczegółowo