Definición
La System call fork()
es la única forma que un usuario cree un proceso en el sistema operativo UNIX. El proceso que invoca a fork()
es llamado proceso padre, el nuevo proceso creado es llamado hijo.
Que hace?
- Crea y asigna una nueva entrada en la Process table para el nuevo proceso
- Asigna un número de ID único al proceso hijo
- Crea una copia lógica del contexto del proceso padre, algunas de esas partes pueden ser compartidas como la sección text
- Realiza ciertas operaciones de O
- Devuelve el número de ID del hijo al proceso padre, y un
al proceso hijo
Características
- Una llamada dos valores de retorno
- El fork se llama una vez desde el proceso padre, pero devuelve dos valores un valor al proceso padre y otro valor al proceso hijo
- Ejecución concurrente
- Ambos procesos se ejecutan en forma concurrente por lo cual no hay determinismo en el orden de ejecución
- Address space duplicados pero separados
- Si se pudiera ver el address space, del padre y el hijo, inmediatamente después de ejecutarse el fork, se vería que son identicos.
- Archivos compartidos
- Los user file descriptor table es heredada con todos sus archivos en el mismo estado