Go backward to Execução em Modo Kernel
Go up to Processos em Unix
Go forward to Sinais em Unix
Sincronização em Unix
- syscall são "non-preemptive": só um processo de cada vez.
- Processo pode bloquear num recurso (ie. buffer em memoria):
- Processo chama sleep().
- sleep() coloca processo numa fila, e chama swtch()
para entrar outro processo.
- quando`kernel liberta recurso chama wakeup() para acordar
todos os processos, ie, colocá-los na fila do escalonador.
- outros processos podem precisar do recurso:
wake_one() e wakeprocs().
- Interrupts podem acontecer a qualquer altura: sinc. com
splbio and slpx.
- Mais complicado ainda com multiprocessamento.
vitor@cos.ufrj.br