Go up to Execução de Processos
Go forward to Inicialização de Processos: exec
Inicialização de Processos: fork
A chamada fork() duplica processos:
- fork() cria um novo processo: retorna 0 para filho e
PID para o pai.
- fork() reserva swap, aloca novo PID e proc, inicializa
proc, aloca mapas de tradução de endereços, aloca u-area e copia do
pai, altera a u-area com novos mapas de endereços e swap, adiciona o
filho aos processos que partilham o texto do pai, duplica as áreas
de pilhas e dados do pai, obtém referencias a recursos partilhados,
inicializa contexto HW, põe o processo runnable e na filha de
escalonamento, retorna para o filho e para o pai.
- evitar cópia: copy-on-write e vfork().
vitor@cos.ufrj.br