Procesos infinitos

Como hacer que infinitos procesos entren a estructura que esta necesita crecer para poder recibirlos y a la vez enviarlos a procesadores para ser atendidos no se como abordarlo

1 Respuesta

Respuesta
1
En que programas ? en C++  ? puedes utilizar una lista de tipo List (http://www.cplusplus.com/reference/stl/list/)
Cuando un recibes un proceso, lo añades a la lista. Si la lista esta llena, la haces crecer (hay un método para hacerlo) o bloqueas el proceso hasta que de nuevo haya memoria libre
Por el otro lado, los procesores escogen procesos de tu lista.
No te olvides proteger tu lista con un semáforo para que no pase cosas raras.
Te recomiendo detallar más tus preguntas para que mis respuestas sean más precisas.
Estoy completamente de acuerdo con el uso de la lista y que a medida que lleguen procesos entren a la estructura, ¿pero quiénes vendrían a representar los procesadores? Para se ejecute los procesos y ademas cada proceso se ejecuta consecutivamente a partir de 1 y tienen una identificación numérica, y y cada proceso se ejecutara entre 1 y 10 pasos de tiempo fijados aleatoriamente al llegar el proceso, cada procesador ejecuta un proceso durante una cuota máxima de 10 pasos de tiempo, al cumplirse una simulación de 1000 pasos de tiempo se debe generar una estadísticas
Es que no se lo que quieres simular... Si realmente te interesa ver como se reparten el trabajo varios procesadores VIRTUALES necesitas crear una clase Scheduler que se encargara de distribuir el trabajo a los procesadores. Esta distribución tomara en cuenta los parámetros de los procesos que nombraste así como el estado (numero de veces que se ejecuto y lo que queda de trabajo por hacer). Esta clase tendrá una lista de procesadores y ira dándoles trabajo.
¿Cómo se puede arrancar un procesador? Pues realmente lo único que vas a hacer es implementar en cada Proceso un método start y un método stop que permite arrancar y detener el trabajo. Los procesadores de la clase scheduler también implementan este método. Cuando el Scheduler da trabajo al procesador, lo único que hace es darle una referencia al thread que tiene que ejecutar (el proceso) y llamar al método start del procesador. A su vez el procesador llamar al start del proceso. Lo mismo con el método stop.
Esta clase Scheduler definirá el "cuanta de tiempo" (la unidad de tiempo) pueden ser tiempo o ciclos de reloj de la CPU ( o lo que te mola más).
Cuanto a las estadísticas, es suficiente que cada proceso tenga un método que indica el porcentaje del trabajo hecho. Cada vez que el scheduler cambia de estado un proceso (de Idle a Running o al revés ), lee este indicador y lo almacena para poder al final de la ejecución darte una idea del trabajo hecho.
Deberías leer sobre arquitectura de procesadores, lo que tienes que hacer es reproducir en software lo que hace realmente un procesador.
Suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas