03 - Protocolos de Comunicação Interprocessos. 2 de novembro de 2014

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

Download "03 - Protocolos de Comunicação Interprocessos. 2 de novembro de 2014"

Transcrição

1 03 - Protocolos de Comunicação Interprocessos 2 de novembro de 2014

2 2/46 Conteúdo Revisão sobre arquivos e criação de processos Pipes Filas de mensagens Memória compartilhada Unix Domain Sockets

3 3/46 Protocolos de Comunicação Interprocessos Pipes cat /etc/passwd grep false Filas de mensagens msgget(), msgrcv(), msgctl() Memória compartilhada POSIX Shared Memory: shm open(), mmap Unix Domain Sockets

4 4/46 Revisão sobre leitura e escrita de arquivos Padrões POSIX (Portable Operating System Interface - IEEE) Descritores de arquivos são números inteiros ls -l /proc/*/fd FILE*, fopen(), fclose(), fwrite() open(), create(), write() 0 = stdin, 1 = stdout, 2 = stderr Permissões 1 main ( ) { 2 c h a r buf [ 3 ] ; 3 r e a d ( 0, buf, 3 ) ; 4 w r i t e ( 1, buf, 3 ) ; 5 w r i t e ( 2, buf, 3 ) ; 6 }

5 5/46 Comunicação Inter Processos Unix Unix Inter Process Communication (IPC) Comunicação entre processos no mesmo computador Para uso em conjunto com fork() e similares

6 6/46 Criação de processos via fork Objetivo: criação de um processo-filho para auxiliar em tarefas paralelas Função: pid t fork(void); sys/types.h e unistd.h Se foi bem sucedido, pid t do filho é retornado para o pai ou, se erro, 1 Processo-filho será cópia duplicada do pai, com exceções de travas de arquivos e sinais No processo-filho, o valor de retorno será 0 (zero) wait() espera por 1 filho retornar (qualquer um) waitpid() espera por filho PID retornar 1 main ( ) { 2 s i g n a l (SIGCHLD, SIG IGN ) ; / now I don t have to w a i t ( )! / f o r k ( ) ; f o r k ( ) ; f o r k ( ) ; / Rabbits, r a b b i t s, r a b b i t s! /

7 1 #i n c l u d e... 2 main ( ) { 3 i n t s t a t u s ; p i d t p i d ; 4 p r i n t f ( Meu p i d é %d, do meu p a i é %d\n, g e t p i d ( ), g e t p p i d ( ) ) ; 5 6 s w i t c h ( p i d=f o r k ( ) ) { 7 c a s e 1: e x i t ( EXIT FAILURE ) ; 8 c a s e 0 : 9 p r i n t f ( Meu p i d é %d, do meu p a i é %d\n, g e t p i d ( ), g e t p p i d ( ) ) ; 10 e x i t ( EXIT SUCCESS ) ; d e f a u l t : 13 p r i n t f ( Meu p i d é %d, do meu p a i é %d\n, g e t p i d ( ), g e t p p i d ( ) ) ; 14 w a i t (& s t a t u s ) ; 15 i f (WIFEXITED( s t a t u s ) ) { 16 p r i n t f ( f i l h o bem\n ) ; e x i t ( EXIT SUCCESS ) ; 17 } e l s e { 18 p r i n t f ( f i l h o não bem\n ) ; e x i t ( EXIT FAILURE ) ; 19 } 20 } 21 } 7/46

8 8/46 Comunicação por sinais Comunica sinais ativam funções manipuladores de sinais de processos SIGSTOP pedido para parar um momento a execução SIGCONT pedido para continuar execução SIGTERM pedido para terminar execução voluntariamente SIGKILL ordem para terminar execução de um vez por todas SIGSEGV ordem para terminar devido acesso indevido a uma região de memória SIGUSR1 e SIGUSR2 configuráveis Função para lança sinal é kill() Não comunica dados Necessário Definir struct sigaction Definir função manipuladora no sigaction Cadastrar sigaction com função sigaction()

9 1 #i n c l u d e <s i g n a l. h> e o u t r o s // nomes do s i n a i s 2 v o l a t i l e s i g a t o m i c t r e c e b e u S i n a l ; 3 v o i d funcao manip ( i n t s i n a l ) { 4 r e c e b e u S i n a l = 1 ; 5 w r i t e ( 0, Um SIGINT!! nãaa.. \ n, 1 9 ) ; // async s a f e 6 } 7 main ( ) { 8 i n t s i n a l = SIGINT ; c h a r e n t r a d a [ ] ; 9 v o i d funcao manip ( i n t s i n a l ) ; // somente p r o t o t i p o 10 s t r u c t s i g a c t i o n acao ; r e c e b e u S i n a l = 0 ; acao. s a h a n d l e r = funcao manip ; // f. m a nipuladora 13 s i g e m p t y s e t (&acao. sa mask ) ; // c o n j. de s i n a i s para b l o q u e a r d u r a n t e e s t a acao 14 acao. s a f l a g s = SA RESTART ; // f l a g s p/ mudar f u n c. manip., ex. r e i n i c i a da onde parou s i g a c t i o n ( s i n a l, &acao, NULL) ; 17 p r i n t f ( (%d ) (%d ) E s c r e v a a l g o : \ n, g e t p i d ( ), r e c e b e u S i n a l ) ; 18 f g e t s ( entrada, s i z e o f entrada, s t d i n ) ; 19 p r i n t f ( (%d ) Você e s c r e v e u i s s o? %s \n, r e c e b e u S i n a l, e n t r a d a ) ; 20 } 9/46

10 10/46 Conceitos sobre pipes Pipe é um tipo de comunicação interprocessos Unnamed pipe ou anônimo é quando a comunicação existe sem criação expĺıcita do pipe Exemplo: cat /etc/hosts grep 127 Named pipe ou pipe nomeado é quando cria-se explicitamente o pipe Funcionamento similar a um arquivo Um named pipe precisa ser descartado explicitamente Criação: mkfifo <nome do pipe> Descarte: rm <nome do pipe> fildes[1] Pipe fildes[0] write() read()

11 1 main ( ) { 2 i n t f i l d e s [ 2 ], i n t BSIZE = ; c h a r buf [ BSIZE ] ; 3 p i p e ( f i l d e s ) ; // c r i a ç ã o dos d e s c r i t o r e s 4 5 s w i t c h ( f o r k ( ) ) { 6 c a s e 1: e x i t ( 1) ; // e r r o 7 c a s e 0 : / F i l h o r e c e b e do p i p e / 8 r e a d ( f i l d e s [ 0 ], buf, BSIZE ) ; / r e c e b e dados / 9 p r i n t f ( buf=\ %s \ \ nfim, buf ) ; 10 e x i t ( EXIT SUCCESS ) ; 11 d e f a u l t : / Pai e s c r e v e no p i p e / 12 w r i t e ( f i l d e s [ 1 ], H e l l o world, 12) ; / e s c r e v e / 13 c l o s e ( f i l d e s [ 1 ] ) ; / F i l h o r e c e b e EOF / 14 e x i t ( EXIT SUCCESS ) ; 15 } 16 } 11/46 Exemplos de pipes anônimos A função int pipe(int fildes[2]) em unistd.h cria um canal interprocessos fildes são descritores de arquivos: escrita em fildes[1], leitura em fildes[0]

12 12/46 int dup(int fildes); Coloca o descritor fildes no primeiro descritor padrão disponível int execlp(char *file, char *arg,...); Abre novo processo a partir do programa em *file fildes[1] pipe() fildes[0] stdin ls stdout stdin wc -l stdout dup(fildes[1]) pipe() dup(fildes[0]) stdin ls stdout stdin wc -l stdout close(1) close(0)

13 1 i n t main ( v o i d ) { 2 i n t f i l d e s [ 1 ] ; // f i l e d e s c r i p t o r s 3 p i p e ( f i l d e s ) ; 4 5 i f (! f o r k ( ) ) { 6 c l o s e ( 1 ) ; // f e c h a s a i d a padrao 7 dup ( f i l d e s [ 1 ] ) ; // poe na s a i d a d i s p o n i v e l f i l d e s [ 1 ] 8 e x e c l p ( l s, l s, NULL) ; 9 } e l s e { 10 c l o s e ( 0 ) ; // f e c h a e n t r a d a padrao 11 dup ( f i l d e s [ 0 ] ) ; // poe f i l d e s [ 0 ] na e n t r a d a padrao 12 e x e c l p ( wc, wc, l, NULL) ; 13 } 14 r e t u r n 0 ; 15 } 13/46

14 14/46 Pipes nomeados int mkfifo(char *pathname, mode t mode); em sys/stat.h Um escritor pode escrever de uma só vez no pipe até PIPE BUF bytes Escritor vai esperar (bloqueado) até alguém ler Tamanho do buffer: PIPE BUF em /usr/include/linux/limits.h (4096 bytes) Se leitor está esperando por dados e escritor fecha o pipe, leitor recebe EOF Se escritor encerra uso do pipe, dados escritos e não lidos são perdidos se não houver um leitor Principal vantagem em relação a pipes anônimos é a possibilidade de processos não relacionados fazerem comunicação interprocessos

15 15/46 Exemplos de pipes nomeados publib.boulder.ibm.com/infocenter/zvm/v6r1/index.jsp?topic=/com.ibm.zvm.v610.edclv/rtmkf.htm 1 #i n c l u d e <s y s / s t a t. h> 2 #i n c l u d e < f c n t l. h> 3 #i n c l u d e <u n i s t d. h> 4 5 main ( ) { 6 c h a r np []= temp. f i f o ; 7 c h a r out [20]= FIFO s a r e fun!, i n [ 2 0 ] ; 8 i n t r f d, wfd ; // d e s c r i t o r e s de a r q u i v o s 9 10 m k f i f o ( np, S IFIFO S IRWXU) ; // p e r m i s s o e s RWX p/ u s e r 11 r f d = open ( np, O RDONLY O NONBLOCK) ; 12 wfd = open ( np, O WRONLY) ; w r i t e ( wfd, out, s t r l e n ( out ) +1) ; 15 r e a d ( r f d, in, s i z e o f ( i n ) ) ; 16 p r i n t f ( r e a d % s from the FIFO\n, i n ) ; u n l i n k ( f n ) ; 19 }

16 1 //#i n c l u d e i n t main ( v o i d ) { // speak. c w r i t e s i n t o a FIFO 4 c h a r s [ ] ; 5 i n t num, f d ; 6 7 mknod ( named. p i p e, S IFIFO 0666, 0) ; 8 9 p r i n t f ( e s p e r a n d o por l e i t o r e s... \ n ) ; 10 f d = open (FIFO NAME, O WRONLY) ; 11 p r i n t f ( a c h e i um l e i t o r e s c r e v a a l g o \n ) ; w h i l e ( g e t s ( s ),! f e o f ( s t d i n ) ) { 14 i f ( ( num = w r i t e ( fd, s, s t r l e n ( s ) ) ) == 1) 15 p e r r o r ( w r i t e ) ; 16 e l s e 17 p r i n t f ( speak : e s c r e v e u %d b y t e s \n, num) ; 18 } r e t u r n 0 ; 21 } 16/46

17 1 #i n c l u d e... 2 #d e f i n e FIFO NAME named. p i p 3 i n t main ( v o i d ) {// t i c k. c r e a d s data from a FIFO 4 c h a r s [ ] ; 5 i n t num, f d ; 6 7 mknod ( FIFO NAME, S IFIFO 0666, 0) ; 8 9 p r i n t f ( e s p e r a por e s c r i t o r e s... \ n ) ; 10 f d = open (FIFO NAME, O RDONLY) ; 11 p r i n t f ( achou um e s c r i t o r \n ) ; do { 14 i f ( ( num = r e a d ( fd, s, 300) ) == 1) 15 p e r r o r ( r e a d ) ; 16 e l s e { 17 s [ num ] = \0 ; 18 p r i n t f ( t i c k : l e u %d b y t e s : \ %s \ \n, num, s ) ; 19 } 20 } w h i l e (num > 0) ; r e t u r n 0 ; 23 } 17/46

18 18/46 Exemplos de pipes em terminais No terminal 1 m k f i f o n p i p e 2 c a t / e t c / > n p i p e 3 c a t n p i p e

19 19/46 Conceitos sobre filas de mensagens (message queues) X/Open Systems Interfaces (XSI) da ISO Sistema tem um serviço preparado para receber mensagens Uma aplicação registra uma função para receber mensagens em uma dada fila Outras aplicações inserem mensagens na fila O sistema guarda mensagens até alguma aplicação receber

20 20/46 Conceitos sobre filas de mensagens (message queues) Similar a uma FIFO com funcionalidades extras Permite remover mensagens em ordem arbitrária Processos podem criar nova fila de mensagem ou usar uma existente Uma fila de mensagem existe mesmo sem processos usando Implementado como array de listas ligadas

21 21/46 Filas de mensagens Filas de mensagens POSIX #include <sys/msg.h> Receber número descritor de uma fila int msgget(key t key, int msgflg); Receber uma mensagem da fila msqid size t msgrcv(int msqid, void *msgp, size t msgsz, long msgtyp, int msgflg); Enviar uma mensagem na fila msqid int msgsnd(int msqid, void *msgp, size t msgsz, int msgflg); Modificar fila (mudar o dono, remover IPC RMID) int msgctl(int msqid, int cmd, struct msqid ds *buf);

22 22/46 Funções: criação de uma fila Obter ou criar (IPC CREAT) descritor de fila int msgget(key t key, int msgflg); msgget() retorna o ID da fila ou -1 se erro key t key é uma chave que processos precisam conhecer para usar a fila #include <sys/ipc.h> key t ftok(const char *pathname, int proj id); Exemplo: a chave é obtida com ftok("/algum/arquivo", 52) int msgflg representa o que deseja-se fazer com a fila Para criar (IPC CREAT) descritor de fila Passar com ou bit-a-bit as permissões (de arquivo) desejadas Exemplo: msqid = msgget(key, S IRWXU IPC CREAT);

23 23/46 Funções: envio de mensagens Uma mensagem deve ser enviada em uma estrutura similar a struct msgbuf (sys/msg.h) 1 s t r u c t msgbuf { 2 l o n g mtype ; // numero p o s i t i v o para r e c u p e r a r mensagem 3 c h a r mtext [ 1 ] ; // conteudo a s e r e n v i a d o 4 } ; Exemplo: 1 s t r u c t p i r a t a m s g b u f { 2 l o n g mtype ; // deve s e r p o s i t i v o! 3 s t r u c t i n f o p i r a t a { 4 c h a r nome [ 3 0 ] ; 5 c h a r t i p o n a v i o ; 6 i n t c r u e l d a d e ; 7 i n t n o t o r i e d a d e ; 8 } i n f o ; 9 } ;

24 24/46 Funções: envio de mensagens int msgsnd(int msqid, const void *msgp, size t msgsz, int msgflg); msqid é o id da fila const void *msgp é a struct da mensagem size t msgsz é o tamanho do conteúdo da mensagem int msgflg estabele funcionamento quando filas estiverem cheias Se 0, espera para enviar Se não 0, não envia e retorna erro 1 msgsnd ( msqid, &g o t t f r i d, s i z e m s g, 0) ;

25 25/46 Funções: recebimento de mensagens int msgrcv(int msqid, void *msgp, size t msgsz, long msgtyp, int msgflg); int msqid é o id da fila void *msgp é a estrutura que espera-se receber size t msgsz é o tamanho da estrutura que espera-se receber long msgtyp é o tipo da mensagem definida na estrutura int msgflg muda a forma de recepção zero obter próxima mensagem independentemente do tipo positivo obter próxima mensagem do tipo em msgtyp negativo obter primeira mensagem na fila cujo tipo é menor ou igual a msgtyp 1 msgrcv ( msqid, &p i r a t a a n o n, s i z e m s g, 2, 1) ;

26 1 #i n c l u d e... 2 main ( ) { 3 k e y t key = f t o k ( /tmp/ a r q f i l a, 52) ; 4 s t r u c t p i r a t a m s g b u f g o t t f r i d, p i r a t a a n o n ; 5 i n t c p i d ; 6 i n t msqid = msgget ( key, S IRWXU IPC CREAT ) ; 7 8 g o t t f r i d. mtype = 2 ; 9 s t r c p y ( g o t t f r i d. i n f o. nome, G o t t f r i d ) ; 10 g o t t f r i d. i n f o. c r u e l d a d e = 8 0 ; i n t s i z e=s i z e o f ( s t r u c t p i r a t a m s g b u f ) s i z e o f ( l o n g ) ; s w i t c h ( c p i d = f o r k ( ) ) { 15 c a s e 1: e x i t ( 1) ; 16 c a s e 0 : 17 msgrcv ( msqid, &p i r a t a a n o n, s i z e, 2, 1) ; 18 p r i n t f ( %s a v i s t a! \ n, p i r a t a a n o n. i n f o. nome ) ; 19 d e f a u l t : 20 msgsnd ( msqid, &g o t t f r i d, s i z e, 0) ; 21 w a i t p i d ( c p i d ) ; 22 } 23 } 26/46

27 27/46 Destruição da fila de mensagens No terminal ipcs, ipcrm, ipcmk Exemplo: ipcrm -msg 0 Em código 1 m s g c t l ( msqid, IPC RMID, NULL) ;

28 28/46 Resumo: filas de mensagens Similar a pipes nomeados Usa um pacote (struct) para transmitir dados Mensagens tem tipos e podem facilitar organização Ver exemplos: kirk.c e spock.c

29 29/46 Conceitos sobre memória compartilhada Processos podem compartilhar regiões de memória Ideia é ter variável que podem ser modificadas de maneira global entre processos

30 30/46 Criação da região compartilhada int shmget(key t key, size t size, int shmflg); Retorna identificador para a região compartilhada key t key mesma que para filas de mensagens com ftok() size t size tamanho da região de memória compartilhada int shmflg permissões, IPC CREAT para criar, ou padrão 0 1 key = f t o k ( /tmp/ t m p f i l e, R ) ; 2 shmid = shmget ( key, 1024, 0644 IPC CREAT ) ;

31 31/46 Obtenção de variáveis na região compartilhada void *shmat(int shmid, void *shmaddr, int shmflg); int shmid é o id da memória criada com shmget() void *shmaddr onde quer a variável, em geral 0 para SO escolher int shmflg: SHM RDONLY para indicar que a região vai ser somente leitura ou 0, caso contrário 1 data = shmat ( shmid, ( v o i d ) 0, 0) ; 2 3 i f ( data == ( c h a r ) ( 1) ) 4 p e r r o r ( shmat ) ;

32 32/46 1 #i n c l u d e... 2 main ( ) { 3 k e y t key ; i n t shmid ; c h a r t e x t o ; 4 5 key = f t o k ( /tmp/chavememsh, R ) ; 6 shmid = shmget ( key, 1024, 0644 IPC CREAT ) ; 7 t e x t o = shmat ( shmid, ( v o i d ) 0, 0) ; 8 s t r c p y ( t e x t o, P i r a t a s! ) ; 9 p r i n t f ( t = %s \n, t e x t o ) ; 10 } 1 #i n c l u d e... 2 main ( ) { 3 k e y t key ; i n t shmid ; c h a r t e x t o ; 4 5 key = f t o k ( /tmp/chavememsh, R ) ; 6 shmid = shmget ( key, 1024, 0644 IPC CREAT ) ; 7 t e x t o = shmat ( shmid, ( v o i d ) 0, 0) ; 8 p r i n t f ( t = %s \n, t e x t o ) ; 9 }

33 33/46 Encerrar memória compartilhada Quando um processo não usar mais a memória compartilhada ele deve desligar-se dela ou apagá-la Para se desligar, usar: int shmdt(void *shmaddr); void *shmaddr é o ponteiro da memória compartilhada Para apagar memória compartilhada: shmctl(shmid, IPC RMID, NULL);

34 34/46 Resumo: memória compartilhada Comunicação por compartilhamento de regiões de memória Deve haver sincronização para evitar efeitos inesperados Se nenhum processo explicitamente remover, região vai continuar na memória

35 35/46 Conceitos sobre Unix Domain Sockets Pipes e pipes nomeados funcionam em uma só direção Unix Domain Sockets funcionam nas duas direções Abstração que funciona em muitos meios (domínios), inclusive Internet Modelo cliente-servidor

36 36/46 Modelo cliente-servidor Servidor socket(), bind(), listen(), accept() Cliente socket(), connect() Comunicação send(), recv()

37 37/46 Estrutura para usar Unix sockets 1 s t r u c t s o c k a d d r u n { 2 u n s i g n e d s h o r t s u n f a m i l y ; / AF UNIX / 3 c h a r s u n p a t h [ ] ; 4 }

38 38/46 Criação de um socket 1 u n s i g n e d i n t s, s2 ; 2 s t r u c t s o c k a d d r u n l o c a l, remoto ; 3 4 s = s o c k e t ( AF UNIX, SOCK STREAM, 0) ; 5... #include <sys/socket.h> int socket(int domain, int type, int protocol); socket() retorna o identificador do socket SOCK STREAM indica que socket vai transmitir fluxos de dados

39 39/ s = s o c k e t ( AF UNIX, SOCK STREAM, 0) ; 3 l o c a l. s u n f a m i l y = AF UNIX ; // l o c a l é d e c l a r a d o a n t e s 4 5 s t r c p y ( l o c a l. sun path, /tmp/ mysocket ) ; 6 u n l i n k ( l o c a l. s u n p a t h ) ; // remove a n t e s de l i g a r 7 8 l e n = s t r l e n ( l o c a l. s u n p a t h ) +s i z e o f ( l o c a l. s u n f a m i l y ) ; 9 b i n d ( s, ( s t r u c t s o c k a d d r )&l o c a l, l e n ) ; Com socket criado, é necessário ligá-lo bind() liga o socket s com o endereço local Usa unlink() para não ter erro EINVAL len é necessário para indicar o tamanho da estrutura de endereço

40 40/46 Após ligar o endereço local com o socket s é necessário iniciar o processo de esperar por conexões 1 l i s t e n ( s, 5) ; int listen(int socket, int backlog); listen() faz o socket começar a aceitar conexões int backlog é o número de conexões que o socket vai aceitar Clientes em excesso receberão erro ECONNREFUSED

41 41/46 Aceitar conexão de cliente 1 l e n = s i z e o f ( s t r u c t s o c k a d d r u n ) ; 2 s2 = a c c e p t ( s, ( s t r u c t s o c k a d d r )&remoto, &l e n ) ; int accept(int socket, struct sockaddr *restrict address, socklen t *restrict address len); Faz processo esperar e aceitar por conexões Função retorna um novo socket para enviar dados para o cliente

42 42/46 Receber e enviar dados 1 w h i l e ( l e n = r e c v ( s2, &buf, 100, 0), l e n > 0) 2 send ( s2, &buf, len, 0) ; ssize t recv(int socket, void *buffer, size t length, int flags); ssize t send(int socket, const void *buffer, size t length, int flags); funções retornam o número de bytes lidos/escritos ou -1 (erro) int socket tem o número do socket de comunicação void *buffer contém o conteúdo enviado/recebido size t length é o número de bytes enviados/recebidos int flags determina o tipo de transmissão

43 43/46 O lado do cliente int connect(int socket, const struct sockaddr *address, socklen t address len); 1 #i n c l u d e... 2 main ( ) { 3 u n s i g n e d i n t s ; 4 s t r u c t s o c k a d d r u n remoto ; 5 6 s = s o c k e t ( AF UNIX, SOCK STREAM, 0) ; 7 remoto. s u n f a m i l y = AF UNIX ; 8 s t r c p y ( remoto. sun path, mysocket ) ; 9 10 i n t l e n = s t r l e n ( remoto. s u n p a t h ) + s i z e o f ( remoto. s u n f a m i l y ) ; 11 c o n nect ( s, ( s t r u c t s o c k a d d r )&remoto, l e n ) ; send ( s, b a r b a r o s s a, s t r l e n ( b a r b a r o s s a ), 0) ; 14 c l o s e ( s ) ; 15 }

44 Pipe bidirecional socketpair() cria um pipe bidirecional com sockets 1 main ( ) { 2 i n t sv [ 2 ] ; / the p a i r o f s o c k e t d e s c r i p t o r s / 3 c h a r buf ; / f o r data exchange between p r o c e s s e s / 4 5 s o c k e t p a i r ( AF UNIX, SOCK STREAM, 0, sv ) ; 6 7 i f (! f o r k ( ) ) { / c h i l d / 8 r e a d ( sv [ 1 ], &buf, 1) ; 9 p r i n t f ( f i l h o : l ê %c \ n, buf ) ; 10 w r i t e ( sv [ 1 ], &buf, 1) ; 11 p r i n t f ( f i l h o : e n v i a %c \ n, buf ) ; 12 } e l s e { / p a r e n t / 13 w r i t e ( sv [ 0 ], b, 1) ; 14 p r i n t f ( p a i : e n v i a b \ n ) ; 15 r e a d ( sv [ 0 ], &buf, 1) ; 16 p r i n t f ( p a i : l ê %c \ n, buf ) ; 17 w a i t (NULL) ; / w a i t f o r c h i l d to d i e / 18 } 19 r e t u r n 0 ; 44/46

45 45/46 Resumo arquivos com travas (não vimos com detalhes) sinais comunicação restrita pipes direcional, somente entre processos relacionados pipes nomeados direcionado, entre processos arbitrários filas de mensagens transmissão de pacotes, bidirecional memória compartilhada comunicação direto pela memória Unix Domain Sockets cria comunicação bidirecional: modelo-servidor

46 46/46 Referências Beej s Guide to Unix IPC

Memória compartilhada

Memó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 mais

Comunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes

Comunicaçã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 mais

Memória partilhada em Unix SysV

Memó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 mais

Comunicação entre Processos

Comunicaçã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 mais

Ambientes de Execução

Ambientes 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 mais

Sistemas de Computação Mecanismos IPC

Sistemas de Computação Mecanismos IPC Universidade Federal do Ceará Centro de Tecnologia Departamento de Engenharia de Teleinformática Sistemas de Computação Mecanismos IPC Professor: Alexandre Coelho Aluna: Maria Luciene Lira Monteiro - 0316855

Leia mais

Aula de Socket. Rafael De Tommaso do Valle

Aula 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 mais

Sockets. André Restivo. April 29, Faculdade de Engenharia da Universidade do Porto. André Restivo (FEUP) Sockets April 29, / 27

Sockets. 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 mais

Sincronização e Comunicação de/entre Processos. Na Aula Anterior... Nesta Aula. Comunicação entre Processos. Pipes 07/09/2016

Sincronizaçã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 mais

Inter-process Communication (IPC)

Inter-process Communication (IPC) Inter-process Communication (IPC) Comunicação entre processos (2) Filas (FIFOs, Named Pipes) Fila (FIFO, Named Pipe) Trata-se de uma extensão do conceito de pipe. Pipes só podem ser usados por processos

Leia mais

Comunicação entre Processos Memória Compartilhada

Comunicaçã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 mais

Sincronização e Comunicação Baseada em Mensagens

Sincronização e Comunicação Baseada em Mensagens Sincronização e Comunicação Baseada em Mensagens Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica Programa de Pós-Graduação

Leia mais

Cliente TCP. Programação sockets. Agenda. Cliente TCP. Chamadas sockets para TCP. Chamada socket() Chamada socket()

Cliente 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 mais

Sumá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 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 mais

Comunicação entre Processos Memória Compartilhada

Comunicação entre Processos Memória Compartilhada Comunicação entre Processos Memória Compartilhada 8/30/18 1 Métodos de comunicação entre processos Memória compartilhada Sinais Pipes Troca de mensagens Memória Compartilhada Memória compartilhada Permite

Leia mais

Soquetes 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 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 mais

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.

Cliente 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 mais

Sockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets

Sockets - 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 mais

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Servidor 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 mais

Programação de Sistemas. Tubos

Programaçã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 mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas FIFOs Programação de Sistemas FIFOs : 1/13 Introdução APUE 15.5 Os tubos só podem ser usados por processos que tenham um antecessor comum. Para resolver a limitação dos tubos, o

Leia mais

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Resumo das chamadas UDP. Resumo de Chamadas UDP.

Cliente 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 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

Sockets: Sumário. Resumo das Propriedades de UDP e de TCP

Sockets: 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 mais

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 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 mais

Comunicaçã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 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 mais

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Servidor 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 mais

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Servidor 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 mais

Sincronização e memória compartilhada no Linux

Sincronizaçã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 mais

Servidor TCP Volnys Borges Bernal Depto de Engenharia de Sistemas Eletrônicos Escola Politécnica da USP

Servidor TCP Volnys Borges Bernal Depto de Engenharia de Sistemas Eletrônicos Escola Politécnica da USP 2004-2019 Volnys Bernal 1 Servidor TCP Volnys Borges Bernal Depto de Engenharia de Sistemas Eletrônicos Escola Politécnica da USP 2004-2019 Volnys Bernal 2 Resumo das Chamadas TCP 2004-2019 Volnys Bernal

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

Inter-process Communication (IPC)

Inter-process Communication (IPC) Inter-process Communication (IPC) Comunicação entre processos (3) Memória Compartilhada (Shared Memory) Memória Compartilhada (Shared Memory) (1) Mecanismo de IPC que cria uma região de memória que pode

Leia mais

Memória Compartilhada (Shared Memory) (1) Memória Compartilhada (2) Memória Compartilhada (3)

Memó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 mais

Modelo Cliente/Servidor e Introdução a Sockets

Modelo Cliente/Servidor e Introdução a Sockets Modelo Cliente/Servidor e Introdução a Sockets MC 833 Programação em s de Computadores Instituto de Computação UNICAMP Juliana Freitag Borin O modelo OSI de 7 camadas Nó origem Nó destino Apresentação

Leia mais

Sistemas Operacionais II

Sistemas 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 mais

Unnamed Pipes. Chamada ao sistema pipe. Pipes. Comunicação entre processos. Unnamed Pipes Chamada so sistema. José Pedro Oliveira

Unnamed 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 mais

Comunicação entre pai e filho

Comunicaçã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 mais

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.

Cliente 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 mais

Comunicação entre Processos Named Pipes (FIFO)

Comunicação entre Processos Named Pipes (FIFO) Comunicação entre Processos Named Pipes (FIFO) 5/17/18 1 Named pipe (FIFO) FIFO permite que dois processos quaisquer se comuniquem É um tipo especial de arquivo visível no sistema de arquivos Na troca

Leia mais

Exercícios Avaliativos Memória Compartilhada

Exercí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 mais

Sistemas Distribuídos Aula 2

Sistemas 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 mais

Anexo 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 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 mais

COMUNICAÇÃO ENTRE APLICAÇÕES. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

COMUNICAÇÃO ENTRE APLICAÇÕES. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes COMUNICAÇÃO ENTRE APLICAÇÕES Laboratórios de Informática 2014-2015 João Paulo Barraca, André Zúquete, Diogo Gomes Comunicação Aplicações interagem de várias formas com o utilizador (stdin, stdout, stderr)

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: Sockets Para estabelecer a Comunicação Interprocesso nos Sistemas Distribuídos,

Leia mais

tutorial. man fork man pthread_create man pthread_join man wait man sleep

tutorial. 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 mais

Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP)

Programaçã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 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

IPC Interprocess communication

IPC 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 mais

Sistemas Operacionais II Unix: Memória e E/S. Geraldo Braz Junior

Sistemas 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 mais

Programação de Aplicações em. Rede usando Sockets

Programaçã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 mais

Servidor UDP Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP

Servidor 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 mais

Manipulação de Ficheiros

Manipulação de Ficheiros Manipulação de Ficheiros Utilização de ficheiros Programas normalmente necessitam de ler e/ou escrever em ficheiros de dados Tipicamente um ficheiro representa uma sequência qualquer de bytes Redirecionamento

Leia mais

Arquitetura de Sistemas Operativos

Arquitetura de Sistemas Operativos Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Um processo é uma instância em execução de um programa. No sistema operativo Unix a única forma de se criar um novo processo (processo-filho)

Leia mais

Servidor UDP. Programação Sockets Volnys Bernal. Servidor UDP Resumo das Chamadas UDP. Resumo de Chamadas UDP. Resumo de Chamadas UDP

Servidor 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 mais

SISTEMAS OPERATIVOS I

SISTEMAS 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 mais

Aula Prática. Comunicação em SOCKTS. Disciplina: INF01151

Aula Prática. Comunicação em SOCKTS. Disciplina: INF01151 Aula Prática Comunicação em SOCKTS Disciplina: INF01151 Prof. Dr. Cláudio Fernando Resin Geyer Monitor: Julio Anjos Agenda 1 - Objetivo Apresentar na prática a comunicação entre processos usando sockets

Leia mais

API de Sockets. Modelo Cliente/Servidor (2/2) Modelo Cliente/Servidor (1/2) José Pedro Oliveira Sistemas Operativos I

API de Sockets. Modelo Cliente/Servidor (2/2) Modelo Cliente/Servidor (1/2) José Pedro Oliveira Sistemas Operativos I Conteúdo (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho 1 Sistemas Operativos I 2006-2007 Modelo Cliente/Servidor (1/2) Modelo

Leia mais

Tratamento de Sinais

Tratamento 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 mais

Introdução à Programação com Sockets. Fernando Jorge Silveira Filho Daniel Sadoc Menasché

Introduçã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 mais

Duplicação e partilha de ficheiros

Duplicação e partilha de ficheiros (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos I 006-007 : ficheiros abertos Dois processos independentes com

Leia mais

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node { Listas (cont.) K&R: Capitulo 6 Lista Simplesmente Ligada Conjunto de nós head NULL Cada nó contém Informação útil Ponteiro para o próimo nó typedef struct node Item item; struct node *net; *link; Item

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

Sinais. Sinais e fork. Sinais e exec. Segunda aula. Chamada ao sistema fork Chamada ao sistema execve. José Pedro Oliveira

Sinais. 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 mais

Arquitetura de Computadores Sistemas Operacionais II

Arquitetura de Computadores Sistemas Operacionais II Definição de Processo Arquitetura de Computadores Sistemas Operacionais II Processo é o mesmo de Programa? Programa Estrutura estática Instruções + Dados Processo Entidade Ativa Instância de um Programa

Leia mais

Teste de Sistemas de Operação 15 de Abril de 2010

Teste de Sistemas de Operação 15 de Abril de 2010 Teste de Sistemas de Operação 15 de Abril de 2010 Duração: 1 h (prática + teórica) D NOME: Indique apenas uma das alternativas. Respostas erradas descontam na nota. 1. Em um sistema que suporta multiprogramação

Leia mais

Redes de Computadores e Aplicações

Redes 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 mais

Programação de sistema UNIX

Programaçã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 mais

MAC422/5753 Sistemas Operacionais

MAC422/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 mais

Comunicaçã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 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 mais

Comunicação entre processos. Sistema centralizado

Comunicaçã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 mais

Existe uma quantidade de informação que pode ser armazenada para resolver o problema.

Existe uma quantidade de informação que pode ser armazenada para resolver o problema. Arquivos Introdução As estruturas vistas anteriormente armazenam as informações na memória principal do computador. Nem sempre é conveniente. Problemas: A informação é perdida; As estruturas de dados são

Leia mais

Memória partilhada em Unix SysV

Memó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 Ö Ó ÙÑ Ñ ÒØÓ Ñ Ñ Ö Ô ÖØ Ð DCC/FCUP

Leia mais

Outline. 33. Manipulação de arquivos DIM

Outline. 33. Manipulação de arquivos DIM Outline 33. Manipulação de arquivos DIM031 015.1 Leitura e escrita 3 s DIM031 33. Manipulação de arquivos 015.1 1 / 4 DIM031 33. Manipulação de arquivos 015.1 / 4 Arquivo = entidade de armazenamento de

Leia mais

IPC no UNIX. Onofre Trindade Jr

IPC no UNIX. Onofre Trindade Jr IPC no UNIX Onofre Trindade Jr Processo módulo módulo Comunicação entre módulos Variáveis globais Chamada de funções parâmetros resultados Comunicação Processo Único Processo A Processo B Kernel Comunicação

Leia mais

REDES INTEGRADAS DE TELECOMUNICAÇÕES I 2008 / 2009

REDES INTEGRADAS DE TELECOMUNICAÇÕES I 2008 / 2009 Departamento de Engenharia Electrotécnica REDES INTEGRADAS DE TELECOMUNICAÇÕES I 2008 / 2009 Mestrado Integrado em Engenharia Electrotécnica e Computadores 4º ano 7º semestre 2º Trabalho Prático: Localização

Leia mais

Na Aula Anterior... Interrupções por software e hardware; Temporizadores; RTC; Temporizadores via software. Relação Processos Multiprogramação

Na Aula Anterior... Interrupções por software e hardware; Temporizadores; RTC; Temporizadores via software. Relação Processos Multiprogramação GSI018 Sistemas Operacionais 26/08/2016 Gerência de Processos Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Na Aula Anterior... Interrupções por software

Leia mais

Teste de Sistemas de Operação 30 de Maio de 2009

Teste de Sistemas de Operação 30 de Maio de 2009 Teste de Sistemas de Operação 30 de Maio de 2009 Duração: 30 min B NOME: Indique apenas uma das alternativas. Respostas erradas descontam na nota. 1. Um pedido de entrada e saída sem buffering: (letra

Leia mais

Introdução aos Sistemas Operativos

Introdução aos Sistemas Operativos Introdução aos Sistemas Operativos Baseado em: Andrew S. Tanenbaum. Modern Operating Systems, Prentice-Hall, 1992 FEUP/INESC http://www.fe.up.pt/~jlopes/teach/ jlopes@inescn.pt v 1.0, Outubro de 1997 Introdução

Leia mais

João Correia Lopes. v 1.0, Outubro de Introdução aos Sistemas Operativos v1.0 1

João Correia Lopes. v 1.0, Outubro de Introdução aos Sistemas Operativos v1.0 1 Introdução aos Sistemas Operativos Baseado em: Andrew S. Tanenbaum. Modern Operating Systems, Prentice-Hall, 1992 FEUP/INESC http://www.fe.up.pt/~jlopes/teach/ jlopes@inescn.pt v 1.0, Outubro de 1997 Introdução

Leia mais

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br Computação Eletrônica Aula 12 Arquivos Texto e Binário Prof: Luciano Barbosa Relembrando a Arquitetura Básica de um Computador Até agora, toda a informação armazenada por nossos programas estava na memória

Leia mais

time_t shm_ctime; /* hora da última alteração de atributod da MP através de shmctl + IPC_SET */

time_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 mais

Grupo 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 -

Grupo 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 mais

Sistema de Controlo com Acesso Remoto

Sistema de Controlo com Acesso Remoto Trabalho de Laboratório Programação de Sistemas - LEE IST - 2007/2008 Sistema de Controlo com Acesso Remoto 1 Introdução Um sistema de controlo é, normalmente, constituído por vários processos controladores

Leia mais

camada de transporte SOCKET TCP UDP

camada 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 mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Canal de comunicação Arquitectura da comunicação Modelos de comunicação 8/28/2003 José Alves Marques 1 Necessidade da Comunicação A sincronização entre processos permitiu que

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas FIFOs Programação de Sistemas FIFOs : 1/13 Introdução APUE 15.5 Os tubos só podem ser usados por processos que tenham um antecessor comum. Para resolver a limitação dos tubos, o

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

1/24 FICHEIROS DE TEXTO

1/24 FICHEIROS DE TEXTO 1/24 FICHEIROS DE TEXTO Hardware de entrada/saída 2/24 Hardware de entrada/saída Grande variedade de dispositivos de E/S (Input/Output) - de memória: disco interno e externo, DVD, pen, CD,... - de transmissão:

Leia mais

Tubos ou Pipes de Comunicação

Tubos ou Pipes de Comunicação 1 Tubos ou Pipes de Comunicação 1. Introdução Os tubos (ou pipes) constituem um mecanismo fundamental de comunicação unidirecional entre processos. Eles são um mecanismo de I/O com duas extremidades, ou

Leia mais

Sistemas Operativos 2004/05. Programação concorrente em ambiente LINUX Guia das aulas práticas

Sistemas Operativos 2004/05. Programação concorrente em ambiente LINUX Guia das aulas práticas Sistemas Operativos 2004/05 Programação concorrente em ambiente LINUX Guia das aulas práticas Versão 1.01 19/05/2003 Índice INTRODUÇÃO 3 A linguagem C 3 Principais diferenças em relação ao C++ 3 Compilação

Leia mais

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA ENGENHARIA DE COMPUTAÇÃO

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA ENGENHARIA DE COMPUTAÇÃO UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA ENGENHARIA DE COMPUTAÇÃO ALAN FERNANDO COELHO GARCIA EDUARDO GUILHERME CORDEIRO MECÂNISMO DE

Leia mais

Comunicação entre Processos. 1. Pipes 2. Fifos 3. Sockets

Comunicaçã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 mais

Comunicação entre Processos

Comunicaçã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 mais

Sistemas Operacionais

Sistemas 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 mais

Sumário. Ficheiros. Ficheiros

Sumário. Ficheiros. Ficheiros Sumário Ficheiros Motivação Operações Ficheiros de texto e binários Manipulação de ficheiros de texto Abertura Encerramento Descritores de ficheiros: stdin, stdout, stderr Escrita Leitura Outras funções

Leia mais

Capítulo 13: Sistemas de E/S. Operating System Concepts with Java 7th Edition, Nov 15, 2006

Capítulo 13: Sistemas de E/S. Operating System Concepts with Java 7th Edition, Nov 15, 2006 Capítulo 13: Sistemas de E/S Capítulo 13: Sistemas de E/S Hardware de E/S Interface de E/S da aplicação Subsistema de E/S do kernel Transformando requisições de E/S em operações de hardware Fluxos Desempenho

Leia mais

Estruturas de Sistemas Operacionais

Estruturas 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 mais

Mestrado em Engenharia Física Tecnológica

Mestrado em Engenharia Física Tecnológica 5 a Aula - Ciclo for. Leitura e Escrita em Ficheiros. Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física Instituto Superior Técnico

Leia mais

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

INF01018 Aula Prática 1 Cliente-Servidor e Multicast 1 / 30 INF01018 Aula Prática 1 Cliente-Servidor e Multicast Lucas Mello Schnorr, Alexandre Silva Caríssimi {lmschnorr,asc}@inf.ufrgs.br http://www.inf.ufrgs.br/ lmschnorr/ad/ INF01018 Sistemas Operacionais

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Prof. Dr. André Carvalho andre@icomp.ufam.edu.br Agenda n Comunicação entre Processos n Características dos mecanismos de comunicação Comunicação direta ou indireta, sincronismos,

Leia mais