Sistemas Operativos

Monday, August 28, 2006

Laboratorio #2

1) Fork() simple

Explique porque si el valor de “x” en el proceso padre es igual o distinto al del proceso hijo.
- El valor "x" es igual debido a que los procesos padre e hijo hacen el random, que genera los valores "aleatorios", despues de la llamada a Fork(), por lo que ambos procesos tiene copias de variables identicas y su tiempo de ejecuciones es casi el mismo.

Imagen de corrida del programa:

¿Existe alguna forma de predecir los ID del proceso que serán asignados al proceso hijo y al proceso padre? Explique porque si o porque no.
- Segun lo que se puede observar en la corrida de este programa, los valores que identifican al proceso hijo son mayores que los del proceso padre a una unidad (ID proceso hijo = ID padre + 1). Como el proceso padre no se puede predecir directamente, ya que este toma el valor de del siguiente identificador de proceso que este disponible, se puede concluir que no hay forma de saber los valores de los ID's de un proceso.


2) Fork() no tan simple


Compile el programa y ahora indique cuántos procesos se crearon. ¿Es igual a su respuesta anterior? Si no es, ¿por qué?
- Se crearan 9 procesos.
Al ejecutar el programa se crean 8 procesos lo cual no se nota tan facilmente a primera vista. Al principio supuse que eran 9 procesos, pues inclui en mi recuento de copias de procesos hijos al proceso padre.

Imagen de corrida del programa:

Mencione los puntos más relevantes que se encuentran en el manual de fork, que no fueron discutidos en este laboratorio.
Los puntos relevantes mencionados en el manual del fork (man fork) que no se discutieron en el laboratorio fueron los siguientes:
- El proceso hijo comienza sin señales pendientes y con la alarma de timer inactiva.
- El hijo no se podrá crear, si no hay memoria suficiente o el numero de procesos en ejecución sea excedido al limite permitido.
- El proceso hijo tiene una copia de los descriptores del padre, los cuales tienen una referencia a la misma descripción del archivo abierto por el padre.

Modifique el programa para se creen tres copias únicamente.
Para crear tres copias de proceso solo elimine un fork(), lo que muestro a continuacion:


Imagen de corrida del programa:


3) Fork() más complicado


Explique el funcionamiento del programa “gnarls”.
- Cuando se ejecuta el system call fork() y se crean los procesos padre e hijo, y luego de esto el proceso hijo comienza a ejecutar el procedimiento "ChildProcess()" y el padre comienza a ejecutar el procedimiento "ParentProcess()"; ambos de manera individual.

Explique la salida que obtuvo del programa “gnarls”, ¿qué muestra?
- Al ejecutar el programa "gnarls" se observa en pantalla una serie de impresiones realisasdas po los procesos "ParentProcess()" y "ChildProcess()", ejecutados por el padre y el hijo respectivamente. Estas impresiones me indican cuando se esta ejecutando el hijo y cuando el padre.

Imagen de corridal del programa:

Explique si después de ejecutar el programa “gnarls” 20 veces, considera que el manejo del procesador es justo o injusto.
- A mi parecer, es justa la ejecion del programa “gnarls” a las 20 veces, pues la reparticion de tiempos entre los dos procesos es vastante similar.

1 Comments:

  • me parece quue con los tres fork se crean siete procesos (sin incluir padre) no 8.

    By Blogger Aklla, at 5:01 AM  

Post a Comment

Links to this post:

Create a Link

<< Home