Vous êtes sur la page 1sur 7

Instituto tecnolgico de Tuxtla Gutirrez.

Materia:
Taller de Sistemas Operativos

Catedrtico:
Rosy Ilda Basave Torres.

Practica 4

Nombre:
Marroqun Jurez Juan Carlos

4 semestre.

Introduccin
El sistemas operativo LINUX dispone de un conjunto de llamadas al
sistema que definen una poderosa interfaz para la programacin de
aplicaciones que involucren mltiples procesos.
Entre los aspectos ms destacados de la gestin de procesos en UNIX
se encuentra la forma en que stos se crean y cmo se ejecutan
nuevos programas. Aunque se mostrarn las llamadas al sistema
correspondientes ms adelante en esta prctica, es conveniente
presentar una visin inicial conjunta que permita entender mejor la
forma en que estas llamadas se utilizan.
El kernel crea un nuevo proceso, proceso hijo, realizando una copia
(clonacin) del proceso que realiza la llamada al sistema fork (proceso
padre). As, salvo el PID y el PPID los dos procesos sern inicialmente
idnticos. De esta forma los nuevos procesos obtienen una copia de
los recursos del padre (heredan el entorno).

Desarrollo
Escribir un programa en lenguaje C que reciba un parmetro desde la
lnea de rdenes y se encargue de:
- Comprobar que la sintaxis empleada ha sido adecuada y, en caso
contrario, mostrar por pantalla cul es la correcta:
La sintaxis correcta es: dormilones nmero_hijos
En el programa que se realiz en la 5 la funcion principal no reciba
ningn argumento, para esta prctica se nos pide que reciba
argumentos para ello declaramos la funcin main de la siguiente
manera.

Con el siguiente cdigo se hace la comprobacin de que en verdad se


envan 2 argumentos (el nombre del programa y el nmero de
procesos a crear) si esto no ocurre se imprime un mensaje diciendo la
sintaxis correcta.

- Crear un nmero de procesos hijo dado por el parmetro de la lnea


de rdenes.
Convertimos el argumento que le pasamos al programa en un valor
entero para poder saber cuntos proceso hijos debemos crear
- Cada uno de los procesos hijo generar un nmero aleatorio entre 1
y 10, mostrar un mensaje indicando su pid y el tiempo que va a
dormir. A continuacin dormir ese nmero de segundos. Una vez
transcurrido este tiempo, el proceso hijo termina con una llamada a
exit tal que el proceso padre pueda conocer el tiempo que dicho hijo
ha estado durmiendo.

- El proceso padre, por su parte, esperar (wait) a que terminen todos


sus procesos hijo. A medida que vayan finalizando ir mostrando el
valor del pid de cada hijo junto con el tiempo que ha dormido.
El proceso padre se pone en espera mientras no reciba el estado de
los procesos hijo.

Por qu no se visualiza ningn mensaje si se coloca despus de la


orden execl la instruccin siguiente?
printf("PADRE: ejecucin terminada\n");
No se imprime el mensaje, porque en al ejecutarse la instruccin execl
se ejecuta un programa externo y el proceso que lo ejecuto finaliza en
ese mismo instante es por ello que no alcanza a imprimirse dicho
mensaje.

Cdigo completo del programa

Compilacin y ejecucin del programa


El programa se compilo correctamente

Ahora ejecutare el programa sin pasarle los argumentos necesarios


para ver qu sucede.

Como era de esperarse nos ha salido el mensaje dicindonos la


sintaxis correcta para ejecutar el programa.
Ahora le pasamos el parmetro que deseamos y si obtenemos el
resultado deseado.

Conclusin
En esta prctica ayuda a usar nuevas funcionalidades en la creacin
de procesos. Los cuales regulan ya sea para finalizar un proceso
usamos exit(0) pero si requerimos que cierto valor se envi antes de
finalizar completamente el proceso como fue el caso exit(estatus)
tambin se puede hacer, el argumento de exit() no est restringido
nicamente al valor cero.
De la misma manera el uso de wait es muy importante para lograr
cierto grado de sincronizacin ya que con esto podemos pausar un
proceso hasta que reciba el argumento que contenga wait.
Ahora se que los procesos se pueden controlar de cierta forma y
nosotros tener el control de las ejecuciones.