La función fork crea un nuevo proceso duplicando al proceso
actual que lo está llamando. Okey sé que esta definición está un poco confusa,
pero vamos a explicarlo con un ejemplo, creo que todo el mundo conoce o por lo
menos a escuchado o visto el ejemplo de mitosis, que es cuando las células del
cuerpo se duplican de manera instantánea, incluso en las caricaturas de niños salen
este tipo de escenas, bien ya que sabes lo que es una mitosis adivina que, pues
fork es parecido, cuando un código se ejecuta por la computadora se le asigna un
espacio de memoria donde se carga el código y se van creando las variables en
tiempo de ejecución con forme el programa la necesita, este lugar es conocido
como el montículo o heap en inglés. Cada proceso tiene su propio espacio de
memoria y ningún otro proceso puede acceder a dichos espacios, cuando se llama
a la función fork() el sistema operativo crea una copia exacta del proceso que
llama a la función fork(), por ejemplo si ejecutamos nuestro programa y
llamamos a fork() desde el main, el SO crea una copia idéntica de nuestro
programa pero la copia será asignada como un proceso hijo de nuestro programa,
por lo tanto como es un nuevo proceso este cuenta con su propio espacio de
memoria y puede ejecutarse de manera independiente del programa padre, ah pero
cuidado, recuerda que cuando un proceso termina su ejecución el SO se encarga
de terminar a todos los procesos hijos que ha creado, ten en cuenta eso ya si
llegas a mandar una carga excesiva de trabajo al proceso hijo y finalizas el
proceso padre, el hijo será destruido por el SO. A continuación, te muestro un
ejemplo de un ejercicio.
Instrucciones: Realizar un programa en c o c++ utilizando la
función fork(); en conjunto con la función printf(); para imprimir de manera
repetitiva 3 letras: A, B y C. Recordar que fork() primero ejecuta el proceso
padre y luego al hijo.
#include <iostream>#include <unistd.h>using namespace std;int main(){cout << "A" << endl;fork();cout << "B" << endl;fork();cout << "C" << endl;return 0;}
Referencias Bibliográficas:
fork(2) - Linux manual page. (s. f.). Linux ManPages. https://man7.org/linux/man-pages/man2/fork.2.html
Comentarios
Publicar un comentario