Go backward to Implementação de Portas em Mach
Go up to IPC em Mach
Go forward to Operações sobre Portas em Mach
Passagem de Mensagens em Mach
- Emissor cria mensagem; chama msg_send(); kernel copia
mensagem e (i) se thread está à espera é acordado e recebe, (ii) se
lista cheia emissor bloqueia, senão mensagem colocada na fila;
kernel regressa de msg_send().
- receptor chama msg_rcv(), kernel chama
msg_dequeue(), kernel copia para receptor.
- Se emissor espera resposta, envia direitos para porta usando
campo reply port na mensagem.
- Servidor de nomes também pode dar direitos de acesso a uma
porta de um servidor. O servidor de nomes tem direto de acesso à
maioria dos servidores no sistema.
- Quando nova porta chega kernel deve fazer tradução,
verificando primeiro se porta já existe, senão aloca um novo
índice e cria um novo nome.
- Para transferências grandes Mach usa copy-on-write. Se
emissor usar deallocate, copyin() limita a passar as
páginas para receptor.
- Notificações: mensagens enviadas para informar uma task de
eventos.
- Mensagens podem ser enviadas no caminho lento (colocar na
fila) ou caminho rápido (handoff scheduling).
vitor@cos.ufrj.br