Minix Internals
Camadas:
Init
Proc.
Mngr
User mode
Kernel mode
shell
File
Server
Driver disco Driver tty cron
Progr. usuário Information Network
Server
Server
Driver
Ethernet
kernel
Progr. usuário Servidores
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
Minix 3
Funcionamento Básico
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