Procesos Concurrentes

Páginas: 6 (1321 palabras) Publicado: 23 de diciembre de 2012
Procesos concurrentes: llamadas fork y wait
2. fork
Para crear nuevos procesos, el UNIX dispone únicamente de una llamada al sistema, fork, sin ningún tipo de parámetros. Su prototipo es
int fork();
Al llamar a esta función se crea un nuevo proceso (proceso hijo), idéntico en código y datos al proceso que ha realizado la llamada (proceso padre). Los espacios de memoria del padre y el hijo sondisjuntos, por lo que el proceso hijo es una copia idéntica del padre que a partir de ese momento sigue su vida separada, sin afectar a la memoria del padre; y viceversa.
Siendo más concretos, las variables del proceso padre son inicialmente las mismas que las del hijo. Pero si cualquiera de los dos procesos altera una variable, el cambio sólo repercute en su copia local. Padre e hijo nocomparten memoria.
El punto del programa donde el proceso hijo comienza su ejecución es justo en el retorno de la función fork, al igual que ocurre con el padre.
Si el proceso hijo fuera un mero clon del padre, ambos ejecutarían las mismas instrucciones, lo que en la mayoría de los casos no tiene mucha utilidad. El UNIX permite distinguir si se es el proceso padre o el hijo por medio del valor deretorno de fork. Esta función devuelve un cero al proceso hijo, y el identificador de proceso (PID) del hijo al proceso padre. Como se garantiza que el PID siempre es no nulo, basta aplicar un if para determinar quién es el padre y quién el hijo para así ejecutar distinto código.
Ejemplo de uso de fork()
* Primero debemos crear nuestro archivo fuente en el cual contendrá nuestro programa aejecutar. Utilizaremos el editor de texto de Minix el Vi.

* Escribimos el código fuente del programa. Quedando de la siguiente manera, guardamos los cambios presionando las teclas [Esc]+[x]+[¡]+[Enter].

* Luego compilamos nuestra aplicación de ejem-fork. Con el siguiente código: “cc ejem-fork.c –o ejem-fork”.
* Esto creara un archivo ejecutable llamado ejem-fork que será nuestroejecutable del programa; ahora solo lo ejecutamos.


* La salida del programa seria losiguiente:

Ejemplo2(Propuesto) de uso de fork():

* Haremos usos del editor “vi” disponible en Minix.




* Escribimos el código fuente.

* Compilamos y ejecutamos el programa

* En este programa, tanto los procesos de impresión de líneas que indican (1) si la línea se imprime por elhijo o por el proceso padre, y (2) el valor de la variable i. Para simplificar se utiliza, printf ().
* Cuando se ejecuta el programa principal fork (), una copia idéntica de su espacio de direcciones, incluyendo el programa y todos los datos, se crea. El sistema de llamada a fork() devuelve el ID del proceso hijo al padre y devuelve 0 al proceso hijo. La siguiente figura muestra que en ambosespacios de direcciones hay un pid variable. La de que el padre reciba la identificación del hijo el proceso de 3456 y la de que el hijo recibe 0.

* Ahora, tanto los programas (es decir, el padre y el hijo) se ejecutará independientes unos de otros a partir de la siguiente declaración:

* En los padres, ya que pid es distinto de cero, se llama a la función ParentProcess (). Por otrolado, el hijo tiene un pid cero y llamadas ChildProcess ().

* Debido al hecho de que el planificador de la CPU se asigna un cuanto de tiempo a cada proceso, el padre o el proceso hijo tendrá una duración de algo de tiempo antes de que el control se conecta a la otra y el proceso de ejecución será mostrar algunas líneas antes de ver cualquier línea impreso por el otro proceso. Por lo tanto,el valor de MAX_COUNT debe ser lo suficientemente grande como para que ambos procesos se ejecutarán por quanta de tiempo por lo menos dos o más. Si el valor de MAX_COUNT es tan pequeña que un proceso puede terminar en un cuanto de tiempo, verá dos grupos de líneas, cada una de las cuales contiene todas las líneas impresas por el mismo proceso.

Ejemplo3(Propuesto) de uso de fork():
*...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Concurrencia De Procesos
  • Concurrencia Entre Procesos Y Exclusión Mutua
  • Procesos concurrentes
  • Procesos Concurrentes: Sistemas Operativo
  • Sistemas operativos: procesos concurrentes
  • concurrencia
  • Concurrencia
  • Concurrente

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS