Sei sulla pagina 1di 2

Actividad 3: Práctica de Programacíón Multiproceso.

1. PROGRAMA 1​: realiza un programa en java (​busca_primos​) que muestre por


pantalla:
a. los números primos menores o iguales que un número dado por línea de
comando;
b. el total de números primos hallados;
c. el tiempo de ejecución empleado (mediante código java).
Ejemplo: shell>java -jar busca_primos.jar 14
- Números primos menores o iguales que 14: 13, 11, 7, 5, 3, 2, 1.
- Total de primos: 7
- Tiempo empleado: X minutos Y segundos Z milésimas

2. ESTUDIO I​:
a. Durante su ejecución, abre el shell de linux, y con los siguientes comandos
obtén todos los detalles posibles de tu programa:
i. ps -f
ii. ps -AF
b. Cronometra el tiempo que tarda tu programa en ejecutarse mediante el
sistema operativo. Compara los resultados. ¿Hay diferencias notables?

3. PROGRAMA 2​: implementa una variante del programa1 (​busca_primos_2proc​),


de forma que cree 2 procesos:
a. el primero proceso comprueba los números desde 1 hasta N/2
b. el segundo proceso comprueba los números desde N/2+1 hasta N

4. ESTUDIO II:
a. Vuelve a emplear ‘ps’ para recoger información de tus procesos, y el
comando del sistema operativo para medir los tiempos de ejecución.
b. Observa los tiempos de ejecución del PROGRAMA 1 y PROGRAMA 2 para
números pequeños, grandes y muy grandes ¿qué programa es más
eficiente?

5. PROGRAMA 3​: desarrolla un programa adicional (​busca_primos_Nproc​)que


tome el número de procesos por línea de comando.
Ejemplo: shell>java -jar busca_primos_Nproc.jar 121 4
- buscaría todos los primos menores que 121
- emplearía 4 procesos para realizar el trabajo, dividiendo la tarea en 4
segmentos de números.
- el nº de procesos no podrá superar el nº a estudiar. Es decir, si nos piden
buscar los números primo inferiores a 14 empleando 20 hilos, emplearíamos
únicamente 14 hilos.

6. ESTUDIO III​:
- lanza el vuelve a emplear “ps” y el comando para medir tiempos de ejecución
desde el SO, y observar el despliegue de los procesos, sus PID, su uso de
memoria y de CPU.
8. ​PROGRAMA 4​: elabora un último programa (​profiler​) que realice un estudio
extenso del PROGRAMA 3 midiendo los tiempos de ejecución para distintas entradas. El
estudio se hará de la siguiente forma:
- números a estudiar: las primeras 15 potencias de 10: 10, 10², 10³, … 10¹⁵
- números de procesos: primeros 20 números (1, 2… 20)
- el programa almacenará en un archivo de valores separados por comas (.csv) una
tabla con esta estructura:
- 21 Columnas: número a estudiar; T 1 proceso; T 2 procesos; … T 20
procesos.
- 15 Filas que recogerán, para cada número a estudiar (10, 100…) el tiempo
que tarda el programa en realizar su trabajo, repartiéndolo entre el número
específico de procesos.

9. ​REFLEXIÓN:​ Abre el archivo .csv con un programa de hojas de cálculo, representa


una gráfica con todos los datos recogidos por el programa 4 (profiler), y escribe una
reflexión sobre el estudio realizado.
- Óptimo número de procesos para números pequeños, medianos, grandes y muy
grandes
- Reflexión e hipótesis sobre el por qué de dichos óptimos.
- Posibles diferencias en los tiempos de ejecución registrados desde código y desde
el SO.
- ¿Cuáles serían las configuraciones más eficientes en términos de memoria?

10. ​OPCIONAL:
- Abre desde java el programa de hoja cálculo con el archivo -csv generado.
- Guarda todos los números primos encontrados en un mismo archivo.
- Muestra en pantalla el total acumulado por cada proceso-trabajador.
- Representa la gráfica directamente desde java en el programa ​profiler.​
- Representa la gráfica en tiempo real, a medida que avanza la recogida de datos.

Potrebbero piacerti anche