IPC no UNIX. Onofre Trindade Jr
|
|
- Manuel Castelhano Delgado
- 6 Há anos
- Visualizações:
Transcrição
1 IPC no UNIX Onofre Trindade Jr
2 Processo módulo módulo Comunicação entre módulos Variáveis globais Chamada de funções parâmetros resultados Comunicação Processo Único
3 Processo A Processo B Kernel Comunicação Processador Único
4 Processo A Processo B SO Distribuído / Rede Kernel Kernel Comunicação Dois Processadores
5 Sinais (Interrupções de Software) Pipes e FIFOs Filas de Mensagens Memória Compartilhada Semáforos Sockets RPC (Remote Procedure Calls) Mutex e Variáveis Condicionais IPC no UNIX
6 Interrupções de Software Uma notificação para um processo da ocorrência de um evento Sinais podem ser enviados: De um processo para outro processo Do kernel para um processo Sinais
7 Um sinal é um evento assícrono que é enviado para um processo Por assíncrono entende-se que o evento pode ocorrer em qualquer momento Não precise estar relacionado com a execução doo processo e.x. o usuário digita ctrl-c Definição
8 Name Description Default Action SIGINT Interrupt character typed terminate process SIGQUIT Quit character typed (^\) create core image SIGKILL kill -9 terminate process SIGSEGV Invalid memory reference create core image SIGPIPE Write on pipe but no reader terminate process SIGALRM alarm() clock rings terminate process SIGUSR1 user-defined signal type terminate process SIGUSR2 user-defined signal type terminate process Veja man 7 signal Tipos de Sinais(31 no POSIX)
9 Comando shell SIGKILL Driver de terminal SIGINT SIGHUP Gerenciamento de memória SIGQUIT SIGPIPE kernel Gerenciador de janelas SIGWINCH Processo SIGALRM SIGUSR1 Fonte de Sinais Outros processos do usuário
10 Usando o comando UNIX: $ kill -KILL 4481 envia o sinal SIGKILL ao processo com pid 4481 verifique se o processo morreu ps l kill não é um bom nome; send_signal seria melhor. Gerando um Sinal
11 Envia um sinal para um processo (ou a um grupo de processos). #include <signal.h> int kill( pid_t pid, int signo ); Retorna 0 se ok, -1 no caso de erro. kill()
12 pid Significado > 0 envia sinal para o processo com pid pid == 0 envia um sinal para todos os processos cujos pids de grupo sejam iguais ao pid de grupo do processo origem. P.ex., processo pai mata todos os processos filho. Alguns Valores para o pid
13 Um processo pode: Ignorar/descatar o sinal(impossível com SIGKILL ou SIGSTOP) Executar uma rotina de tratamento do sinal e depois continuar a execução ou terminar. Realizar uma ação default para o sinal A escolha é chamada pré-disposição do processo ao sinal Resposta a um Sinal
14 Especifica uma função de tratamento para lidar com um tipo de sinal. #include <signal.h> typedef void Sigfunc(int); /* my defn */ Sigfunc *signal( int signo, Sigfunc *handler ); signal returns a pointer to a function that returns an int (i.e. it returns a pointer to Sigfunc) Retorna a pré-disposição anterior ao sinal ou SIG_ERR, no caso de erro. signal()
15 O protótipo da função signal retornado pelo man é uma extensão do tipo Sigfunc: void (*signal(int signo, void(*handler)(int)))(int); No Linux: typedef void (*sighandler_t)(int); sig_handler_t signal(int signo, sighandler_t handler); Signal retorna um ponteiro para uma função que retorna um int Protótipo
16 A função sinal retorna um pointer para uma função. O tipo de retorno é o mesmo da função que é passada como entrada i.e., uma função que recebe um int e retorna um void Use the signal handling library: signal.h Then can use the signal call: #include <signal.h> O sinal, sig, pode ser tratado ou ignorado void (*signal( int sig, void (*handler)(int))) (int) ; signal returns a pointer to the PREVIOUS signal handler #include <signal.h> typedef void Sigfunc(int); /* my defn */ Sigfunc *signal( int signo, Sigfunc *handler ); Signal é uma função com 2 argumentos: sig e handler Usando Signal A função handler Recebe um int e retorna void Esta função é chamda quando o sinal é recebido A função retornada recebe um int
17 int main() { signal( SIGINT, foo ); : /* do usual things until SIGINT */ return 0; } void foo( int signo ) { : /* deal with SIGINT signal */ return; /* return to program */ } Exemplo
18 #include <stdio.h> #include <unistd.h> #include <signal.h> void sig_usr( int signo ); /* handles two signals */ int main() { int i = 0; if( signal( SIGUSR1,sig_usr ) == SIG_ERR ) printf( Cannot catch SIGUSR1\n ); if( signal( SIGUSR2,sig_usr ) == SIG_ERR ) printf( Cannot catch SIGUSR2\n ); : sig_examp.c
19 } : while(1) { printf( %2d\n, I ); pause(); /* pause until signal handler * has processed signal */ i++; } return 0;
20 void sig_usr( int signo ) /* argument is signal number */ { if( signo == SIGUSR1 ) printf( Received SIGUSR1\n ); else if( signo == SIGUSR2 ) printf( Received SIGUSR2\n ); else printf( Error: received signal %d\n, signo); } return;
21 $ sig_examp & [1] $ kill -USR Received SIGUSR1 1 $ kill -USR Received SIGUSR2 2 $ kill 4720 /* send SIGTERM */ [1] + Terminated sig_examp & $ Resultado
22 Valor SIG_IGN SIG_DFL SIG_ERR Significado Ignorar / discartar o sinal Use ação default Retornado por signal() no caso de erro Valores Especiais
23 Um pipe provê um fluxo unidirecional de dados - exemplo: who sort lpr Pipe é uma estrutura de dados circular do Kernel Somente um processo pode acessar um pipe de cada vez Um pipe é criado pela system call int pipe(int* filedes); Dois descritores de arquivos são retornados - filedes[0], aberto para leitura - filedes[1], aberto para escrita - Processos que compartilham um pipe devem ter um parente em comum - Fifos têm um nome associado, permitindo a comunicação entre processos não relacionados Pipes e Fifos
24 processo do usuário writefd readfd pipe fluxo de dados kernel Pipes
25 Dois tipos de sockets no UNIX: Internet - dois processos em máquinas diferentes UNIX dois processos na mesma máquina Pipes são implementados utilizando-se sockets UNIX Implementação de Pipes no Unix
26 main() { int pipefd[2], n; char buff[100]; if (pipe(pipefd) < 0) { error ("pipe error"); } printf ("readfd = %d, writefd = %d\n", pipefd[0], pipefd[1]); if (write(pipefd[1], "hello world\n", 12)!= 12) { error ("write error"); } if ((n=read(pipefd[0], buff, sizeof[buff])) < 0) { error ("read error"); } write (1, buff, n); close(pipefd[0]); close(pipefd[1]); exit (0); } Exemplo 1
27 O tamanho de um pipe é definido, isto é, somente uma quantidade definida de bytes pode permanecer no pipe sem ser lida Se uma escrita é feita em um pipe e existe espaço suficiente, a chamada retorna imediatamente Se uma escrita é feita e não existe espaço suficiente, a execução do processo é suspensa até que um outro processo leia dados do pipe e libere o espaço necessário Tamanho típico de 512 bytes (Mínimo definido pelo POSIX) Tamanho dos Pipes
28 int count=0; main() { char c= x ; if (pipe(p) < 0) error( pipe call ); signal(sigalrm,alarm_action); for(;;) { alarm(20); write(p[1],&c,1); alarm(0); if((++count%1024)==0) printf( %d chars in pipe\n, count ); } } alarm_action() { printf( write blocked after %d chars \n, count); exit(0) } Tamanho dos Pipes - Exemplo
29 O processo cria um pipe e depois utiliza fork para criar uma cópia processo pai writefd readfd fork processo filho writefd readfd pipe fluxo de dados kernel Criação de Pipes
30 Pai escreve, filho lê pai fecha o lado de leitura filho fecha o lado de escrita processo pai writefd fork processo filho readfd pipe fluxo de dados kernel Criação de Pipes
31 who sort lpr who escreve no pipe 1 sort lê do pipe 1 e escreve no pipe 2 lpr lê do pipe 2 processo who writefd processo sort readfd writefd processo lpr readfd pipe1 fluxo de dados Uso de Pipes kernel pipe2 fluxo de dados
32 pai envia nome de arquivo para filho (pipe 1) que lê o arquivo e devolve o conteúdo para o pai (pipe 2). processo pai readfd writefd processo filho fork readfd writefd pipe1 fluxo de dados pipe2 fluxo de dados kernel Uso de Pipes
33 pai cria pipe 1 e pipe 2 fork pai fecha lado de leitura do pipe 1 pai fecha lado de escrita do pipe 2 filho fecha lado de escrita do pipe 1 filho fecha lado de leitura do pipe 2 processo pai readfd writefd processo filho fork readfd writefd pipe1 fluxo de dados pipe2 fluxo de dados kernel Uso de Pipes - Bidirecional
34 #include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main(){ pid_t pid; int rv; int commpipe[2]; /* This holds the fd for the input & output of the pipe */ /* Setup communication pipeline first */ if(pipe(commpipe)){ fprintf(stderr,"pipe error!\n"); exit(1); } /* Attempt to fork and check for errors */ if( (pid=fork()) == -1){ fprintf(stderr,"fork error. Exiting.\n"); /* something went wrong */ exit(1); } Exemplo
35 if(pid){ /* A positive (non-negative) PID indicates the parent process */ dup2(commpipe[1],1); /* Replace stdout with out side of the pipe */ close(commpipe[0]); /* Close unused side of pipe (in side) */ setvbuf(stdout,(char*)null,_ionbf,0); /* Set non-buffered output on stdout */ sleep(2); printf("hello\n"); sleep(2); printf("goodbye\n"); sleep(2); printf("exit\n"); wait(&rv); /* Wait for child process to end */ fprintf(stderr,"child exited with a %d value\n",rv); } else{ /* A zero PID indicates that this is the child process */ dup2(commpipe[0],0); /* Replace stdin with the in side of the pipe */ close(commpipe[1]); /* Close unused side of pipe (out side) */ /* Replace the child fork with a new process */ if(execl("child","child",null) == -1){ fprintf(stderr,"execl Error!"); exit(1); } } Exemplo... return 0; }
36 #include <stdio.h> int main(){ char string[100]; printf("child Process\n"); printf(" \n"); do{ printf("enter Command: "); fflush(stdout); /* Must flush to see command prompt */ fgets(string,100,stdin); printf("%s\n",string); /* No flush necessary because new line flushes */ }while(!strstr(string,"exit")); return 0; } Exemplo...
37 Processos podem ler e escrever em listas de mensagens (tal como mailboxes) System calls: int msgget (key_t key, int flag) : Cria ou permite acesso à uma fila de mensagens, retorna o identificador da fila int msgsnd (int msqid, const void *msgp, size_t msgsz, int flag) : Escreve uma mensagem na fila int msgrcv (int msqid, void *msgp, size_t msgsz, long msgtype, int msgflg) : Recebe uma mensagem e a armazena em msgp. msgtype: As mensagens podem ter tipo e cada tipo define um canal de comunicação int msgctl (int msqid, int cmd, struct msqid_ds *buf) : Provê operações de controle na fila de mensagens (e.x. remoção) O processo é bloqueado se: tenta ler de uma fila vazia tenta escrever em uma fila cheia Mensagens
38 /* Send and receive messages within a process */ #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #definebuffsize 128 #defineperms 0666 #define KEY ((key_t) 7777) main() { int i, msqid; struct { long m_type; char m_text[buffsize]; } msgbuffs, msgbuffr; if ( (msqid = msgget(key, PERMS IPC_CREAT)) < 0) perror("msgget error"); msgbuffs.m_type = 1L; strcpy(msgbuffs.m_text,"a REALLY boring message"); Mensagens - Exemplo
39 if (msgsnd(msqid, &msgbuffs, BUFFSIZE, 0) < 0) perror("msgsnd error"); printf("the message sent is: %s \n", msgbuffs.m_text); if (msgrcv(msqid, &msgbuffr, BUFFSIZE, 0L, 0)!= BUFFSIZE) perror("msgrcv error"); printf("the message received is: %s \n", msgbuffr.m_text); // remove msg if (msgctl(msqid, IPC_RMID, (struct msqid_ds *) 0) < 0) perror("ipc_rmid error"); } exit(0); Mensagens - Exemplo
40 saída: the message sent is: a REALLY boring message the message received is: a REALLY boring message Mensagens - Exemplo
41 Um semáforo é um contador inteiro positivo normalmente usado para coordenar o acesso a recursos compatilhados System calls: int sema_init (sema_t *sp, unsigned int count, int type, void * arg): Inicia o semáforo apontado por sp em count. type pode ser utilizado para atribuir diferentes tipos de comportamento ao semáforo int sema_destroy (sema_t *sp); destrói qualquer estado relacionado ao semáforo apontado por sp. O espaço de memória alocado ao semáforo não é automaticamente liberado. int sema_wait (sema_t *sp): bloqueia o thread até que o contador do semáforo apontado por sp seja maior que zero, e neste caso, decrementa o contador. Semáforos
42 int sema_trywait (sema_t *sp): decrementa atomicamente o contador do semáforo apontado por sp, se o contador é maior que zero. Caso contrário, retorna um erro int sema_post (sema_t *sp); incrementa atomicamente o o contador do semáforo apontado por sp. Se existirem threads bloqueados pelo semáforo, um será desbloqueado. Semáforos
43 #include <errno.h> #define TELLERS 10 sema_t tellers; /* semaphore */ int banking_hours(), deposit_withdrawal; void *customer(), do_business(), skip_banking_today();... sema_init(&tellers, TELLERS, USYNC_THREAD, NULL); /* 10 tellers available */ while(banking_hours()) pthread_create(null, NULL, customer, deposit_withdrawal);... void * customer(int deposit_withdrawal) { int this_customer, in_a_hurry = 50; this_customer = rand() % 100; Semáforos - Exemplo
44 if (this_customer == in_a_hurry) { if (sema_trywait(&tellers)!= 0) if (errno == EAGAIN) { /* no teller available */ { skip_banking_today(this_customer); return; } /* else go immediately to available teller and decrement tellers */... else { /* wait for next teller, then proceed, and decrement tellers */ sema_wait(&tellers); do_business(deposit_withdrawal); /* increment tellers; this_customer's teller is now available */ sema_post(&tellers); } Semáforos - Exemplo
45 Processos podem compartilhar o mesmo segmento de memória quando ele é mapeado no espaço de endereçamento dos dois processos Comunicação mais rápida System calls: int shmget (key_t key, size_t size, int shmflg) : cria uma nova região de memória compartilhada ou retorna uma existente void *shmat (int shmid, const void *shmaddr, int shmflg) : agrupa uma região de memória compartilhada ao espaço de endereçamento do processo int shmdt (char *shmaddr): desagrupa uma região de memória compartilhada As regiões de memória compartilhada devem ser acessadas por um processo de cada vez (exclusão mútua) Memória Compartilhada
46 // IPC communication between a child and a parent process using // shared memory : the parent puts messages into the shared memory // the child reads the shared memory and prints the messages #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #define SHMSIZE 15 #define MESGNUM 2 // maximum number of bytes in a message //number of messages void cleanup (int shm_id, char *addr); // cleanup procedure int shm_id; // ID of shared memory int main (int argc, char *argv[]) { char message [SHMSIZE]; // the message to send/receive int i; int number_of_messages; // number to be sent int nbytes; // number of bytes in a message Memória Compartilhada - Exemplo
47 int number_of_messages; // number to be sent int nbytes; // number of bytes in a message int status; char *addr = (char *) malloc (SHMSIZE * sizeof (char)); number_of_messages = MESGNUM; nbytes = SHMSIZE; // set up shared memory segment using PID as the key if ((shm_id = shmget ((key_t) getpid(), SHMSIZE, 0666 IPC_CREAT)) == -1 ) { printf ("Error in shared memory region setup.\n"); exit (2); } // if shared memory get failed // attach the shared memory segment addr = (char *) shmat (shm_id, (char *) 0, 0); Memória Compartilhada - Exemplo
48 if (fork ()) { // true if in parent process // create message of required length for (i=0; i < nbytes; i++) message [i] = i % 26 + 'a'; message [nbytes] = '\0'; // send message using the shared memory segment for (i = 0; i < number_of_messages; i++) { if (memcpy (addr, message, nbytes+1) == NULL) { puts ("Error in memory copy"); cleanup (shm_id, addr); exit (3); } // end if error in memory copy } // end for as many messages as requested wait (&status); // wait for child to return // get the message sent by the child strcpy (message, addr); printf ("Parent - message from child: \n %s\n", message); Memória Compartilhada - Exemplo
49 strcpy (message, addr); printf ("Parent - message from child: \n %s\n", message); cleanup (shm_id, addr); exit(0); } // end parent process // in child process puts ("Child - messages from parent:"); for (i = 0; i < number_of_messages; i++) { if (memcpy (message, addr, nbytes+1) == NULL) { puts ("Error in memcpy"); cleanup (shm_id, addr); exit (5); } // end if error in shared memory get else puts (message); } // end for each message sent strcpy (addr, "I have received your messages!"); Memória Compartilhada - Exemplo
50 exit (0); } // end main program // remove shared memory segment void cleanup (int shm_id, char *addr) { shmdt (addr); shmctl (shm_id, IPC_RMID, 0); } // end cleanup function Memória Compartilhada - Exemplo
51 Saída: Child - messages from parent: abcdefghijklmno abcdefghijklmno Parent - message from child: I have received your messages! Memória Compartilhada - Exemplo
52 Sockets são uma forma de IPC ( InterProcess Communication ) definida no 4.3 BSD que fornecem comunicação entre processos residentes em sistema único ou processos residentes em sistemas remotos. Sockets criados por diferentes programas usam nomes para se referenciarem. Esses nomes geralmente devem ser traduzidos em endereços. Sockets - Conceitos Básicos
53 STREAM SOCKET - Provê sequenciamento e fluxo bidirecional. No domínio UNIX, o SOCKET_STREAM trabalha igual a um pipe, no domínio INTERNET este tipo de socket é implementado sobre TCP/IP. Tipos de Sockets
54 SOCK_DGRAM - Suporta fluxo de dados bidirecional mas não oferece um serviço confiável como STREAM_SOCKET. Mensagens duplicadas e em ordem diferente são problemas que podem aparecer neste tipo de socket. Tipos de Sockets
55 RAW_SOCKET - permite o acesso a interface de protocolos de rede. Disponível para usuários avançados e que possuam autoridade de usuário root permite que uma aplicação acesse diretamente protocolos de comunicação de baixo nível permite a construção de novos protocolos sobre os protocolos de baixo nível já existentes Tipos de Sockets
56 O socket é criado sem nome É necessário um nome para para a sua utilização Os processos são ligados por uma associação Associação: <protocolo, end. máquina local, porta local, end. máquina remota, porta remota> Associação
57 O espaço no qual o endereço é especificado é chamado de domínio Domínios básicos: INTERNET - AF_INET - os endereços consistem do end. de rede da máquina e da identificação do no. da porta, o que permite a comunicação entre processos de sistemas diferentes Unix: AF_UNIX - os processos se comunicam referenciando um pathname, dentro do espaço de nomes do sistema de arquivos Domínios e Protocolos
58 Domínio Internet Implementação Unix do protocolo TCP/UDP/IP Consiste de: end. de rede da máquina identificação do no. da porta Permite a comunicação entre máquinas diferentes Conexões sob a forma de sockets do tipo stream e do tipo datagramas Domínios e Protocolos
59 Processo A Processo B TCP UDP IP Protocolos TCP/IP Interface hardware
60 Definida por: Um protocolo: TCP ou UDP Endereço IP local Porta local Endereço IP remoto Porta distante Associação
61 Servidor Cliente 1 socket socket kernel kernel conexão Comunicação por sockets rede
62 Cria um socket com - Família (ou domínio): UNIX, Internet, XNS - Tipo: stream, datagrama, raw - Protocolo: TCP, UDP Servidor socket ( ) sockfd = (int) socket (int family, int type, int protocol) Comunicação TCP
63 Servidor socket ( ) Atribui ao socket - Endereço Internet (pode ser any ) - Porta de comunicação bind ( ) ret = (int) bind (int sockfd, struct sockaddr *myaddr, int addrlen) Comunicação TCP
64 Servidor socket ( ) Declara - Que está pronto para receber conexões - Até quantas devem ser enfileiradas bind ( ) listen ( ) ret = (int) listen (int sockfd, int backlog) Comunicação TCP
65 Servidor socket ( ) bind ( ) listen ( ) Bloqueia até que haja pedido de conexão Quando houver algum, aceita accept ( ) newsock = (int) accept (int sockfd, struct sockaddr *peer, int *addrlen) Comunicação TCP
66 Servidor socket ( ) Cria um socket idêntico ao do servidor (mesma família e tipo) bind ( ) listen ( ) Cliente socket ( ) accept ( ) sockfd = (int) socket (int family, int type, int protocol) Comunicação TCP
67 Servidor socket ( ) bind ( ) listen ( ) Pede uma conexão ao servidor Fica bloqueado ou retorna erro Se aceito, fecha a conexão Cliente socket ( ) accept ( ) estabelecimento de conexão connect ( ) ret = (int) connect (int sockfd, struct sockaddr *servaddr, int addrlen) Comunicação TCP
68 Servidor socket ( ) Envia uma seqüência de bytes pela conexão bind ( ) listen ( ) Cliente socket ( ) accept ( ) estabelecimento de conexão connect ( ) send ( ) nbytes = (int) send (int sockfd, char *buf, int nbytes, int flags) Comunicação TCP
69 Servidor socket ( ) Recebe (parte da ) msg enviada por send ( ) bind ( ) listen ( ) Cliente socket ( ) accept ( ) estabelecimento de conexão connect ( ) recv ( ) solicitação send ( ) nbytes = (int) recv (int sockfd, char *buf, int nbytes, int flags) Comunicação TCP
70 Servidor socket ( ) bind ( ) listen ( ) Transmite ou confirma msgs faltantes Encerra a conexão Fecha o socket ret = (int) close (int sockfd) Cliente socket ( ) accept ( ) estabelecimento de conexão connect ( ) recv ( ) send ( ) processamento solicitação resposta send ( ) recv ( ) close ( ) close ( ) Comunicação TCP
71 Servidor socket ( ) bind ( ) Diagrama completo listen ( ) Cliente socket ( ) accept ( ) estabelecimento de conexão connect ( ) recv ( ) send ( ) processamento solicitação resposta send ( ) recv ( ) close ( ) close ( ) Comunicação TCP
72 Cliente e servidor criam seus sockets Família = Internet, tipo = datagrama Servidor Cliente socket ( ) socket ( ) Comunicação UDP
73 Cliente e servidor definem endereços Servidor socket ( ) Cliente socket ( ) bind ( ) bind ( ) Comunicação UDP
74 Recebe pacote enviado do endereço informado Se não houver nada, bloqueia Servidor socket ( ) Cliente socket ( ) bind ( ) bind ( ) recvfrom ( ) nbytes = (int) recvfrom (int sockfd, char *buf, int nbytes, int flags, struct sockaddr *from, int *addrlen) Comunicação UDP
75 Envia pacote para o endereço informado Servidor socket ( ) socket ( ) bind ( ) bind ( ) recvfrom ( ) solicitação sendto ( ) nbytes = (int) recvfrom (int sockfd, char *buf, int nbytes, int flags, struct sockaddr *from, int *addrlen) Comunicação UDP
76 Diagrama completo Servidor socket ( ) Cliente socket ( ) bind ( ) bind ( ) recvfrom ( ) sendto ( ) processamento solicitação resposta sendto ( ) recvfrom ( ) close ( ) close ( ) Comunicação UDP
77 A chamada de procedimentos remotos utiliza a mesma semântica da chamada de procedimentos locais para fazer a comunicação de processos localizados em máquinas diferentes em um sistema distribuído RPC Remote Procedure Call
78 xdr.x (Escrever) rpcgen (Compilador Protocolo) client.c (Escrever) *_clnt.c (Stub Cliente) xdr.h (header comum) *_svc.c (Stub Servidor) impl_proc.c (Escrever) client executable server executable O Processo
79 Cliente (Escrever) Servidor (Escrever) *_clnt.c Stub Cliente (rpcgen) *_svc.c Stub Servidor (rpcgen) Rede Rede Sequência de Chamada
80 Chamada de Procedimentos Remotos SUN Protocolo UDP é usado para iniciar um procedimento remoto A comunicação é baseada em mensagens Quando um servidor inicia, ele registra a porta na qual ele receberá conexões associada com um número PROGRAM e um número VERSION no servidor portmapper (daemon que atende a porta 111) Quando um cliente incia, ele contata o portmapper para saber como encontrar o procedimento remoto identificado PROGRAM eversion. O portmapper retorna o endereço e o cliente acessa o servidor diretamente. RPC Sun
81 Este arquivo XDR (somefile.x): program NUMPROG { version NUMVERS { int READNUM(int) = 1; /* version 1 */ } = 1; /* version of functions */ } = 0x ; /* PROGRAM number */ É tranformado neste arquivo pelo rpcgen (somefile.h): #define NUMPROG 0x #define NUMVERS 1 #if defined( STDC ) defined( cplusplus) #define READNUM 1 extern int * readnum_1(int *, CLIENT *); extern int * readnum_1_svc(int *, struct svc_req *); Arquivo de definição de protocolo(.x)
82 O RPC é importante porque ele gerencia diversos aspectos da comunicação Rede Ordem dos Bytes (Big Endian, Little Endian) Alinhamento dos dados na memória Alinhamento em 2/4 Bytes Terminadores e códigos alfanuméricos utilizaos em strings Detalhes do RPC
83 XDR Provê Transparência em relação à rede Big-Endian Alinhamento de 4-Bytes XDR comunica os dados na rede como um fluxo de bytes Filtros RPC external Data Representation
84 Integer: int (4 bytes) Unsigned Integer: unsigned int (4 bytes) Char: int (4 byte signed integer) Double: double (8 bytes IEEE754 FP) Float: float (4 bytes IEEE754 FP) int week[7] int orders <50> (variable length array) opaque data<1000> any data Filtros XDR
Sistemas Operacionais - Básico e Avançado - Prof. Celso Maciel da Costa Mestrado em Informática - PUCRS
Sistemas Operacionais - Básico e Avançado - Prof. Celso Maciel da Costa Mestrado em Informática - PUCRS Processo Usuário Processo Usuário SO IPC em um mesmo sistema 2 Processo Usuário Processo usuário
Leia maisSockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets
Sockets - Conceitos Básicos COMUNICAÇÃO ENTRE PROCESSOS Sockets! Sockets são uma forma de IPC (InterProcess Communication ) fornecida pela 4.3 BSD que fornecem comunicação entre processos residentes em
Leia maisComunicação entre Processos
Comunicação entre Processos Pipes Redirecionamento de entrada e saída 4/19/18 1 O Pipe: Características (1) Canal de comunicação entre processos parentes, usando a politica First-In-First-Out (FIFO) Tipicamente,
Leia maisComunicação entre Processos Memória Compartilhada
Comunicação entre Processos Memória Compartilhada 3/23/17 1 Métodos de comunicação entre processos Memória compartilhada Sinais Pipes Troca de mensagens Memória Compartilhada Memória compartilhada Permite
Leia maisProgramação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP)
II - UFRGS Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP) Valter Roesler Universidade Federal do Rio Grande do Sul (UFRGS) Instituto de Informática
Leia maisMemória compartilhada
Memória compartilhada Luiz Affonso Guedes 1 Ivanovitch Silva 1 affonso@dca.ufrn.br ivan@dca.ufrn.br 1 Universidade Federal do Rio Grande do Norte 15 de outubro de 2009 Memória compartilhada DCA0109 - Prática
Leia maisSockets. André Restivo. April 29, Faculdade de Engenharia da Universidade do Porto. André Restivo (FEUP) Sockets April 29, / 27
Sockets André Restivo Faculdade de Engenharia da Universidade do Porto April 29, 2013 André Restivo (FEUP) Sockets April 29, 2013 1 / 27 Sumário 1 Introdução 2 Cliente/Servidor 3 API C++ 4 André Restivo
Leia maisComunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes
Comunicação Inter-Processo em Unix Pipes FIFO (Named Pipes) 1 Pipes 2 1! Comunicação entre pai e filho Ao chamar um fork(), processos pai e filho deixam de compartilhar memória Como fazer então para que
Leia maisProgramação de sistema UNIX
Programação de sistema UNIX Sinais Sinais 1 Definição e tipos Sinais Espécie de interrupções enviadas aos processos, na ocorrência de certos eventos Cada processo pode definir uma função para responder
Leia maisSistemas Operacionais II
Introdução Instituto de Informátic ca - UFRGS Sistemas Operacionais II Comunicação inter-processos Aula 09 Programação concorrente surgiu com a multiprogramação Mecanismos básicos supõem memória compartilhada,
Leia maisSincronização e Comunicação de/entre Processos. Na Aula Anterior... Nesta Aula. Comunicação entre Processos. Pipes 07/09/2016
GSI018 Sistemas Operacionais 07/09/2016 Sincronização e Comunicação de/entre Processos Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Na Aula Anterior...
Leia maisComunicação entre pai e filho
Comunicação entre pai e filho Ao chamar um fork(), processos pai e filho deixam de compartilhar memória Como fazer então para que o resultado de um processo possa ser recebido pelo outro? Exemplos: Processo
Leia maisSistemas Distribuídos Aula 2
Sistemas Distribuídos Aula 2 Aula passada Logísitica Regras do jogo Definição e características Exemplos Aula de hoje Processos IPC Características Ex. sinais, pipes, sockets Objetivos Processos O que
Leia maisComunicação entre Processos
Comunicação entre Processos Troca de Mensagens send (destino, msg) receive (origem, mensagem) questões semântica de operações especificação de origem e destino formato de mensagem envio síncrono e assíncrono
Leia maisSoquetes TCP. Jean Ribeiro Damasceno. Escola de Engenharia Universidade Federal Fluminense (UFF) Rua Passo da Pátria, 156 Niterói RJ Brasil
Soquetes TCP Jean Ribeiro Damasceno Escola de Engenharia (UFF) Rua Passo da Pátria, 156 Niterói RJ Brasil jeanrdmg@yahoo.com.br Função socket(): Cria um novo ponto final de comunicação int socket ( int
Leia maisServidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP
2004-2016 Volnys Bernal 1 2004-2016 Volnys Bernal 2 Resumo das Chamadas TCP Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP Resumo das Chamadas TCP
Leia maisTROCA 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 maisTratamento de Sinais
Tratamento de Sinais Luiz Affonso Guedes 1 Ivanovitch Silva 1 affonso@dca.ufrn.br ivan@dca.ufrn.br 1 Universidade Federal do Rio Grande do Norte 25 de setembro de 2009 Sinais DCA0109 - Prática de programação
Leia maisIntrodução à Programação com Sockets. Fernando Jorge Silveira Filho Daniel Sadoc Menasché
Introdução à Programação com Sockets Fernando Jorge Silveira Filho fernando@land.ufrj.br Daniel Sadoc Menasché sadoc@land.ufrj.br Visão Geral Objetivos: Realizar comunicação entre processos. Entender como
Leia maisMemória partilhada em Unix SysV
Memória partilhada em Unix SysV A forma mais geral de comunicação entre processos é através de memória partilhada. segmento de memoria partilhada Processo A Processo B p q Criação de um segmento de memória
Leia maisSincronização e memória compartilhada no Linux
Sincronização e memória compartilhada no Linux Memória compartilhada Modelo de memória UNIX Processo aloca (allocate) um segmento no qual deseja compartilhar Processos que desejam acessar o segmento alocado,
Leia maisEventos. Rotinas Assíncronas
Eventos Rotinas Assíncronas para Tratamento de acontecimentos assíncronos e excepções Rotinas Assíncronas Certos acontecimentos devem ser tratados pelas aplicações, embora não seja possível prever a sua
Leia maisProgramação de Sistemas. Tubos
Programação de Sistemas Tubos Programação de Sistemas Pipes : 1/18 Tubos - introdução APUE 15.2 No Unix, os tubos ( pipes ) constituem o mecanismo original de comunicação entre processos. Mensagens limitadas
Leia maisInter-process Communication (IPC) Comunicação entre processos (1) Introdução Tubos (Pipes)
Inter-process Communication (IPC) Comunicação entre processos (1) Introdução Tubos (Pipes) Comunicação entre Processos (1) Os sistemas operacionais implementam mecanismos que asseguram a independência
Leia mais6. 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 mais1 System Calls no Linux
Sistemas Operacionais Laboratorio - System Calls Adaptação do Laboratório 1 - Prof. Eduardo Zambon 1 System Calls no Linux Vamos mencionar aqui alguns pontos já discutidos em aula e introduzir novos conceitos
Leia maisAula de Socket. Rafael De Tommaso do Valle
Aula de Socket Rafael De Tommaso do Valle 20 de agosto de 2009 Socket O que é um socket? É uma interface com qual processos em diferentes hosts se comunicam através da rede; Também chamado de interface
Leia maisSumário. Introdução ao TCP/IP e à Internet API Sockets para comunicação via redes Exemplos
Sumário Introdução ao TCP/IP e à Internet API Sockets para comunicação via redes Exemplos A Internet: Endereços Cada computador ligado à Internet tem um endereço único que o distingue dos restantes (endereço
Leia maisComunicação entre Processos 9/21/17 1
Comunicação entre Processos 9/21/17 1 Introdução l Um sinal é uma notificação assíncrona transmitida entre processos através do Sistema Operacional Fluxo normal do programa l l Quando um processo termina,
Leia maisIPC Interprocess communication
IPC Interprocess communication conceitos de IPC, pipes Taisy Weber Comunicação entre processos Pipes e FIFO Defição, chamadas de sistemas, utilização de Message queues. Memória compartilhada. Sockets.
Leia maisSistemas 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 maisServidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP
2004-2013 Volnys Bernal 1 2004-2013 Volnys Bernal 2 Resumo das Chamadas TCP Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys 2004-2013 Volnys Bernal 3 2004-2013 Volnys Bernal 4 Resumo
Leia maisServidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP
2004-2013 Volnys Bernal 1 2004-2013 Volnys Bernal 2 Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys 2004-2013 Volnys Bernal 3 2004-2013 Volnys Bernal 4 Lado Cliente Lado Servidor sd1
Leia maisMC823 Atividade 1: Cliente/Servidor TCP Iterativo. 3 Modificando o servidor para retornar data e hora
MC823 Atividade 1: Cliente/Servidor TCP Iterativo Gustavo Sverzut Barbieri 1 Introdução Nessa atividade nós modificamos cliente e servidor simples que utilizam o protocolo TCP/IP.
Leia maissockets 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 maisProgramaçã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 maisProgramação de Sistemas
Programação de Sistemas Sinais Programação de Sistemas Sinais : 1/30 Modelo de eventos (1) Os processos de nível utilizador interagem com o núcleo através de chamadas de sistema. Nos sistemas computacionais,
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 6: Monitores, Troca de Mensagens e Deadlock Diego Passos Última Aulas Mecanismos de Exclusão Mútua Operações atômicas. Protocolos de controle de acesso. Spin-locks.
Leia maisComunicação entre processos. Sistema centralizado
Sistemas Distribuídos Comunicação entre processos Sistema centralizado Comunicação entre processos Arquivo Memória compartilhada Sinal Fila de mensagem SO gerencia comunicação 2 Sistema distribuído Idéia
Leia maisSistemas Distribuídos
Sistemas Distribuídos Universidade Federal do ABC Turma: Ciência da Computação Prof. Dr. Francisco Isidro Massetto Introdução: Sockets Para estabelecer a Comunicação Interprocesso nos Sistemas Distribuídos,
Leia maisComunicação baseada em canais de I/O e Pipelines no sistema Unix. José C. Cunha, DI-FCT/UNL
Comunicação baseada em canais de I/O e Pipelines no sistema Unix José C. Cunha, DI-FCT/UNL Mecanismos de comunicação Ficheiros em disco (geridos pelo SO) Pipes (buffers geridos pelo SO) Mensagens (filas
Leia maisSinais: eventos assíncronos
Sinais: eventos assíncronos Um sinal é um evento assíncrono que pode ser enviado a um processo, avisando-o de que algo de inesperado ou anormal aconteceu. Evento Assíncrono significa que pode ocorrer a
Leia maisSistemas de Computação Semáforos
Sistemas de Computação Semáforos 4/26/18 1 Semáforos Um semáforo simples é uma variável que pode assumir os valores 0 e 1 (semáforo binário). Esta é a forma mais comum Semáforos que podem assumir diversos
Leia maisSistemas Operacionais II Unix: Memória e E/S. Geraldo Braz Junior
Sistemas Operacionais II Unix: Memória e E/S Geraldo Braz Junior Gerenciamento de Memória Gerenciamento de Memória Espaço de Endereçamento 1. Segmento de código Instruções de máquina que formam o código
Leia maisGrupo I [6 v] Considere o processo com a seguinte tabela de páginas: Página Presente Protecção Base 0 0 RW RW R R RW -
Número: Nome: LEIC/LETI 2014/15-2º Teste de Sistemas Operativos 9/Janeiro/2015 Identifique todas as folhas. Responda no enunciado no espaço fornecido. Justifique todas as respostas. Duração: 1h30m Grupo
Leia maisGrupo I [5 Val] Suponha que, ao correr comando ls l whoami, se obtinha o seguinte output: -rwxr-xr-x 1 root root Sep whoami
Número: Nome: LEIC/LETI 2017/18-1º Teste de Sistemas Operativos 21 de Novembro de 2018 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo I [5 Val] 1.
Leia mais5. Comunicação entre processos - Sinais
5. Comunicação entre processos - Sinais 5.1 Definição dos sinais Os sinais são uma espécie de interrupção ao processo corrente. Podem ter diversas origens e são uma forma de tratar certos acontecimentos
Leia maisProgramação com Sockets. Redes de Computadores I 2007/2008
Programação com Sockets Redes de Computadores I 2007/2008 Arquitectura das Aplicações Cliente-Servidor Peer-to-Peer (P2P) Híbrido Peer-to-Peer e Cliente-Servidor 09-11-2007 Universidade do Minho 1 Comunicação
Leia maistime_t shm_ctime; /* hora da última alteração de atributod da MP através de shmctl + IPC_SET */
Página 1 de 6 Memória Partilhada Pedaço de memória virtual que dois ou mais processos podem incluir no seu espaço de endereçamento, permitindo a comunicação entre eles. È o mecanismo mais rápido de comunicação
Leia maisAmbientes de Execução
KERNEL Conceitos Conceitos POSIX Portable Operating System Interface for UNIX. Um conjunto de padrões da IEEE e ISO que definem como programas e sistemas operacionais de interface com os outros. Sistemas
Leia maisServidor UDP. Programação Sockets Volnys Bernal. Servidor UDP Resumo das Chamadas UDP. Resumo de Chamadas UDP. Resumo de Chamadas UDP
2004-2015 Volnys Bernal 1 2004-2015 Volnys Bernal 2 Resumo das Chamadas UDP Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2015 Volnys Bernal
Leia maisSistemas Operacionais
Sistemas Operacionais Programação Concorrente Introdução Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Introdução Programa Seqüencial Representado por apenas um processo Existe apenas
Leia maisCliente TCP. Programação sockets. Agenda. Cliente TCP. Chamadas sockets para TCP. Chamada socket() Chamada socket()
2002-2009 Volnys Bernal 1 2002-2009 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Resumo das chamadas sockets para TCP Chamada close() 2002-2009 Volnys Bernal
Leia maisSISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios
SISTEMAS OPERACIONAIS INF09344 - Sistemas Operacionais / INF02780 - Sistemas Operacionais / INF02828 - Sistemas de Programação II Prof a. Roberta Lima Gomes (soufes@gmail.com) 2ª. Lista de Exercícios Data
Leia maisServidor UDP Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP
2004-2017 Volnys Bernal 1 Servidor UDP Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 2 Resumo das Chamadas UDP 2004-2017
Leia maisExercícios Avaliativos Memória Compartilhada
1ª Avaliação Faculdades Integradas de Caratinga Sistemas Distribuídos Jacson RC Silva Exercícios Avaliativos Memória Compartilhada Uma posição de memória compartilhada é identificada por uma chave. Essa
Leia maisLABORATÓRIO SISTEMAS OPERACIONAIS
FACULDADE: CENTRO UNIVERSITÁRIO DE BRASÍLIA UniCEUB CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: SISTEMAS OPERACIONAIS CARGA HORÁRIA: 75 H. A. ANO/SEMESTRE: 2016/02 PROFESSOR: EDUARDO FERREIRA DOS SANTOS HORÁRIOS:
Leia maisUnnamed Pipes. Chamada ao sistema pipe. Pipes. Comunicação entre processos. Unnamed Pipes Chamada so sistema. José Pedro Oliveira
Conteúdo (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos I 006-007 1 Exercícios 3 Referências Pipes Chamada
Leia maisMemória Compartilhada (Shared Memory) (1) Memória Compartilhada (2) Memória Compartilhada (3)
Memória Compartilhada (Shared Memory) (1) Inter-process Communication (IPC) Comunicação entre processos (2) Memória Compartilhada (Shared Memory) Mecanismo de IPC que cria uma região de memória que pode
Leia maisComunicação entre Processos. 1. Pipes 2. Fifos 3. Sockets
Comunicação entre Processos 1. Pipes 2. Fifos 3. Sockets Pipes Implementa um canal de comunicação associado a um processo Limitações: Os dados apenas fluem num sentido Só podem ser usados entre processos
Leia maisLABORATÓRIO SISTEMAS DE TEMPO REAL
FACULDADE: CENTRO UNIVERSITÁRIO DE BRASÍLIA UniCEUB CURSO: ENGENHARIA DE COMPUTAÇÃO DISCIPLINA: SISTEMAS DE TEMPO REAL E TOLERANTES À FALHA CARGA HORÁRIA: 75 H. A. ANO/SEMESTRE: 2016/01 PROFESSOR: EDUARDO
Leia maisCliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Resumo das chamadas UDP. Resumo de Chamadas UDP.
2002-2015 Volnys Bernal 1 2002-2015 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP Resumo das chamadas sockets para UDP Uso
Leia maisEstruturas de Sistemas Operacionais
Estruturas de Sistemas Operacionais Sistemas Operacionais - Tópicos Componentes do Sistema Serviços de Sistemas Operacionais Chamadas ao Sistema Estrutura do Sistema Máquinas Virtuais Chamadas ao Sistema
Leia maisSistemas de Operação (2018/2019) Ficha 6
Sistemas de Operação (2018/2019) Ficha 6 Q1. Considere o seguinte programa que implementa uma pipe entre processos pai e filho. Compile o exemplo e execute-o. Leia o código com atenção e compreenda-o.
Leia maisMAC422/5753 Sistemas Operacionais
MAC422/5753 Sistemas Operacionais Prof. Marcel P. Jackowski Aula #8 Sincronização: Semáforos, Barreiras e Monitores Jantar dos Filósofos Cinco filósofos que somente comem e pensam Cada um deles precisa
Leia maisProgramação de Aplicações em. Rede usando Sockets
Programação de Aplicações em Objetivos: Rede usando Sockets Conhecer a API Sockets, que permite a programas de aplicação comunicar-se através da Internet Aplicações e Protocolo de Aplicação Aplicação:
Leia maisAnexo 1 Processos UNIX Anexo 2 Pipes UNIX Anexo 3 IPC UNIX ANEXOS
Anexo 1 Processos UNIX Anexo 2 Pipes UNIX Anexo 3 IPC UNIX ANEXOS ANEXO 1 PROCESSOS NO UNIX Processos são o coração do sistema UNIX. A grande maioria é gerada a partir da chamada de sistema fork. Quando
Leia maisRedes de Computadores e Aplicações
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Campus Currais Novos Redes de Computadores e Aplicações Aula 13 - Camada de Aplicação Visão Geral Prof. Diego Pereira
Leia maisInter-process Communication (IPC)
Inter-process Communication (IPC) Comunicação entre processos (1) Introdução Tubos (Pipes) Filas (FIFOs, Named Pipes) Comunicação entre Processos (1) Os sistemas operacionais implementam mecanismos que
Leia maisCriação de Processos Fork( ) Exec( )
Criação de Processos Fork( ) Exec( ) 8/23/18 1 Chamadas de Sistema: Process Management 2 Chamada fork( ) / exec( ) 3 Esboço de uma shell while (TRUE) { /* repeat forever */ type_prompt( ); /* display prompt
Leia maisComunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling.
Tópicos Comunicação Carlos Ferraz cagf@cin.ufpe.br Elementos básicos de comunicação Transmissão de dados Endereçamento Sincronismo Enfileiramento (Bufferização) Confiabilidade Portas e sockets UDP RPC:
Leia maisSSC0640 Sistemas Operacionais I
SSC0640 Sistemas Operacionais I 2ª Aula Conceitos Básicos Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Slides adaptados de Marcos José Santana / Regina H. C. Santana / Luciana A. F. Martimiano baseados
Leia maisBibliotecas. 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 maiscamada de transporte SOCKET TCP UDP
Sockets O que são sockets? O acesso aos serviços da camada de transporte pode ser feito por primitivas de transporte, essas primitivas são denominadas SOCKET. Por essas primitivas é possível acessar vários
Leia maisBásico: estrutura de programa, sintaxe Interface com linha de comando
Programação em C Sintaxe Básico: estrutura de programa, sintaxe Interface com linha de comando Preprocessamento e compilação Makefiles Ponteiros e estruturas Bibliotecas, ficheiros include e funções Referências
Leia maisSistemas de Computação O Sistema Operacional Unix
Sistemas de Computação O Sistema Operacional Unix 3/8/16 1 Introdução Interrupções de hardware Execução de uma Chamada de Sistema Alocação de memória Chamadas de Sistema típicas Arquitetura do Unix Visão
Leia maisPthreads API. Criação de Threads: usando Pthreads
Pthreads API The POSIX 1003.1-2001 standard defines an application programming interface (API) for writing multithreaded applications. This interface is known more commonly as pthreads. 6.1 Criação de
Leia maisComputação 2. Aula 8. Profª. Fabiany Arquivos
Computação 2 Aula 8 Arquivos Profª. Fabiany fabianyl@utfpr.edu.br E/S com Arquivos A linguagem C não possui nenhum comando de E/S. Todas as operações de E/S ocorrem mediante chamadas a funções de biblioteca
Leia maisProgramação com Sockets
Programação com LP4 Ciência da Computação 1 Comunicação entre processos Nível mais baixo É um tipo particular de modelo de programação em redes utilizado em várias linguagens como: C, C++ e Java São estruturas
Leia maisSVCs para Controle de Processos no Unix (cont.) Sistemas Operacionais
SVCs para Controle de Processos no Unix (cont.) A Família de SVC's exec() As primitivas exec() constituem, na verdade, uma famılia de funções (execl, execlp, execle, execv, execvp, execve) que permitem
Leia maisCliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.
2002-2004 Volnys Bernal 1 2002-2004 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Resumo de Chamadas UDP Chamada connect() Chamada send() Chamada sendto()
Leia maisSISTEMAS OPERATIVOS I
Instituto Superior de Engenharia do Porto Departamento de Engenharia Informática SISTEMAS OPERATIVOS I Programação Concorrente em Linux: Memória Partilhada e Semáforos Versão 1.03 Maio de 2006 Luís Lino
Leia maisCliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.
2002-2013 Volnys Bernal 1 2002-2013 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Resumo de Chamadas UDP Chamada Chamada Chamada 2002-2013 Volnys Bernal 3
Leia maisSVCs para Controle de Processos no Unix (cont.) Sistemas Operacionais
SVCs para Controle de Processos no Unix (cont.) A Família de SVC's exec() As primitivas exec() constituem, na verdade, uma famılia de funções que permitem a um processo executar o código de outro programa.
Leia maisSinais. Sinais e fork. Sinais e exec. Segunda aula. Chamada ao sistema fork Chamada ao sistema execve. José Pedro Oliveira
e chamadas ao sistema fork e exec Segunda aula (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos I 2006-2007 1
Leia maisIntrodução à linguagem C++
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 2: Introdução à linguagem C++ Introdução à linguagem C++ Conceitos básicos: variáveis, tipos de dados, constantes, I/O, etc. Estruturas
Leia maisComunicação entre Processos por Troca de Mensagens. Prof. Celso maciel da Costa
Comunicação entre Processos por Troca de Mensagens Prof. Celso maciel da Costa Troca de Mensagens Com memória compartilhada: os processo compartilham variáveis e trocam informações através do uso de variáveis
Leia maisSockets: Sumário. Resumo das Propriedades de UDP e de TCP
Sockets: Sumário Sockets TCP Modêlo. API de Java. API da biblioteca C. Avaliação Crítica de Sockets. 1 Resumo das Propriedades de UDP e de TCP Propriedade UDP TCP Abstracção Mens. Stream Baseado em Conexão
Leia maisRedes de Computadores
Prof. Universidade Federal de Mato Grosso do Sul brivaldo@facom.ufms.br 24 de abril de 2017 Sumário 1 O núcleo da rede 2 3 Introdução Nesta aula vamos fazer ter uma visão geral de como programas de rede
Leia maistutorial. man fork man pthread_create man pthread_join man wait man sleep
Abaixo, você encontrá dicas para lhe ajudar a fazer o 1º trabalho de SOI, que está descrito na página do curso. Lembrando que essas dicas visam apenas o auxilio nas partes mais problemáticas do trabalho
Leia maisProcessos. processos UNIX e Linux threads em Linux. Taisy Weber
Processos processos UNIX e Linux threads em Linux Taisy Weber Ambiente UNIX Processos: revisão de conceitos básicos processos no SO UNIX programação criação (exec, fork, etc), sincronização (wait), eliminação,
Leia maisProblemas relacionados a exclusão mútua
Problemas relacionados a exclusão mútua Deadlock: um conjunto de processos fica bloqueado, cada um a espera de um recurso que o outro detém. Starvation: alguns processos são repetidamente preteridos, enquanto
Leia maisSemáforos em Unix. Criar um conjunto (vetor) de semáforos: semid = semget ( chave, nsems, flag); onde:
Semáforos em Unix Criar um conjunto (vetor) de semáforos: onde: semid = semget ( chave, nsems, flag); semid identificador de acesso ao vetor de semáforos. chave identificador global que identifica este
Leia maishttp://www.csl.mtu.edu/cs4411/www/notes/process/fork/create.html
http://www.csl.mtu.edu/cs4411/www/notes/process/fork/create.html FORK() SYSTEM CALL * UTILIZADO PARA CRIAR SUBPROCESSO * PROCESSO QUE CRIA É PAI * PROCESSO CRIADO É O FILHO * APÓS A CRIAÇÃO AMBOS OS PROCESSO
Leia maisProjecto hipotético para resolvermos hoje
Projecto hipotético para resolvermos hoje 12/13 Sistemas Distribuídos 1 Projecto hipotético para resolvermos hoje Implementar servidor de contagem que mantém contador e oferece estas operações aos clientes:
Leia maisPor Fernando Koyanagi
Por Fernando Koyanagi Recursos usados 18 jumpers fêmea x fêmea Módulo de 16 relés com optoacoplador Raspberry Pi 3 Rede interna (TCP/IP) Intenção dessa aula 1. Iniciar automação com Raspberry Pi PI 2.
Leia maisNa Aula Anterior... O Conceito de Threads
GSI018 Sistemas Operacionais 12/09/2016 Na Aula Anterior... Nesta Aula Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Comunicação entre Processos Pipes;
Leia maisSistemas Operacionais I Parte V Operações nos Processos. Roteiro. Prof. Gregorio Perez Introdução. Operações nos Processo
Sistemas Operacionais I Parte V Roteiro Introdução Operações nos Processo Término Processos Cooperativos Comunicação entre Processos Questões Prof. Gregorio Perez gregorio@uninove.br 2007 2007 Sistem as
Leia mais