0% encontró este documento útil (0 votos)
44 vistas13 páginas

Ejercicios de Laboratorio en Sistemas Operativos

El documento detalla ejercicios prácticos sobre sistemas operativos, enfocándose en la creación y manejo de procesos mediante funciones como getpid(), fork() y execlp(). Se analizan ejemplos de código que ilustran el comportamiento de procesos padre e hijo, así como la implementación de memoria compartida en un problema de productor-consumidor. Además, se incluye un cuestionario sobre comandos de Linux para visualizar procesos en ejecución.

Cargado por

marco
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
44 vistas13 páginas

Ejercicios de Laboratorio en Sistemas Operativos

El documento detalla ejercicios prácticos sobre sistemas operativos, enfocándose en la creación y manejo de procesos mediante funciones como getpid(), fork() y execlp(). Se analizan ejemplos de código que ilustran el comportamiento de procesos padre e hijo, así como la implementación de memoria compartida en un problema de productor-consumidor. Además, se incluye un cuestionario sobre comandos de Linux para visualizar procesos en ejecución.

Cargado por

marco
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

También podría gustarte