Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CUI: 20190620
Arequipa - Perú
2021
1. Analice el siguiente código y de una interpretación del resultado obtenido.
Resultado:
Análisis:
getpid() devuelve el id del proceso que se llama, en este caso se ejecuta el proceso 3831
Resultado:
Se crea un proceso hijo con pid 12640 y un proceso padre con pid=0, ambos con valor 5,
dentro del proceso hijo el valor es 20, pero para el padre sigue siendo 5.
3. En el siguiente código, detalle qué parte del código es ejecutada por el proceso padre y que
porción del código es ejecutada por el proceso hijo. Describa la actividad de cada uno.
Resultado:
Se crea el proceso hijo que es 3598, con un proceso padre = 0, en el cual se ejecuta la orden ls.
4. Analice el siguiente código, explique cómo se da el flujo del código desde el proceso padre y
como procede con los procesos hijos.
Resultado:
Análisis:
Al crear un proceso se crea al padre, dentro del cual se presenta al primer hijo y se crea al
segundo, luego llama al primer hijo y después al segundo, el cual ejecuta la orden ls
Resultado:
Modificación de código:
Análisis:
Se crea 3 procesos hijo, la función main termina de ejecutarse al 3er fork, sin embargo los
procesos siguen ejecutándose debido a que no hay algo que lo finalice.
6. Los siguientes códigos muestran un ejemplo del problema del productor-consumidor, donde
un proceso se encarga de generar información, mientras que el segundo lo lee de la memoria.
Ambos códigos utilizan funciones del API POXIS con memoria compartida. Analice el
código y detalle las funciones que permiten compartir memoria entre procesos. (Para poder
compilar el código, agregue -lrt a gcc, y ejecute los códigos ”./productor && ./consumidor”)
Resultado:
Análisis:
Producer construye el objeto de memoria compartida con la función “shm open()”, también
configura el tamaño de la memoria compartida con “ftruncate()” y escribe en la memoria
compartida usando sprintf() y strlen().
Consumer lee la memoria compartida con print(), así mismo elimina con sh unlink()