Sincronização em MultiprocessadoresTopEscalonamentoComunicação entre Processos

Comunicação entre Processos

IPC em Unix

IPC permite:

IPC em Unix Original: Sinais

Sinais vêm desde Unix original:

Pipes

FIFO não-estruturado e unidirecional:

Mais Pipes

Implementação varia:

Named pipes: mknod é usado para criar o pipe, que depois é acessível a processos.

Controle de Processos

ptrace(cmd, pid, addr, data).

ptrace em acção

Limitações:

Sistemas modernos usam /proc: fs/proc, kernel/ptrace.c e arch/i386/kernel/ptrace.c.

IPC em SYSV

SYSV suporta semáforos, filas de mensagens, e memória partilhada

Cada recurso tem os seguintes atributos:

get cria o recurso, cft controla com STAT, SET, RMID.

Cada recurso tem uma tabela de tamanho fixa.

Ver ipc em Linux.

Semáforos em SYSV

IPC em Mach

Troca de Mensagens é o mecanismo fundamental de comunicação:

Bastantes melhoramentos em Mach 3.0.

Portas em Mach

Tasks tem direitos sobre portas de send e de receive (apenas a dono): comunicação muitos-para-um.

Mensagens podem ser:

Mais Portas

Portas, Tasks, e Threads

Mensagens em Mach

Mensagens podem ser locais ou por rede (através de netmsgserver):

Estrutura de uma Mensagem

Interface

Três funções:

Implementação de Portas em Mach

Cada porta é uma fila protegida de mensagens no kernel:

Traduções de Portas

Tradução é <task,port,local_name,type>:

Passagem de Mensagens em Mach

Emissão:

  1. Emissor cria mensagem;
  2. chama msg_send() do kernel;
  3. kernel copia mensagem e:
    1. se thread está à espera é acordado e recebe;
    2. se lista cheia emissor bloqueia;
    3. senão mensagem colocada na fila;

Recepção:

  1. receptor chama msg_rcv();
  2. kernel chama msg_dequeue();
  3. kernel copia para receptor.

Portas em Mensagens

Memória Out-of-Line

Mach usa copy-on-write:

Controle de Portas

Operações sobre Portas em Mach

Destruição de portas:
mensagens são removidas e NOTIFY_PORT_DELETED é enviado. Se mensagem contém direitos sobre a própria porta dá confusão em Mach 2.5.
Portas backup:
usadas quando a porta original é destruída.
Conjuntos de Portas:
um receptor recebe todas as mensagens para o conjunto. Permite controle de vários objectos por uma única task.
Interpolação de portas:
permite substituir uma capacidade para uma única porta com uma porta diferente. Usada por debugger para controlar acesso a um processo.

Passagem de Mensagem em Rede

netmsgserver permite extensão para rede:

Mach 3.0


vitor@cos.ufrj.br

Sincronização em MultiprocessadoresTopEscalonamentoComunicação entre Processos