Remote Procedure Calls (RPC) Introdução SUN RPC. ISEL - D E E C - S E S - S O 19 RPCs I n t r o d u ç ã o

Tamanho: px
Começar a partir da página:

Download "Remote Procedure Calls (RPC) Introdução SUN RPC. ISEL - D E E C - S E S - S O 19 RPCs I n t r o d u ç ã o"

Transcrição

1 Remote Procedure Calls (RPC) Introdução SUN RPC 1

2 Remote Procedure Call (Chamadas a Procedimentos Remotos) Objectivo: Evocar um procedimento remoto com a mesma facilidade com que se evoca um procedimento local Client yesorno = Primo(int a) Server int Primo(int n) { for(int i=2; i<n; ++i) if(n % i == 0) return 1; return 0; } Network Vantagens: Distribuir/centralizar o processamento Tirar partido das características das máquinas (e x: servidor dedicado a processamento vectorial) 2

3 Chamadas a procedimentos/serviços Consumidor Envia uma mensagem ao fornecedor com: I D d o s e r v i ç o Parâmetros do serviço Fornecedor Recebe a mensagem Processa o serviço Envia, ao consumidor, o resultado do serviço B l o q u e i a -se à espera de novo pedido 1- InProccess procedure call ID do serviço: Domínio do ID: universo do processo ID: endereço/nome do procedimento Suporte à mensagem: call, r e t u r n Nota: a mensagem é a frame de stack 2 - Local procedure call ID do serviço: D o m í n i o d o I D : u n i v e r s o d a m á q u i n a ID: IPC endpoint (nome IPC) e nº de procedimento Suporte à mensagem: mecanismo de comunicação IPC Diferenças para com o modelo InProccess PC: O fornecedor pode não estar activo O fornecedor pode falhar e o consumidor continuar a execução Pode não ser possível lançar o fornecedor (não há desc. Processos liv.) Pode não ser possível abrir a ligação IPC O consumidor pode ter que localizar o fornecedor antes de evocar o serviço 3

4 Chamadas a procedimentos/serviços 3- Remote procedure call (RPC) ID do serviço: Domínio do ID: universo da rede ID: network endpoint ( m á q u i n a e endpoint d e n t r o d a m á q u i n a ) e n º d e s e r v i ç o Suporte à mensagem: mecanismo de transporte de rede Considerações: Possível utilização de comunicação não fiável Situações de erros de ambiente de rede Gestão dos t i m e o u t s Compatibilidade na representação de dados Assim, os RPC apareceram no sentido de transformar, tanto quanto possível, uma chamada remota numa chamada Inprocess. P a r a t a l t e r -se -á que resolver os seguintes aspectos: Network aspects: Transport protocol (udp/ tcp) Binding (localização e o próprio b i n d i n g ) Semântica do call (exactly once, at most once, at least once ) Machine aspects: Data representation Error handling (server crash, network crash, client crash ou abort) Parameter passing 4

5 RPC - Remote Procedure Call CLIENTE CALL Remote Procedure CALL Local Procedure SERVER Parâmetros Resultados Resultados Parâmetros STUB do Cliente (Transparência à rede) Mensagem de pedido Mensagem de resposta Mensagem de resposta STUB do Server (Transparência à rede) Mensagem de pedido NETWORK A parte do código, que tentará controlar os vários aspectos da chamada remota, designa-se de STUB Binding, data representation, error handling, etc 5

6 RPC no modelo OSI Application Aplicação Nível de representação dados de Presentation XDR Session RPC Transport TCP UDP Network IP Data-Link & Physical Network Hardware Interface 6

7 Implementações de RPC Implementações de RPC: SUN s Open Network Computing (ONC) Transport protocol: tcp, udp e outros Data representation : E x t e r n a l Data Representation ( X D R ), b i g e n d i a n, fixed network format Apollo s Network Computing Architecture (NCA) Transport protocol: udp e outros orientados ao datagrama Data representation : Network Data Representation ( N D R ), big ou l i t t l e e n d i a n, v a r i a b l e network format (o cliente descodifica o formato recebido para o seu formato) 7

8 XDR Fixed network format Big endian Minimum size of any field: 32 bits Floating point: IEEE (32 ou 64 bits) Character type : ASCII XDR / NDR NDR variable network format B i g e n d i a n o r l i t t l e e n d i a n Minimum size of any field: 8 bits Floating point: depende de formato, IEEE, VAX, IBM, CRAY,... (32 ou 64 bits) Character type : depende do formato, ASCII, EBCDIC Tipos (complexos) de dados suportados X D R / N D R : Enumerados, estruturas, uniões, arrays unidimensionais de dimensão fixa e variável, dados opacos (opaque data) de dimensão fixa e variável N D R Arrays multidimensionais de dimensão fixa e variável Utilização de: Implicit typing (tipos implícitos, quem recebe sabe o que recebe, e xº envio de um inteiro: 32 bits com o valor) Exemplo de explicit typing: ASN.1 Abtract Syntax Notation 1, typing a 8 bits, e xº do envio de um inteiro: 8 bits com o tipo, 8 bits com a dimensão, 32 bits com o valor 8

9 Remote Procedure Calls (RPC) SUN RPC 9

10 Geração de uma solução SUN RPC Ficheiros criados pelo u s e r Ficheiros gerados pelo RPCGEN Especificação da interface em XDR aplic.x Compilador de RPC - rpcgen aplic_clnt.c compile & link STUB Cliente Filtros XDR e Include file aplic.h aplic_xdr.c STUB Servidor aplic_svc.c compile & link executável Cliente Cliente aplic.c bibliotecas XDR e RPC Server functions func_svc.c executável Servidor 10

11 SUN RPC Date Service IDL Interface Definition Language A IDL dos SUN RPC é uma extensão do XDR /* Ficheiro: dates.x */ Date Service program DATE_PROG { version DATE_VERS { long BIN_DATE(void) = 1; /* Procedure number 1 */ string STR_DATE(long) = 2; /* Procedure number 2 */ } = 1; /* Version number */ } = 0x ; /* Program number */ XDR IDL Os procedimentos só podem ter um argumento e devolver um resultado. Quando necessitam de receber/deveolver mais que um valor, tal requer a utilização de estruturas. Os procedimentos existem dentro de um programa e de uma versão. Assim, os procedimentos são inequivocamente identificados por: programa, versão, IdProc Gama de valores para o programa: 0x x1f ff ff ff -> defined by SUN 0x ( ) 0x3f ff ff ff -> defined by user 0x ( ) 0x5f ff ff ff -> transient 0x ( ) 0x7f ff ff ff -> reserved 11

12 RPC Client code: getdates.c #include <stdio.h> #include <rpc/rpc.h> #include "dates.h" // file generated by rpcgen #define PROTOCOL "tcp" void main(int argc, char *argv[]) { CLIENT *cl; /* RPC handle*/ char *server; long *lresult; /* return value from bin_date_1 */ char **sresult; /* return value from str_date_1 */ int protocol = PROTOCOL; if (argc<2) { printf("usage : %s hostname [-u]\n", argv[0]); exit(1); } if (argc>2) if(!strcmp(argv[2], "-u")) protocol = "udp"; server = argv[1]; printf("rpc: server %s, prog %d, vers %d, protocol %s\n", server, DATE_PROG, DATE_VERS, protocol); // Create client RPC handle cl = clnt_create(server, DATE_PROG, DATE_VERS, protocol); // tcp ou udp if(cl==null) { clnt_pcreateerror(server); exit(1); } if ( (lresult = bin_date_1(null, cl))==null) { clnt_perror(cl, server); exit(2); } printf("time on %s = %ld \n", server, *lresult); if ( (sresult = str_date_1(lresult, cl))==null) { clnt_perror(cl, server); exit(3); } printf("time on %s = %s \n", server, *sresult); clnt_destroy(cl); exit(0); }; 12

13 RPC code: dates_clnt.c #include <memory.h> /* for memset */ #include "dates.h" /* Default timeout can be changed using clnt_control() */ static struct timeval TIMEOUT = { 25, 0 }; long * bin_date_1(void *argp, CLIENT *clnt) { static long clnt_res; memset((char *)&clnt_res, 0, sizeof(clnt_res)); if (clnt_call(clnt, BIN_DATE, xdr_void, argp, xdr_long, &clnt_res, TIMEOUT)!= RPC_SUCCESS) return (NULL); return (&clnt_res); } char ** str_date_1(long *argp, CLIENT *clnt) { static char *clnt_res; memset((char *)&clnt_res, 0, sizeof(clnt_res)); if (clnt_call(clnt, STR_DATE, xdr_long, argp, xdr_wrapstring, &clnt_res, TIMEOUT)!=RPC_SUCCESS) return (NULL); return (&clnt_res); } 13

14 RPC Server code: dateservice.c #include <rpc/rpc.h> #include "dates.h" // file generated by rpcgen long * bin_date_1_svc(void * pvoid, struct svc_req *preq) { static long timeval; // static because of the returning pointer timeval = time((long *)0); return(&timeval); } char** str_date_1_svc(long * bintime, struct svc_req *preq) { static char *ptr; // static because of the returning pointer } ptr = ctime(bintime); return(&ptr); 14

15 RPC code: dates_svc.c static void date_prog_1(struct svc_req *rqstp, register SVCXPRT *transp) { union { long str_date_1_arg; } argument; char *result; xdrproc_t xdr_argument, xdr_result; char *(*local)(char *, struct svc_req *); switch (rqstp->rq_proc) { case NULLPROC: (void) svc_sendreply(transp, (xdrproc_t) xdr_void, (char *)NULL); return; case BIN_DATE: xdr_argument = (xdrproc_t) xdr_void; xdr_result = (xdrproc_t) xdr_long; local = (char *(*)(char *, struct svc_req *)) bin_date_1_svc; break; case STR_DATE: xdr_argument = (xdrproc_t) xdr_long; xdr_result = (xdrproc_t) xdr_wrapstring; local = (char *(*)(char *, struct svc_req *)) str_date_1_svc; break; default: svcerr_noproc(transp); return; } (void) memset((char *)&argument, 0, sizeof (argument)); if (!svc_getargs(transp, xdr_argument, (caddr_t) &argument)) svcerr_decode(transp); return; result = (*local)((char *)&argument, rqstp); if (result!= NULL &&!svc_sendreply(transp, xdr_result, result)) svcerr_systemerr(transp); if (!svc_freeargs(transp, xdr_argument, (caddr_t) &argument)) { fprintf(stderr, "unable to free arguments"); exit(1); } return; } Procedimento 0: para teste 15

16 RPC code: dates_svc.c (cont) Int main(int argc, char **argv) { register SVCXPRT *transp; (void) pmap_unset(date_prog, DATE_VERS); transp = svcudp_create(rpc_anysock); If (transp == NULL) { fprintf(stderr, "cannot create udp service."); exit(1); } if (!svc_register(transp, DATE_PROG, DATE_VERS, date_prog_1, IPPROTO_UDP)) { fprintf(stderr, "unable to register (DATE_PROG, DATE_VERS, udp)."); exit(1); } transp = svctcp_create(rpc_anysock, 0, 0); if (transp == NULL) { fprintf(stderr, "cannot create tcp service."); exit(1); } if (!svc_register(transp, DATE_PROG, DATE_VERS, date_prog_1, IPPROTO_TCP)) { fprintf(stderr, "unable to register (DATE_PROG, DATE_VERS, tcp)."); exit(1); } svc_run(); fprintf(stderr, "svc_run returned"); exit(1); /* NOTREACHED */ } 16

17 XDR IDL A especificação de protocolos RPC consiste numa lista de definições: definition-list: definition <;> definition <;> definition-list definition: const-definition enum-definition struct-definition union-definition typedef-definition program-definition Constantes, enumerados e estruturas: const-definition: <const> const-identifier <=> integer enum-definition: <enum> enum-identifier <{> enum-value-list <}> enum-value-list: enum-value enum-value <,> enum-value-list enum-value: enum-value-ident enum-value-ident <=> value struct-definition: <struct> struct-ident <{> struct-list <}> struct-list: <declaration> <;> <declaration> <;> struct-list Definição de tipos: typedef-definition: <typedef> declaration <;> 17

18 XDR IDL Declaration: declaration: simple-declaration fixed-array-declaration variable-array-declaration pointer-declaration string-declaration opaque-declaration Pointer, array, string, opaque declarations: simple-declaration: type-ident variable-ident fixed-array-declaration: type-ident variable-ident <[> value <]> Ex: color palete[8] igual no header file (*.h) variable-array-declaration: type-ident variable-ident < < > value < > > type-ident variable-ident < < > < > > pointer-declaration: type-ident <*> variable-ident; string-declaration: <string> variable-ident < < > value < > > <string> variable-ident < < > < > > opaque-declaration: <opaque> variable-ident <[> value <]> <opaque> variable-ident < < > value < > > 18

19 XDR IDL: exemplos #define MAX_SIZE 4096 Teste.x const MAX_SIZE = 4096; enum color { RED=0, GREEN=1, BLUE=2 }; typedef enum color ecolor; struct sx { int i; char j; int ni[10]; int vsni<20>; int vsni2<>; string buffer<32>; string vsstr<>; opaque fixdata[512]; opaque vardata<1024>; }; rpcgen enum color { RED = 0, GREEN = 1, BLUE = 2,}; extern bool_t xdr_color(xdr *, color*); typedef color ecolor; extern bool_t xdr_ecolor(xdr *, ecolor*); struct sx { int i; char j; int ni[10]; struct { u_int vsni_len; int *vsni_val; } vsni; struct { u_int vsni2_len; int *vsni2_val; } vsni2; char *buffer; char *vsstr; char fixdata[512]; struct { u_int vardata_len; char *vardata_val; } vardata; }; extern bool_t xdr_sx(xdr *, sx*); Teste.h 19

20 XDR IDL Programa, versões e procedimentos: program-definition: <program> program-ident <{> version-list <}> <}> <=> value <;> version-list: version <;> version <;> version-list version: <version> version-ident <{> procedure-list <}> <=> value procedure-list: procedure <;> procedure <;> procedure-list procedure: type-ident procedure-ident <(> type-ident <)> <=> value program DATE_PROG { Dates.x version DATE_VERS { long BIN_DATE(void) = 1; string STR_DATE(long) = 2; } = 1; } = 0x ; Stubs do cliente Dates.h #define DATE_PROG ((u_long)0x ) #define DATE_VERS ((u_long)1) #define BIN_DATE ((u_long)1) extern long * bin_date_1(void *, CLIENT *); extern long * bin_date_1_svc(void *, struct svc_req *); #define STR_DATE ((u_long)2) extern char ** str_date_1(long *, CLIENT *); extern char ** str_date_1_svc(long *, struct svc_req *); Stubs do servidor 20

21 RPC Client interface RPC: Client high level interface int callrpc(char* host, u_long prog, u_long vers, u_long proc, xdrproc_t inproc, char * in, xdrproc_t outproc, char * out); RPC: Client interface CLIENT clnt_create( char *host, u_int prog, u_int vers, char *prot); enum clnt_stat clnt_call(client *rh, u_long proc, xdrproc_t xargs, caddr_t argsp, xdrproc_t xres, caddr_t resp, struct timeval timeout); struct rpc_err clnt_geterr(client *rh); bool_t clnt_freeres(client *rh, xdrproc_t xres, caddr_t resp); bool_t clnt_control(client *cl, u_int request, char *info); void clnt_abort(client *rh); void clnt_destroy(client *rh); 21

22 RPC Server interface RPC: Server high level interface int registerrpc(u_long prog, u_long vers, u_long proc, xdrproc_t inproc,char *(*procname)(), xdrproc_t inproc); void svc_run(); RPC: Server interface SVCXPRT * svcudp_create(int sock); SVCXPRT * svctcp_create(int socku_int szsendbuffer, u_int szrecvbuffer); bool_t svc_register( SVCXPRT *xprt, u_long prog, u_long vers, void (*dispatch)(), u_long protocol); Void dispatch(struct svc_req *request, SVCXPRT * xprt); bool_t svc_getargs(svcxprt* xprt, xdrproc_t inproc, char *in); bool_t svc_freeargs(svcxprt *xprt, xdrproc_t inproc, char *in); bool_t svc_sendreplay(svcxprt *xprt, xdrproc_t outproc, char *out); void svc_unregister (u_long prog, u_long vers); void svc_destroy(svcxprt * xprt); 22

23 XDR, External data representation XDR streams Cria-se uma stream XDR, com opção de XDR_ENCODE ou XDR_DECODE, uma stream não é mais que um canal para um destinatário, que pode ser um bloco de memória ou um ficheiro. De seguida, evoca-se um ou mais filtros sobre ela, sendo feito o ENCODE para a stream, ou o DECODE para fora da stream. Fecha-se a stream. C types / primitive filters / XDR types C type Filter XDR Type char xdr_ char () int short int xdr_ short() int unsigned short int xdr_ u _ short() unsigned unsigned int int xdr_ int() int unsigned int xdr_ u _ int() unsigned int long xdr_ long( ) int unsigned long xdr_ u _ long usigned int float xdr_ float() float double xdr_ double () double v o i d xdr_ void( ) v o i d enum xdr_ enum() int Filtros compostos xdr_ string() xdr_ opaque () xdr_ bytes() xdr_vector() xdr_ array () xdr_ union () xdr_ reference () xdr_ p o i n t e r() 23

24 Serviço de nomes: portmapper Máquina do servidor Portmapper Serviço de registos Porto bem conhecido 111 Find 2 1 Publish Cliente 3 Bind Servidor do serviço Máquina do cliente 1 - O processo Servidor regista o serviço/porto/protocolo no PortMapper. 2 - O processo Cliente requer, os elementos associados ao serviço pretendido, ao PortMapper 3 - O C l i e n t e e s t a b e l e c e u m canal de activação de RPCs com o servidor 24

25 Portmapper.x const PMAP_PORT = 111; const IPPROTO_TCP=6; const IPPROTO_UDP=17; struct mapping { unsigned int prog; unsigned int vers; unsigned int prot; unsigned int port; }; Protocolo do Portmapper typedef struct maplist *pmaplist; struct maplist { mapping map; pmaplist next; }; O ficheiro /usr/include/rpc/pmap_prot.h Já contém os protótipos das funções de acesso ao portmapper struct call_args { unsigned int prog; unsigned int vers; unsigned int proc; opaque args<>; }; struct call_result { unsigned int port; opaque res<>; }; program PMAP_PROG { version PMAP_VERS { void PMAPPROC_NULL(void) = 0; bool PMAPPROC_SET(mapping) = 1; bool PMAPPROC_UNSET(mapping) = 2; unsigned int PMAPPROC_GETPORT(mapping) = 3; pmaplist PMAPPROC_DUMP(void) = 4; call_result PMAPPROC_CALLIT(call_args) = 5; } = 2; } = ; CALLIT: procedimento que evoca um serviço registado 25

26 Acesso ao Portmapper: getport.c main(int argc, char *argv[]) { CLIENT *cl; u_int *pport; char *server; pmaplist *results, res; mapping map; if (argc!=5) FatalErrorUser("Usage : %s hostname prog vers prot\n", argv[0]); server = argv[1]; map.prog = (u_int) atoi(argv[2]); map.vers = (u_int) atoi(argv[3]); map.prot = (u_int) atoi(argv[4]); printf("portmapper get port program : getting port on <%s>\n", argv[1]); printf("prog %u, Vers %u, Prot %u\n", map.prog, map.vers, map.prot); if ((cl = clnt_create(server, PMAP_PROG, PMAP_VERS, "udp")) == NULL) { clnt_pcreateerror(server); exit(2); } if ((pport = pmapproc_getport_2(&map, cl)) == NULL) { clnt_perror(cl, server); exit(3); } printf("port number : %u\n", *pport); } clnt_destroy(cl); exit(0); 26

27 Acesso ao Portmapper: dump.c main(int argc, char* argv[]) { CLIENT *cl; char *server; pmaplist *results, res; if (argc!=2) FatalErrorUser("Usage : %s hostname\n", argv[0]); printf("portmapper dump program : dumpping on <%s>\n", argv[1]); server = argv[1]; if ((cl = clnt_create(server, PMAP_PROG, PMAP_VERS, "udp")) == NULL) ERRO(); if ((results = pmapproc_dump_2(null, cl)) == NULL) ERRO(); for(res = *results; res!= NULL; res = res->next) printf("prog = %u, Vers = %u, Prot = %u, Port = %u\n", res->map.prog, res->map.vers, res->map.prot, res->map.port); } clnt_destroy(cl); exit(0); 27

28 Serviço CALLIT do portmapper O serviço CALLIT do portmapper, faz a evocação indirecta de um serviço. 1 O cliente pede ao p o r t m a p p e r, para executar o procedimento PR, do programa PG da versão VR 2 O portmapper chama o serviço sobre UDP 3 O servidor devolve o resultado ao p o r t m a p p e r 4 O portmapper devolve o resultado ao cliente Máquina do servidor Portmapper Callit(PG,VR,PR, DATA) Serviço de registos 1 2 PG,VR,PR(DATA) Cliente 4 3 RES, porto Servidor do serviço Máquina do cliente Notas: caso os servidor falhe o serviço pode não retornar. A recomendação de uso deste serviço é para testar a actividade de um serviço (procedimento 0), por exemplo em broadcast para assim ficar-se a saber quantos serviços estão efectivamente activos e onde estão (máquina, porto) 28

29 RPC service by callit: pnullc.c main(int argc, char *argv[]) { CLIENT *cl; char *server; u_int pos, port, size; call_args cargs; call_result *cres; if (argc!=4) { fprintf(stderr,"usage : %s hostname prog vers\n", argv[0]); exit(1); } server = argv[1]; /* Caracterizacao do servico indirecto : prog, vers, proc=0 */ cargs.prog = (u_int) atoi(argv[2]); cargs.vers = (u_int) atoi(argv[3]); cargs.proc = 0; /* Procedure 0 */ cargs.args.args_len = 0; // pos; cargs.args.args_val = NULL; //mem; printf("testing null procedure of Server %s, Prog %u, Vers %u, using callit function\n", argv[1], cargs.prog, cargs.vers); if ((cl = clnt_create(server, PMAP_PROG, PMAP_VERS, "udp")) == NULL) { clnt_pcreateerror(server); exit(2); } if ((cres = pmapproc_callit_2(&cargs, cl)) == NULL) { clnt_perror(cl, server); exit(4); } printf("program alive and waiting, %s port : %u, res.len : %u\n", "Valores devolvidos pelo callit.", cres->port, cres->res.res_len); } clnt_destroy(cl); exit(0); NULL procedure by callit 29

30 Broadcast RPC A seguinte função envia um broadcast para a rede, para o portmapper, para executar um serviço. O serviço será executado através do serviço CALLIT. int clnt_broadcast(u_long prog, u_long vers, u_long proc, xdrproc_t inproc, char * in, xdrproc_t outproc, char * out resultproc_t eachresult); eachresult(char *out, struct sockaddr_in *addr) {...}; Por cada resposta recebida, a função EACHRESULT é executada com o resultado e o endereço do remetente, enquanto a função EACHRESULT devolver zero. Quando devolver um valor deferente de zero, o função CLNT_BROACAST termina com RPC_SUCCESS. Se pretendermos mais respostas e houver timeout, a função CLNT_BROACAST termina com RPC_TIMEDOUT. A função de broadcast, faz broacasts com os seguintes intervalos em segundos: 4, 6, 8, 10, 12, 14 30

31 Broadcast RPC: pnullb.c int n=0; /* Varável global */ proc_replay(void * out, struct sockaddr_in * addr) { struct hostent * hostentp; n++; NULL procedure by broadcast hostentp = gethostbyaddr(&addr->sin_addr.s_addr, sizeof(addr->sin_addr.s_addr), AF_INET); if(hostentp!= NULL) printf("server : %s\n", hostentp->h_name); return(0); } main(int argc, char * argv[]) { CLIENT *cl; char *server;pmaplist *results, res; mapping map; u_int *pport;enum clnt_stat stat; if (argc!=3) FatalErrorUser("Usage : %s prog vers\n", argv[0]); map.prog = (u_int) atoi(argv[1]); map.vers = (u_int) atoi(argv[2]); Procedure 0 stat = clnt_broadcast(map.prog, map.vers, 0, xdr_void, NULL, xdr_void, NULL, proc_replay); } printf("existem %d respostas\n", n); exit(0); 31

32 Bibliografia SUN RPC, XDR, XDR-IDL, Portmapper, funções de baixo nível John R. Corbin The Art of Distributed Applications: Programming techniques for Remote Procedure Calls Springer-Verlag, 1991 RPC introdução, SUN RPC, Apollo RPC, Xerox RPC W. Richard Stevens Unix Network programming Prentice -hall, 1990 RPC, abordagem conceptual Andrew S. Tanenbaum Distributed Operating Systems Prentice -hall,

Chamadas Remotas de Procedimentos (RPC)

Chamadas Remotas de Procedimentos (RPC) Chamadas Remotas de Procedimentos (RPC) Chamada Remota de Procedimento (RPC) ou Chamada de Função ou Chamada de Subrotina Método de transferência de controle de parte de um processo para outra parte Procedimentos

Leia mais

Sun RPC: Arquitectura

Sun RPC: Arquitectura Sun RPC: Arquitectura 12/13 Sistemas Distribuídos 38 Arquitectura Código do cliente Código do servidor stubs Run-Time Library Protocolo de apresentação Protocolo de sessão stubs (ou ties) Run-Time Library

Leia mais

Chamada Remota de Procedimento (RPC)

Chamada Remota de Procedimento (RPC) Chamada Remota de Procedimento (RPC) padrão cliente-servidor A (cliente) B (servidor) send (B, pedido) receive(b, &resp) receive (A, ) processa pedido send(a, ) repetição de padrão de comunicação encapsulação

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Chamada Remota de Procedimento Referência Sistemas operacionais modernos Andrew S. TANENBAUM Prentice-Hall, 1995 Seção 10.3 pág. 285-304 2 Conteúdo Introdução Operação básica Objetivos

Leia mais

Comunicação entre processos (RPC) COMUNICAÇÃO ENTRE PROCESSOS Remote Procedure Call - RPC. Comunicação entre processos (RPC)

Comunicação entre processos (RPC) COMUNICAÇÃO ENTRE PROCESSOS Remote Procedure Call - RPC. Comunicação entre processos (RPC) COMUNICAÇÃO ENTRE PROCESSOS Remote Procedure Call - RPC IPC por passagem de mensagens: cada aplicação tem um protocolo específico formato de mensagens; forma de tratamento de erros; ex.: servidor de operações

Leia mais

OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite

OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite Laboratório de Redes. Remote Procedure Call - RPC Pedroso 9 de março de 2006 1 Introdução 2 Conceitos básicos OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite que sejam criadas

Leia mais

Cliente/Servidor. RPC e MOM. Graça Bressan. Graça Bressan/LARC 2000 1

Cliente/Servidor. RPC e MOM. Graça Bressan. Graça Bressan/LARC 2000 1 Cliente/Servidor RPC e MOM Graça Bressan Graça Bressan/LARC 2000 1 Paradigmas para Construção de Programas Distribuídos Projeto Orientado a Comunicação Começa pela escolha do protocole de comunicação.

Leia mais

Remote Procedure Calls (RPC)

Remote Procedure Calls (RPC) Remote Procedure Calls (RPC) March 14, 2010 Sumário Ideia Implementação Transparência Semântica na presença de avarias Caso de estudo: ONC RPC da Sun Remote Procedure Call (RPC) A programação baseada em

Leia mais

Sistemas Distribuídos Arquiteturas Middlewares

Sistemas Distribuídos Arquiteturas Middlewares Sistemas Distribuídos Arquiteturas s Arquitetura Arquitetura de um sistema é sua estrutura em termos dos componentes e seus relacionamentos Objetivo: garantir que a estrutura satisfará as demandas presentes

Leia mais

Remote Procedure Call

Remote Procedure Call Remote Procedure Call O aumento de complexidade das aplicações, torna desejável um paradigma que permite software distribuído ser programado de maneira similar a aplicações convencionais que executam em

Leia mais

Sistemas Distribuídos RPC Remote Procedure Call

Sistemas Distribuídos RPC Remote Procedure Call Sistemas Distribuídos RPC Remote Procedure Call Universidade Federal do ABC Turma: Ciência da Computação Prof. Dr. Francisco Isidro Massetto Cliente/Servidor Quais os problemas? Baseado em E/S Erro propagado

Leia mais

Programação Estruturada I

Programação Estruturada I Programação Estruturada I Introdução a Linguagem C Prof. Thiago Caproni Tavares 1 Prof. Mateus dos Santos 2 1 thiago.tavares@ifsuldeminas.edu.br 2 mateus.santos@ifsuldeminas.edu.br Última Atualização:

Leia mais

Tipo de Dados em Linguagem C

Tipo de Dados em Linguagem C Tipo de Dados em Linguagem C Principais tipos de dados em C int : tipo de dados inteiros (exemplo: 1, -3, 100, -9, 18, etc.) float : tipo de dados reais (exemplo: 1.33, 3.14, 2.00, -9.0, 1.8, etc.) Ocupa

Leia mais

Redes de Computadores. 1 Questões de múltipla escolha. TE090 - Prof. Pedroso. 30 de novembro de 2010. Exercício 1: Considere:

Redes de Computadores. 1 Questões de múltipla escolha. TE090 - Prof. Pedroso. 30 de novembro de 2010. Exercício 1: Considere: TE090 - Prof. Pedroso 30 de novembro de 2010 1 Questões de múltipla escolha Exercício 1: Considere: I. O serviço de DNS constitui-se, em última instância, de um conjunto de banco de dados em arquitetura

Leia mais

Programação em C++: Introdução

Programação em C++: Introdução Programação em C++: Introdução J. Barbosa J. Tavares Visualização Científica Conceitos básicos de programação Algoritmo Conjunto finito de regras sobre as quais se pode dar execução a um dado processo

Leia mais

Comunicação em Sistemas Distribuídos. Bruno M. Carvalho Sala: 3B2 Horário: 35T34

Comunicação em Sistemas Distribuídos. Bruno M. Carvalho Sala: 3B2 Horário: 35T34 Comunicação em Sistemas Distribuídos Bruno M. Carvalho Sala: 3B2 Horário: 35T34 Comunicação em Sistemas Distribuídos Protocolos regras que os processos que estão se comunicando tem de seguir Protocolos

Leia mais

Aplicações de RPC no Ambiente SUN-OS

Aplicações de RPC no Ambiente SUN-OS Universidade de São Paulo Instituto de Ciências Matemáticas de São Carlos Departamento de Ciências de Computação e Estatística Aplicações de RPC no Ambiente SUN-OS Márcio Augusto de Souza Paulo Sérgio

Leia mais

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

MC102 Algoritmos e programação de computadores Aula 3: Variáveis MC102 Algoritmos e programação de computadores Aula 3: Variáveis Variáveis Variáveis são locais onde armazenamos valores na memória. Toda variável é caracterizada por um nome, que a identifica em um programa,

Leia mais

Distributed Systems Principles and Paradigms

Distributed Systems Principles and Paradigms Distributed Systems Principles and Paradigms Maarten van Steen VU Amsterdam, Dept. Computer Science (Tradução e Adaptação Ricardo Anido - IC/Unicamp) Capítulo 04: Comunicação Versão: 20 de março de 2014

Leia mais

Sistemas Distribuídos RPC

Sistemas Distribuídos RPC Sistemas Distribuídos RPC Disciplina: Sistemas Distribuídos Prof.: Edmar Roberto Santana de Rezende Faculdade de Engenharia de Computação Centro de Ciências Exatas, Ambientais e de Tecnologias Pontifícia

Leia mais

Capítulo 3: Chamadas de Procedimentos Remotos

Capítulo 3: Chamadas de Procedimentos Remotos Capítulo 3: Chamadas de Procedimentos Remotos 1 RPC: Benefícios Adequa-se ao fluxo de execução das aplicações Chamada síncrona de funções Simplifica tarefas fastidiosas e delicadas Construção e análise

Leia mais

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos RPC x RMI Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Chamada Remota a Procedimento Definição Passagem de Parâmetros STUBS Semântica de Falhas 2 RPC Chamada Remota a

Leia mais

Bibliotecas. Apoio à Programação Distribuída. Socket. Socket. bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas

Bibliotecas. Apoio à Programação Distribuída. Socket. Socket. bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas Apoio à Programação Distribuída bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas flexibilidade de programação disponibilidade da ferramenta facilidade de desenvolvimento e reuso

Leia mais

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1.

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1. Número: Nome: Página 1 de 6 LEIC/LETI, 2014/15, Repescagem do 1º Teste de Sistemas Distribuídos 30 de Junho de 2015 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração:

Leia mais

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipo de dados, tipo abstrato de dados, estruturas de dados Termos parecidos, mas com significados diferentes Tipo de dado Em linguagens de programação

Leia mais

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 02 Fundamentos de Linguagens Sumário : Linguagem, alfabeto e gramática

Leia mais

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO Tópicos Estrutura Básica B de Programas C e C++ Tipos de Dados Variáveis Strings Entrada e Saída de Dados no C e C++ INTRODUÇÃO O C++ aceita

Leia mais

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

PADI 2015/16. Aula 1 Introdução à Plataforma.NET PADI 2015/16 Aula 1 Introdução à Plataforma.NET 1 Sumário 1. Framework.NET Arquitectura 2. Linguagem C# 2.0 Sintaxe C# vs. Java vs. C++ 3. IDE: MS Visual Studio 2005 ou superior Ferramentas Console/Win

Leia mais

Algoritmos e Programação

Algoritmos e Programação Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti

Leia mais

Sistemas de Operação Sockets

Sistemas de Operação Sockets Sistemas de Operação Sockets O que é um socket? Uma interface de comunicação entre processos que podem ou não residir na mesma máquina, mas que não precisam estar relacionados. É usado normalmente para

Leia mais

Sistemas Distribuídos. Prof. Ricardo Ribeiro dos Santos ricrs@ec.ucdb.br

Sistemas Distribuídos. Prof. Ricardo Ribeiro dos Santos ricrs@ec.ucdb.br Sistemas Distribuídos Prof. Ricardo Ribeiro dos Santos ricrs@ec.ucdb.br Curso de Engenharia de Computação UCDB Julho/2003 Relembrando... Encapsulamento nas camadas de rede e protocolos 2-2 Relembrando...

Leia mais

COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC. Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla

COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC. Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla 1 1. Conceitos Básicos a. Invocação remota (RPC/RMI)

Leia mais

1 a. Sumário. 1. Conceitos Básicos a. Invocação remota (RPC/RMI) b. Semântica de invocação remota c. Invocação remota de métodos (RMI)

1 a. Sumário. 1. Conceitos Básicos a. Invocação remota (RPC/RMI) b. Semântica de invocação remota c. Invocação remota de métodos (RMI) PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla 1. Conceitos Básicos a. Invocação remota (RPC/RMI)

Leia mais

Obter conhecimentos básicos sobre programação socket para desenvolver softwares clientes.

Obter conhecimentos básicos sobre programação socket para desenvolver softwares clientes. Objetivo: Obter conhecimentos básicos sobre programação socket para desenvolver softwares clientes. Atividade 1 Estude, compile, corrija (se necessário) e teste o programa hostbyaddr.c. Modifique o programa

Leia mais

sockets interprocess communication Taisy Weber

sockets interprocess communication Taisy Weber sockets interprocess communication Taisy Weber Comunicação entre processos Mecanismos Pipes, FIFO (named pipes), semáforos, message queues. Memória compartilhada. Sockets Definição, chamadas de sistemas,

Leia mais

TROCA DE MENSAGENS SOCKETS. Comunicando processos através de SOCKETS. SOCKETS com conexão. SOCKETS sem conexão

TROCA DE MENSAGENS SOCKETS. Comunicando processos através de SOCKETS. SOCKETS com conexão. SOCKETS sem conexão TROCA DE MENSAGENS SOCKETS Comunicando processos através de SOCKETS SOCKETS com conexão SOCKETS sem conexão SOCKETS Princípios dos sockets: 2. Fornecer uma interface geral permitindo a construção de aplicações

Leia mais

Algoritmo e Técnica de Programação - Linguagem C

Algoritmo e Técnica de Programação - Linguagem C Algoritmo e Técnica de Programação Linguagem C Gilbran Silva de Andrade 5 de junho de 2008 Introdução A liguagem C foi inventada e implementada por Dennis Ritchie em um DEC PDP-11 que utilizava o sistema

Leia mais

06/10/2015. Modelo TCP/IP Camada de Transporte DISCIPLINA: TECNOLOGIA DE REDES DE COMPUTADORES. UDP User Datagram Protocol. UDP User Datagram Protocol

06/10/2015. Modelo TCP/IP Camada de Transporte DISCIPLINA: TECNOLOGIA DE REDES DE COMPUTADORES. UDP User Datagram Protocol. UDP User Datagram Protocol Tecnologia em Jogos Digitais Modelo TCP/IP Camada de Transporte DISCIPLINA: TECNOLOGIA DE REDES DE COMPUTADORES O transporte dos dados na INTERNET é realizado por dois protocolos. PROTOCOLOS TCP E UDP

Leia mais

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução Chamadas Remotas de Chamada Remota de Procedimento (RPC) ou Chamada de Função ou Chamada de Subrotina Método de transferência de controle de parte de um processo para outra parte Procedimentos => permite

Leia mais

Manual do Usuário - JIDOSHA

Manual do Usuário - JIDOSHA Manual do Usuário - JIDOSHA Biblioteca de Software para Reconhecimento Automático de Placas Veiculares Versão 1.5.18 Última atualização: 2015/07 1 Visão Geral 1.1 Condições Gerais 1.2 Licença de software

Leia mais

Sistemas Distribuídos (Parte 4 - Aplicação Distribuída)

Sistemas Distribuídos (Parte 4 - Aplicação Distribuída) Unidade de Gestão da Educação Presencial - GEDUP Pós-graduação em Redes de Computadores Sistemas Distribuídos (Parte 4 - Aplicação Distribuída) Prof. Ms. Tomás Dias Sant Ana Varginha, 2006 Sumário 1. INTRODUÇÃO...1

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Comunicação memória compartilhada troca de mensagens base de comunicação em sistemas distribuídos Mensagens básicas send (destino, msg) receive (origem, mensagem) questões semântica

Leia mais

Sistemas Distribuídos 59. Sistemas Distribuídos 61. "Receive não-bloqueante:

Sistemas Distribuídos 59. Sistemas Distribuídos 61. Receive não-bloqueante: Comunicação entre processos! Memória Compartilhada: " os processo compartilham variáveis e trocam informações através do uso dessas variáveis compartilhadas COMUNICAÇÃO ENTRE PROCESSOS P1 Área Compartilhda!

Leia mais

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Mestrado em Ciência da Computação 1o. Semestre / 2006 Prof. Fábio M. Costa fmc@inf.ufg.br www.inf.ufg.br/~fmc/ds-msc2006 Aula

Leia mais

Aspectos de Sistemas Operativos

Aspectos de Sistemas Operativos Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho Serviços de um sistema operativo Interface com o utilizador Chamadas ao sistema Programas de sistema

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações

Leia mais

CAP 312 - PROGRAMAÇÃO DE REDES DE COMPUTADORES XDR E RPC

CAP 312 - PROGRAMAÇÃO DE REDES DE COMPUTADORES XDR E RPC 7.XDR - REPRESENTAÇÃO DE DADOS...2 1.TIPOS DE DADOS - (TABELA DE REPRESENTAÇÃO)...5 2.ALGORITIMO BÁSICO DE CONVERSÃO...6 3.ALGUMAS FUNÇÕES DE CONVERSÃO DA BIBLIOTECA XDR...8 4.EXERCÍCIOS...9 8 RPC - PROCEDIMENTOS

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

Slides_Java_1 !"$ % & $ ' ' Output: Run java. Compile javac. Name of program. Must be the same as name of file. Java source code.

Slides_Java_1 !$ % & $ ' ' Output: Run java. Compile javac. Name of program. Must be the same as name of file. Java source code. Slides_Java_1!"#$!" $ % & $ Sistemas Informáticos I, 2005/2006 ( Java source code Compile javac Java bytecode Run java Output:!"#) %& Name of program. Must be the same as name of file.!"#$!"$ % & $ Where

Leia mais

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada

Leia mais

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5 Princípios de Sistemas Distribuídos Tecnologias utilizadas em sistemas distribuídos Aula 5 Conceitos de comunicação entre processos Interprocess Communication (IPC) Sistemas distribuídos são construídos

Leia mais

1 Projeto de software de clientes. 1

1 Projeto de software de clientes. 1 1 Projeto de software de clientes. 1 1.1 Introdução Aplicações clientes são conceitualmente mais simples que aplicações servidoras pois, normalmente, não manipulam concorrência explicita com múltiplos

Leia mais

Tipos de Dados Simples

Tipos de Dados Simples Programação 11543: Engenharia Informática 6638: Tecnologias e Sistemas de Informação Cap. 3 Tipos de Dados Simples Tipos de Dados Simples Objectivos: Hierarquia de tipos de dados Tipos de dados simples

Leia mais

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Breve Histórico A linguagem de programação C foi criada na década de 70, por Dennis Ritchie, que a implementou,

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira neto Aula 17-18: Middleware: Implementação de RMI (cont.), RPC, Modelo de Eventos, Exemplo com Java RMI Chamadas dinâmicas

Leia mais

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Linguagem C Tipos de Dados void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Funções void void pode ser usado em lugar de um tipo, para indicar a ausência de valor

Leia mais

Protocolos, DNS, DHCP, Ethereal e comandos em Linux

Protocolos, DNS, DHCP, Ethereal e comandos em Linux Redes de Computadores Protocolos, DNS, DHCP, Ethereal e comandos em Linux Escola Superior de Tecnologia e Gestão Instituto Politécnico de Bragança Março de 2006 Endereços e nomes Quaisquer duas estações

Leia mais

Resumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos.

Resumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos. Resumo da última aula Compiladores Análise semântica Verificação de tipos 1 Implementação: Esquemas S-atribuídos: Mecanismo bottom-up direto Esquemas L-atribuídos: Mecanismo top-down: Necessita gramática

Leia mais

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE. PROGRAMAÇÃ ÇÃO COM OBJECTOS TUDO É UM OBJECTO Programação com Objectos ÍNDICE Introdução aos objectos Polimorfismo TUDO É UM OBJECTO Interface e classes internas Instruções de controlo Guardar os objectos

Leia mais

Acesso direto. canal. System call. System call S.O.

Acesso direto. canal. System call. System call S.O. Inter-process Comunicação Communication(IPC) Memória entre compartilhada processos Java Sockets Sinais Pipes Comunicação Processos RMI Hardware Um processo oferece executam entre não acessa proteção processos

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Universidade Federal do ABC Turma: Ciência da Computação Prof. Dr. Francisco Isidro Massetto Introdução Comunicação em Sistemas Distribuídos Introdução: Comunicação em Sistemas Distribuídos

Leia mais

Comunicação. Parte II

Comunicação. Parte II Comunicação Parte II Carlos Ferraz 2002 Tópicos Comunicação Cliente-Servidor RPC Comunicação de objetos distribuídos Comunicação em Grupo Transações Atômicas Comunicação Stream 2 Comunicação cliente-servidor

Leia mais

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008.

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008. Common Object Request Broker Architecture [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008. From: Fintan Bolton Pure CORBA SAMS, 2001 From: Coulouris, Dollimore and

Leia mais

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Resumo da Introdução de Prática de Programação com C. A Linguagem C Resumo da Introdução de Prática de Programação com C A Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional

Leia mais

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu. Programação Estruturada Linguagem C Fundamentos da Linguagem Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br Sumário Estrutura Básica Bibliotecas Básicas Tipos de Dados Básicos Variáveis/Declaração

Leia mais

Introdução à Programação

Introdução à Programação Aula Teórica 1b: variáveis e tipo de dados em C Departamento de Informática, UBI Variáveis: conceito e pratica Variáveis e linguagens de programação A memoria A majoria dos linguagens de programação são

Leia mais

Sistemas Operativos: Introdução. March 14, 2011

Sistemas Operativos: Introdução. March 14, 2011 Sistemas Operativos: Introdução March 14, 2011 Sumário Chamadas ao Sistema Aula TP 2 Organização dum SO Arranque dum Sistema Operativo Sumário Chamadas ao Sistema Aula TP 2 Organização dum SO Arranque

Leia mais

6. Comunicação entre processos - Pipes

6. Comunicação entre processos - Pipes 6. Comunicação entre s - Pipes 6.1 O que são pipes Os pipes em UNIX constituem um canal de comunicação unidirecional entre s com um ascendente comum (entre um pai e um seu descendente). Uma vez estabelecido

Leia mais

Introdução a POO. Introdução a Linguagem C++ e POO

Introdução a POO. Introdução a Linguagem C++ e POO Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes

Leia mais

Conceito de classe em C++

Conceito de classe em C++ Introdução à Programação com Classes em C++ Ana Paula Rocha, Luís Paulo Reis, João Pascoal Faria FEUP - MIEEC Programação 2-2008/2009 Conceito de classe em C++ Classe em sentido lato: tipo de dados definido

Leia mais

Eng.ª Informática. Redes de Computadores. Frequência. 4 de Julho de 2006

Eng.ª Informática. Redes de Computadores. Frequência. 4 de Julho de 2006 Eng.ª Informática Redes de Computadores 4 de Julho de 2006 Leia atentamente as perguntas seguintes e responda de forma breve e precisa. Pode acompanhar a suas respostas com figuras de forma a torná-las

Leia mais

Small Computer Systems Interface (SCSI)

Small Computer Systems Interface (SCSI) Small Computer Systems Interface (SCSI) ASPI Rômulo Silva de Oliveira www.das.ufsc.br/~romulo DAS - UFSC www.hochfeiler.it/alvise/aspi_1.htm www.cdrlabs.com/articles/index.php?articleid=3&page=1 scsifaq.org:9080/scsi_faq/

Leia mais

Conversão de Tipos e Arrays

Conversão de Tipos e Arrays Conversão de Tipos e Arrays Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Conversão de Tipos Permite converter

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Cliente/Servidor. Programação com Sockets. Graça Bressan. Graça Bressan/LARC 2000 1

Cliente/Servidor. Programação com Sockets. Graça Bressan. Graça Bressan/LARC 2000 1 Cliente/Servidor Programação com Sockets Graça Bressan Graça Bressan/LARC 2000 1 Interface através de Sockets Socket é uma API ( Aplication Program Interface ) para acesso aos serviços do protocolo de

Leia mais

Sistemas Distribuídos Comunicação entre Processos em Sistemas Distribuídos: Middleware de comunicação Aula II Prof. Rosemary Silveira F. Melo Comunicação em sistemas distribuídos é um ponto fundamental

Leia mais

LEIC/LERC 2012/13, 1º

LEIC/LERC 2012/13, 1º Número: Nome: Página 1 de 10 LEIC/LERC 2012/13, 1º Exame de Sistemas Distribuídos, 5 de Junho de 2013 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 2h30m Grupo

Leia mais

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB) Uma Introdução à Arquitetura Francisco C. R. Reverbel 1 Copyright 1998-2006 Francisco Reverbel O Object Request Broker (ORB) Via de comunicação entre objetos (object bus), na arquitetura do OMG Definido

Leia mais

A API em C do MySQL. Variáveis em C Funções em C Ponteiros em C

A API em C do MySQL. Variáveis em C Funções em C Ponteiros em C LinuxFocus article number 304 http://linuxfocus.org A API em C do MySQL by Özcan Güngör About the author: Eu uso o Linux desde 1997. Liberdade, flexibilidade e código aberto.

Leia mais

Modelo de Camadas OSI

Modelo de Camadas OSI Modelo de Camadas OSI 1 Histórico Antes da década de 80 -> Surgimento das primeiras rede de dados e problemas de incompatibilidade de comunicação. Década de 80, ISO, juntamente com representantes de diversos

Leia mais

Variáveis e Comandos de Atribuição

Variáveis e Comandos de Atribuição BCC 201 - Introdução à Programação Variáveis e Comandos de Atribuição Guillermo Cámara-Chávez UFOP 1/47 Estrutura Básica de um programa C I < d i r e t i v a s do pré p r o c e s s a d o r > < d e c l

Leia mais

Sistema de Entrada/Saída

Sistema de Entrada/Saída Conteúdo Ficheiros (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos 2006-2007 2 Descritores de ficheiros Descritores

Leia mais

Sistemas Operacionais Aula 04: Processos (Parte B) Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 04: Processos (Parte B) Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 04: Processos (Parte B) Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Descrever as diversas características dos processos, inclusive o scheduling, a

Leia mais

Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão

Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão Programação com Sockets TCP e UDP - Cliente Gustavo Leitão 5/24/2010 INTRODUÇÃO Objetivo da Aula OBJETIVO DA AULA Apresentar ao aluno conceitos e prática em sockets INTRODUÇÃO O que é um socket? INTRODUÇÃO

Leia mais

2. Constantes e Variáveis

2. Constantes e Variáveis 2. Constantes e Variáveis Neste capitulo veremos como os dados constantes e variáveis são manipulados pela linguagem C. O que são constantes inteiras, reais, caracteres e strings. Quais são as regras de

Leia mais

==> typedef int m_channel_t Channel datatype Um canal é um número e identifica um tipo de mailbox (tal como um número de porta faz).

==> typedef int m_channel_t Channel datatype Um canal é um número e identifica um tipo de mailbox (tal como um número de porta faz). Documentação das principais funções fornecidas pela API MSG da ferramenta de simulaçao SimGrid. Essa documentação foi criada seguindo o estudo e análise das funções utilizadas na modelagem da XtremWeb,

Leia mais

Representação de Dados (inteiros não negativos)

Representação de Dados (inteiros não negativos) Representação de Dados (inteiros não negativos) 1 Memória Armazena instruções e dados durante a execução de um programa A memória principal pode ser vista como um array de bytes, cada um com seu endereço

Leia mais

CORBA (Common Object Request Broker Architecture)

CORBA (Common Object Request Broker Architecture) CORBA (Common Object Request Broker Architecture) Sistemas Distribuídos Desafios para a realização de sistemas Distribuídos Exemplos de Sistemas Distribuídos CORBA Evolução Histórica OMA (Object Management

Leia mais

Gerência de Redes e Serviços de Comunicação Multimídia

Gerência de Redes e Serviços de Comunicação Multimídia UNISUL 2013 / 1 Universidade do Sul de Santa Catarina Engenharia Elétrica - Telemática 1 Gerência de Redes e Serviços de Comunicação Multimídia Aula 4 Ferramentas de Gerência de Redes Sistema de Gerência

Leia mais

É a associação de mais de um fluxo de execução em um único processo.

É a associação de mais de um fluxo de execução em um único processo. Profa. Rita Rodorigo Threads Um processo é uma abstração que reúne uma série de atributos como espaço de endereçamento descritores de arquivos abertos, quotas, etc. Um processo possui ainda uma área de

Leia mais

Capítulo II Modelos de Programação Distribuída

Capítulo II Modelos de Programação Distribuída Capítulo II Modelos de Programação Distribuída From: Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, Addison-Wesley 2005 From: M. Ben-Ari Principles of Concurrent

Leia mais

Criação de Processos. O modelo UNIX

Criação de Processos. O modelo UNIX Criação de Processos O processo progenitor (parent/pai) cria processos progénitos (child/filhos), os quais, por sua vez, criam outros processos, formando uma árvore de processos. O progénito criado pela

Leia mais

Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação

Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação Sistemas Operativos 2015-2016 O que construímos até agora... A abstração de processo 2 A possibilidade

Leia mais

Redes de Computadores (PPGI/UFRJ)

Redes de Computadores (PPGI/UFRJ) Redes de Computadores (PPGI/UFRJ) Aula 1: Apresentação do curso e revisão de interface de sockets 03 de março de 2010 1 2 O que é a Internet 3 4 Objetivos e página do curso Objetivos Apresentar a motivação,

Leia mais

O COMPUTADOR. Introdução à Computação

O COMPUTADOR. Introdução à Computação O COMPUTADOR Introdução à Computação Sumário O Hardware O Software Linguagens de Programação Histórico da Linguagem C Componentes Básicos do Computador O HARDWARE: O equipamento propriamente dito. Inclui:

Leia mais

Conceitos Básicos sobre Programação Prática

Conceitos Básicos sobre Programação Prática Conceitos Básicos sobre Programação Prática Programa de computador conjunto de instruções e informação necessários ao alcance de um objectivo instruções + dados normalmente, guardados em ficheiros (em

Leia mais

Introdução. A verificação de tipos pode ser estática e dinâmica

Introdução. A verificação de tipos pode ser estática e dinâmica Análise Semântica Introdução Verifica se as construções sintaticamente corretas possuem significado lógico dentro da linguagem Verifica a consistência da declaração e uso dos identificadores Além disso,

Leia mais