Minix
Camadas: Init Proc. Mngr User mode Kernel mode Driver disco shell File Server Driver tty cron Progr. usuário Progr. usuário Servidores
Information Network Server Server
Driver Ethernet kernel
Outros drivers relógio system task
Núcleo do Minix 3 O núcleo implementa os seguintes 9pos de comunicação: – send(dest, &message) – receive(src, &message) – send_rec(src_dst, &message) – no9fy (dest, &message) Observações: • Núcleo copia dados da área do processo fonte (src) para o processo des9natário (dest), usando CopyMess. • Existem 6 formatos de mensagem (mess_1, mess_2,…) para diferentes conjuntos de parâmetros (= union com source, type e 9pos de dados), definidos em kernel/ proc.h
• Parâmetros podem ser ponteiros para estruturas de dados do sistema • Chamadas do sistema, interrupções de HW, do relógio, sinais, etc. todos são conver9dos para envios de mensagens (p.ex. _syscall traduz código de chamada em mensagem)
2
Funcionamento Básico
Minix 3
User Process chama fork
libc
fork() { _syscall(PM,56,&m) }
PM do_fork(), do_exec(), ...
kernel/System.c get_priv(); send_sig(); ...
Em kernel/proc.c: sys_call(); mini_send(); mini_receive(); mini_no9fy(); enqueue(); dequeue(); sched(); pic_proc(); lock_send(), lock_enqueue(); lock_dequeue(); Em kernel/mpx386.s: Tratamento de interrupção