Realice un programa que, dado una cantidad de procesos (no mayor que 10) que tienen determinadas tareas que consumen recursos, simule la asignación de éstos automáticamente a los núcleos de un procesador Quad-Core (de cuatro núcleos), para que éstas se vayan realizando a través del tiempo lo más eficientemente posible, tratando de evitar tiempos de trabajo nulo en los distintos núcleos del procesador.
Cada proceso tiene una cantidad específica de tareas (cálculos) qué realizar (un máximo de 10 tareas por proceso), cada una de las cuales tiene una duración (en segundos representados por números enteros), las cuales están en un orden en específico, por cada proceso.
Los primeros dos núcleos del procesador pueden realizar tareas que consuman un máximo de 5 segundos, mientras que los otros dos núcleos pueden realizar tareas de cualquier nivel. La suma de los tiempos de las tareas no sobrepasará los 60 segundos para cada proceso.
Para realizar esta simulación, realice una gráfica en la que se muestre por separado cada núcleo del procesador, con las tareas que les han sido asignadas en los momentos que ha determinado la aplicación. Auxíliese de colores y caracteres especiales para diferenciar las tareas que sean de un proceso o de otro.
Ejemplo: Asignación automática de procesos.
Especifique la cantidad de procesos que se desean simular: 5 Digite los tiempos de las tareas de los siguientes procesos, separándolos por comas. (Un máximo de 10 tareas por proceso). Proceso no. 1: 5, 10, 8, 3 Proceso no. 2: 4, 5, 7 Proceso no. 3: 9, 1, 2 Proceso no. 4: 5, 2 Proceso no. 5: 10
Gráfica de las cargas de procesamiento de cada núcleo del procesador:
N. Cargas de Procesamiento == ============ 1: 0 0 0 0 0 1 1 x x 1 2 2 x x x x x x x x x x x 3 3 3 2: 0 0 0 0 1 1 1 1 1 x x x x x x x x x x x x x x x x x 3: 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 x x x 4: 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 20 0 0 0 0 0 0 0 0 0