pdfposix

Páginas: 5 (1193 palabras) Publicado: 2 de diciembre de 2015
Rosa Maria Maldonado Peña

TRABAJO PRACTICO
PROCESOS POSIX
CREACIÓN DE PROCESOS MEDIANTE FORK
1. Compile el programa anterior mediante el mandato gcc.
$ gcc –Wall -o forkprog forkprog.c

2. Ejecute el programa forkprog en segundo plano (o background). Para ello, se debe añadir
al nombre del programa el carácter & (ampersand). $ forkprog &

C UESTIONES :
1.a) Anote el valor mostrado por el shellinmediatamente después de lanzar al proceso en
segundo plano e indique qué representa dicho valor
R/ [1] 3619 el padre que es el punto de origen.
1.b) ¿Cuáles son los PID de los procesos padre e hijo?

Rosa Maria Maldonado Peña

R/ Soy el padre, mi PID es 3619 y el PID de mi hijo es 3621
1.c) ¿Qué tamaño de memoria ocupan los procesos padre e hijo ?
padre =1056 sz
Hijo = 1056 sz
d) ¿Qué realiza lafunción sleep? ¿Qué proceso concluye antes su ejecución?
Él es sleep deja el proceso que se estaba ejecutando mientras da paso al siguiente proceso,
Al terminar el sleep los procesos se finalizan
e) ¿Qué ocurre cuando la llamada al sistema fork devuelve un valor negativo?
No se puede crear el proceso hijo
1.f) ¿Cuál es la primera instrucción que ejecuta el proceso hijo?
La primera instrucción queejecuta el proceso hijo es la impresión
1. g) Modifique el código del programa para asegurar que el proceso padre imprime su
mensaje de
Presentación (“Soy el proceso...”) antes que el hijo imprima el suyo

Se modifican el tiempo en los sleep
h) Modifique el código fuente del programa declarando una variable entera llamada varfork
e inicializándola a 10. Dicha variable deberá incrementarse 10veces en el padre y de 10 en
10. Mientras que el hijo la incrementará 10 veces de 1 en 1. Anote el valor final de la
variable varfork para el padre y para el hijo. Proceso padre varfork= Proceso hijo varfork=

Rosa Maria Maldonado Peña

Proceso padre varfork= 110
Proceso hijo varfork= 20

INICIACIÓN DE PROGRAMAS MEDIANTE EXEC
TRABAJO PRÁCTICO :
Compile los programas prog1.c y prog2.c mediante elmandato gcc.
$ gcc –Wall -o prog1 prog1.c
$ gcc –Wall -o prog2 prog2.c
(Nota: En el caso de prog2.c, la compilación ocasiona un aviso (warning), que no es
significativo y puede ignorarse).

Rosa Maria Maldonado Peña

Ejecute el programa en background (añadiendo '&') para poder verificar su ejecución con la
orden ps. La forma de invocar al programa prog1 es la siguiente:
$ prog1 arg1 arg2 ... argN &Para observar cuánta memoria ocupa cada programa, realice un “ps –l” una vez el proceso
ha escrito en pantalla el mensaje correspondiente (hay 10 segundos de plazo antes de realizar
el execv en prog1 y antes de terminar en prog2).

Rosa Maria Maldonado Peña

CUESTIONES
a) Escriba el contenido de los elementos del vector argv que recibe prog1 y los que recibe
prog2.
Prog1
argv[1] : 1
argv[2] : 2argv[3] : 3
argv[4] : 4
prog2
argv[1] : 1
argv[2] : 2
argv[3] : 3
argv[4] : 4
b) ¿Qué PID tiene el proceso que ejecuta prog1.c? ¿Y el de prog2.c?
El PID del prog1 es 5357 y el PID del prog2 es 5358
c) ¿Qué tamaño de memoria ocupa el proceso, según ejecute prog1 o prog2?
Prog1 1056 sz
prog2 3950 sz
d) Modifique el programa prog1.c para introducir código inalcanzable (p.e. printf(“Hola\n”);)
ycompruebe que efectivamente no se alcanza. ¿La última línea de prog1.c (la que dice
exit(0);), puede llegar a ejecutarse alguna vez?

VISIBILIDAD DE RECURSOS ENTRE PROCESOS
ZONAS DE DATOS ENTRE PROCESOS RELACIONADOS POR UNA LLAMADA
FORK
En el programa anterior (cuyo código fuente es forkprog2.c), el proceso padre visualiza los
sucesivos
valores impares que toma su variable i privada, mientras el procesohijo visualiza los
sucesivos valores
pares que toma su variable i privada y diferente a la del proceso padre.
Para ejecutar este programa, es preciso compilarlo y usar su nombre, forkprog2:
$ gcc –Wall –o forkprog2 forkprog2.c
$ forkprog2

Rosa Maria Maldonado Peña

CUESTIONES:
3.a) ¿Las variables enteras i y j del proceso padre son las mismas que las del proceso hijo?
No, las variables i y j...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS