UNIVERSIDAD NACIONAL DE SAN
AGUSTÍN
FACULTAD DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERIA
DE SISTEMAS
CURSO: Sistemas Operativos
TEMA: Laboratorio 4
PROFESOR: Lilian Benique
ALUMNO: MARCO ANTONIO MENDOZA
RODRÍGUEZ
AREQUIPA – PERU
2021
EJERCICIOS PROPUESTOS
1. Analice el siguiente código y de una interpretación del resultado obtenido
Getpid() devuelve el identificador del proceso actual
Getppid() devuelve el identificador del proceso padre del proceso
2. El siguiente código crea un proceso hijo, realice un seguimiento de la variable
value y describa porque tiene ese comportamiento.
La función fork()crea un nuevo proceso que es una copia completa del proceso
original. El nuevo proceso tiene su propia memoria y su propia copia de todas las
variables.
En el nuevo proceso hijo, el pidvalor devuelto es cero. El hijo agrega 15 a su
variable value y sale en la línea:
El valuees 5 en el proceso original. El proceso padre original tiene pidmás de cero
y va a:
El resultado es: 5
3. En el siguiente código, detalle que 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
El programa primero crea un proceso hijo usando fork. El proceso hijo (pid = 0)
ejecuta la declaración de excelp para ejecutar el comando "ls". Cuando el proceso
hijo ejecuta la llamada al sistema execlp (), si la ejecución es exitosa, el espacio
de memoria asignado al proceso hijo es reemplazado por el proceso que se
proporciona como parámetro para la llamada al sistema execlp Si la ejecución de
la función execlp () no tiene éxito, no habrá reemplazo.
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.
El proceso padre le retornara el pid del proceso hijo, int pid=fork() crea un nuevo
proceso (hijo del que hace la llamada a fork), padre e hijo continúan la ejecución
en la instrucción inmediatamente posterior al fork.
PID=0 en el hijo
PID>0 en el padre (contiene el pid del hijo)
PID<0 si error.
5. Analice el siguiente código. ¿Cuántos procesos se generan?
El número de veces que se imprime "proceso" es igual al número de procesos
creados. Número total de procesos = 2n , donde n es el número de llamadas al
sistema .Entonces aquí n = 3, 23 = 8
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")
El productor establece un objeto de memoria compartida y escribe en la memoria
compartida, y el consumidor lee de la memoria compartida.
El productor crea un objeto de memoria compartida llamado OS y escribe la
famosa cadena "¡Hello Word!" a la memoria compartida.
El programa mapea en memoria un objeto de memoria compartida del tamaño
especificado y permite escribir en el objeto.
SHARED MAP especifica que los cambios en el objeto de memoria compartida
serán visibles para todos los procesos que comparten el objeto
Después de cada escritura, incrementa el puntero por el número de bytes escritos.
El consumidor también invoca la función shm_unlink (), que elimina el segmento
de memoria compartida después de que el consumidor accede.
CUESTIONARIO
Probar los comandos de la bibliografía 2 y 3
https://conpilar.es/15-comando-ps-de-linux-con-ejemplos/
https://vidatecno.net/la-guia-para-principiantes-de-pstree-command-en-linux/
Para ver todos los procesos en su sistema Linux
para enumerar todos los procesos en ejecución
Mostrar todos los procesos (formato BSD)
Mostrar todos los procesos que se ejecutan mediante un comando
Mostrar todos los procesos que ejecuta un usuario
Mostrar procesos por PID
Mostrar procesos por TTY
Mostrar procesos propiedad del usuario actual
Mostrar todos los procesos con una lista de formato completo
Mostrar todos los procesos con formato adicional
Mostrar todos los procesos en formato de jerarquía ASCII
Proceso de visualización en salida ampliada
Proceso de visualización de acuerdo con el formato definido por el usuario
Mostrar hilos con ID de hilo
Muestra la información sobre los hilos.
procesos consumen más RAM
Ejecutando pstree, Este comando por sí solo mostrará una lista de todos los procesos en
ejecución.
Uso de pstree con Flags, Para exponer la información de identificación del proceso,
podemos utilizar los indicadores -p, que muestran los números de identificación del
proceso, o PIDs.
También podemos ordenar los procesos por PID en lugar de por nombre con el indicador
-n.
-l que «envuelve» las líneas largas en el borde de la pantalla de su terminal.
Mostrando partes del árbol