El trabajo práctico consiste en aprender a utilizar los distintos tipos de IPCs presentes en un sistema POSIX. Para ello se implementará un sistema que distribuirá el cómputo del md5 de múltiples archivos entre varios procesos.
- Contar con una version de Docker nativa
- Acceso a una terminal Linux
- Tener instalado el programa md5sum en dicha terminal
Descargar la imagen de docker
docker pull agodio/itba-so:1.0
Ubicarse en el directorio donde se descargó el proyecto. Luego, abrir una terminal y ejecutar el comando
make open_docker
Esto abrira un contenedor docker donde correra nuesto proyecto
Ubicarse en la carpeta local del proyecto con:
cd root/
Una vez dentro existen 2 maneras de ejecutar el proyecto.
Ejecutar dentro del contenedor Docker:
$ make all
#Ejemplo: ./md5 ./prueba/* | ./vista
$ ./md5 [listado de archivos] | ./vista
El resultado se podrá ver en terminal y en resultado.csv una vez finalizado el proceso.
Ejecutar dentro del contenedor Docker
make all
# Ejemplo: ./md5 ./prueba/*
./md5 [listado de archivos] &
/shm
1200
/read_semaphore
Este comando arrojará 3 valores. Colocarlos en el comando vista en el mismo orden de impresión (esto debe realizarse dentro de los 2 segundos luego de ejecutar a md5)
#A modo de ejemplo
./vista /shm 1200 /read_semaphore
Alternativamente, se puede ingresar dichos parámetros por entrada estándar
#A modo de ejemplo
./vista
/shm
1200
/read_semaphore
El resultado se podrá ver en terminal y en resultado.csv una vez finalizado el proceso.
El archivo Makefile cuenta con la posibilidad de realizar pruebas en el código fuente.
Se puede ejecutar la herramienta de testeo Valgrind mediante el comando:
make valgrind
Para poder utilizar el programa depurador PVS-Studio, primero se debe instalar. Para ello, utilizar el comando:
make install_pvs_studio
Luego, para poder utilizar el programa, todos los archivos .c deben tener en sus primeras dos lineas los siguientes comentarios:
# md5.c [Ejemplo]
// This is a personal academic project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
Una forma de agilizar esta tarea, es utilizando los siguientes comandos:
find . -name "*.c" | while read line; do sed -i '1s/^\(.*\)$/\/\/ This is a personal academic project. Dear PVS-Studio, please check it.\n\1/' "$line"; done
find . -name "*.c" | while read line; do sed -i '2s/^\(.*\)$/\/\/ PVS-Studio Static Code Analyzer for C, C++ and C#: http:\/\/www.viva64.com\n\1/' "$line"; done
Se puede ejecutar la herramienta de testeo PVS-Studio mediante el comando:
make pvs_studio
El formato de impresion de resultados respeta el formato CSV (comma-separated values)
Path del archivo , Hash MD5 , PID del proceso encargado del calculo
./tests/C.txt,d41d8cd98f00b204e9800998ecf8427e,50
./tests/A.txt,d41d8cd98f00b204e9800998ecf8427e,48
(...)