Pascal/Turbo Pascal - Tiempos de espera y de ejecudion

 
Vista:

Tiempos de espera y de ejecudion

Publicado por eltiolopez (3 intervenciones) el 13/07/2006 19:34:52
Wenas!
Tengo un problemilla con una practica, aver si alguien me puede echar una mano:

La practica consiste en simular una cola de procesos de un ordenador. Cada cierto tiempo (aleatorio) se genera un proceso y se guarda en una cola (supongamos FIFO), que en este caso debe ser un vector 5x5. Cada proceso tiene una prioridad y un tiempo de ejecucion, aleatorios los dos.

Mi problema esta en que no se como hacer que el programa "espere" el tiempo que tarda en ejecutarse cada proceso, pudiendose generar otro proceso mientras, y de como se interrumpe dicha ejecucion si entra otro poroceso con mayor prioridad.

Espero que entendais el enunciado. Nos vemos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Tiempos de espera y de ejecudion

Publicado por Diego Romero (996 intervenciones) el 15/07/2006 07:14:25
¿Bajo qué plataforma debe simularse esto?, ¿qué compilador usarás?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tiempos de espera y de ejecudion

Publicado por eltiolopez (3 intervenciones) el 16/07/2006 23:48:38
Es una practica en free pascal, simplemente se tiene que mostrar por pantalla el proceso que se crea y se ejecuta en cada momento, y la cola.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tiempos de espera y de ejecudion

Publicado por Leandro (5 intervenciones) el 28/07/2006 21:14:16
Buenas,
me parece que lo que deberias de implementar seria una cola de prioridad (priority queue) y no una cola simple (lifo).
Hay diferentes formas de implementar una cola de prioridad, ya sea esta acotada o no.
Una forma simple seria una lista ordenada por prioridad, en donde la prioridad puede ser un numero natural, y entonces la cola de prioridad queda ordenada de acuerdo es este campo.
puedes pensar la cola de prioridad como el primero apuntado por la lista es el de mayor prioridad.
Hay diversas formas de implementar una Priority Queue.
Nose por que queres implementarlo como una matriz de 5x5
ya que si debes de implementarla acotada me parece que lo mejor seria a traves de un "binary heap ", el mismo es un arbol binario que tiene dos propiedades:
1- el arbol es lleno con excepcion del ultimo nivel
2- para cada nodo X, sus hijos tienen prioridades mayores o iguales a la de el

Esto se puede representar de forma acotada como un arreglo con tope en donde el tope seria la ultima celda ocupada en el array.

Dado un elemento i, sus hijos estan el las posiciones 2*i (hijo izq) y 2*i+1(hijo der).
Ademas el padre del nodo de las posicion i se encuentra en la posicion i Div 2.

entonces quedaria mas o menos asi:

Type
PQueue =pointer to ArrTope;
nodo = record
prioridad: integer (serias los enteros mayores o iguales a 0)
elem: <*algun tipo *>
end;
ArrTope= record
celdas: array[1..5] of nodo;
tope: 0..5
end;

si tope= 0 el array no tiene elementos
si tope= 5 el array esta lleno y por lo tanto cuando ingreses un elemento a la cola debes de borrar el elemento mas viejo.
y cuando quieras eliminar un elem del array le restas 1 al tope o si ingresas le sumas 1.

espero haberte ayudado en algo
Saludos,
Leandro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar