Go up to Unix
Go forward to IPC em SYSV
IPC em Unix
IPC permite transferência e partilha de dados, notificação de eventos,
partilha de recursos e controle de processos (ex. debugging).
- Sinais: caros e apenas 31 em SVR4 ou BSD.
- Pipes: FIFO não-estruturado e unidirecional. Problemas: não permite
broadcasts, não conhece limites de mensagens, não pode especificar o
leitor.
- Tradicionalmente: inode e entrada na tabela de ficheiros com pipe.
- BSD usa sockets, SVR4 usa streams.
- Named pipes: mknod é usado para criar o pipe, que depois é
acessível a processos. Vantagens: persistência, acesso a qq
processo. Desvantagens: têm que ser removidos, não são tão seguros,
consome mais recursos, mais complicados de criar.
- Controle de Processos através de ptrace(cmd, pid, addr, data).
- Permite a um processo ler ou escrever no espaço de
um seu filho (incluindo área-u), mexer nos registos, interceptar
sinais, criar watchpoints no espaço de endereçamento, resumir a
execução de um filho parado, andar passo a passo, ou terminá-lo.
- cmd 0 é usado pelo filho para indicar que está controlada por
ptrace(), alterando comportamento para sinais e para
fork()
- Parente usa wait() para esperar eventos que mudam o estado
da criança. Quando o evento chega usa ptrace() para controlar.
- Limitações: só pode controlar filhos imediatos; não permite apanhar
processos em andamento, extremamente ineficiente, problemas com programs
setuid().
- /proc é a alternativa usada em sistemas modernos.
vitor@cos.ufrj.br