Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Rodrigo Vergara So Lab3

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 4

Rodrigo Benjamín Vergara

Resolución del Laboratorio:

Número de Lab.: 3
Nombre completo: Rodrigo Benjamín Vergara
Fecha: 24/01/2024
Grupo: A
Sección: A

1. Cree un archivo .c de subprocesos con el siguiente código.


Descargué Visual Studio Code para manejar el código, ya que me siento más
cómodo con ese editor.

2. Investigue cómo crear, compilar y ejecutar un programa C en Ubuntu usando la


terminal.

Investigando en internet pude encontrar los siguientes procedimientos para


crear, compilar y ejecutar un programa C en Ubuntu con la terminal.
Instalar el compilador GCC (GNU Compiler Collection) ejecutando el siguiente
comando en la terminal:
Rodrigo Benjamín Vergara

sudo apt-get update / sudo apt-get install build-essential

• Crear el código con un editor de texto (por ejemplo: nano o vim)


• Se usa gcc para compilar el programa y crear un ejecutable
por ejemplo : gcc mi_programa.c -o mi_programa

• Ejecutar el programa con: ./mi_programa


Rodrigo Benjamín Vergara

3. Compile y ejecute el programa y trate de entender lo que hace. Cambie


las líneas recomendadas (según algunos comentarios después de "//") y
vea qué sucede.
Comenté el código tal y como lo pedía el comentario y obtuve que el programa
funciona distinto, ya que imprime todos los números y no solo los impares.

4. Investigue qué hacen los siguientes comandos (https://vitux.com/fork-


exec-wait-and-exit-system-call-explained-in-linux/):
Rodrigo Benjamín Vergara

• fork(): El sistema de llamadas al sistema fork() en Linux crea un nuevo


proceso duplicando el proceso existente, al cual se le llama proceso hijo.
Ambos procesos, el padre y el hijo, comparten el mismo código, datos y
descriptores de archivos, pero tienen distintos identificadores de
proceso (PID). Después de la llamada a fork(), el proceso hijo
generalmente ejecuta otro programa utilizando exec(). El proceso padre
puede continuar su ejecución o esperar a que el proceso hijo termine.
• exec(): El sistema de llamadas al sistema exec() en Linux se utiliza para
reemplazar la imagen de un proceso con una nueva imagen de
programa. Después de un fork(), un proceso hijo a menudo utiliza exec()
para cargar un nuevo programa en su espacio de direcciones de
memoria, reemplazando así la imagen del proceso hijo con la del nuevo
programa. Esto permite al proceso hijo ejecutar un programa diferente
al del proceso padre.
• chrt (relacionado con process scheduling): El comando chrt en Linux se
utiliza para establecer o mostrar la política y la prioridad de planificación
de un proceso en tiempo real. Puede utilizarse para ajustar la prioridad
de un proceso para la planificación en tiempo real. Las opciones
comunes incluyen SCHED_FIFO (FIFO) y SCHED_RR (Round Robin) para
tareas en tiempo real. Ejemplo de uso: chrt -f -p 10 <comando>
establece la prioridad del proceso (identificado por <comando>) en 10
con la política FIFO.

Conclusiones:

Realicé un laboratorio en el que creé, compilé y ejecuté un programa en C en


Ubuntu usando Visual Studio Code. También investigué y entendí los
comandos fork(), exec(), y chrt en Linux.
En el programa, modifiqué el código para observar cómo afectaba el resultado.
Comenté el código según las instrucciones, lo que cambió el comportamiento
del programa.
En resumen, aprendí a trabajar con programas en C, a entender conceptos
clave como fork() y exec(), y a ajustar la prioridad de planificación con chrt.
Estas habilidades son útiles tanto para la universidad como para futuras
aplicaciones prácticas en programación y sistemas operativos.

También podría gustarte