- Bifurcación (sistema operativo)
-
Bifurcación (sistema operativo)
- Este artículo se refiere a la bifurcación de procesos en sistemas operativos, consulta Bifurcación (informática) para otros usos.
Una bifurcación o fork, cuando se aplica en el contexto de un lenguaje de programación o un sistema operativo, hace referencia a la creación de una copia de sí mismo por parte de un programa, que entonces actúa como un "proceso hijo" del proceso originario, ahora llamado "padre". Los procesos resultantes son idénticos, salvo que tienen distinto número de proceso (PID).
Más generalmente, una bifurcación en un entorno multihilo significa que un hilo de ejecución se bifurca.
UNIX
En el caso concreto del sistema operativo UNIX, la llamada al sistema fork permite realizar una bifurcación de este tipo. Esta llamada devuelve el PID del proceso hijo al padre y un 0 al hijo.
Aquí hay un ejemplo escrito en lenguaje de programación C que muestra el uso de esta llamada. El código en las secciones proceso hijo y proceso padre se ejecuta simultáneamente.
int pid; pid = fork(); if(pid == 0) { /* Proceso hijo: * Cuando fork() devuelve 0, estamos en * el proceso hijo. * Aquí contamos hasta diez, uno cada segundo. */ int j; for(j=0; j < 10; j++) { printf("hijo: %d\n", j); sleep(1); } _exit(0); /* nota: exit en lugar de _exit */ } else if(pid > 0) { /* Proceso padre: * Sino estamos en el proceso padre. * De nuevo contamos hasta diez. */ int i; for(i=0; i < 10; i++) { printf("padre: %d\n", i); sleep(1); } } else { /* ha ocurrido un error. */ fprintf(stderr, "no se ha podido bifurcar"); exit(1); }
Este código imprimirá:
padre: 0 hijo: 0 hijo: 1 padre: 1 padre: 2 hijo: 2 hijo: 3 padre: 3 padre: 4 hijo: 4 hijo: 5 padre: 5 padre: 6 hijo: 6 hijo: 7 padre: 7 padre: 8 hijo: 8 hijo: 9 padre: 9
El orden de la salida será determinada por diversos parámetros del núcleo del sistema operativo.
Categoría: Programación
Wikimedia foundation. 2010.