Buenas, la semana pasada se me complicó para ir al práctico y no tengo mucha idea como encarar el ejercicio.
Alguna ayuda de por donde ir?
Gracias!
Buenas, la semana pasada se me complicó para ir al práctico y no tengo mucha idea como encarar el ejercicio.
Alguna ayuda de por donde ir?
Gracias!
Construí primero un PCB (process control block), pensá que datos vas a necesitar (por ejemplo el id, la prioridad)
Después pensá que estructuras necesitarías para llevar la cola de procesos listos y bloqueados...
Pensá en el diagrama de transiciones de estados de los procesos (nuevo,listo, ejecutando, bloqueado, terminado)
Finalmente, podes usar la macro current para acceder al proceso que tiene asignado el procesador y poder preguntar if current->estado != LISTO por ejemplo.
Espero que te encamine, sino te aclaro un poco más.
Nunca debe detenerse o retrasarse la ejecución de un proceso con prioridad Q, si solo
existen en el sistema procesos con prioridad P, donde P< Q.
ahi P y Q son los numeros o las prioridades reales? porque si son los numeros no entiendo nada
Las prioridades. "Mayor prioridad" se entiende como en idioma natural, o sea algo que es más prioritario, nada más. Si lo implementás como números donde a mayor número menor prioridad, o viceversa, es otro tema.
Ok, gracias
Esto se acerca a una solucion aceptable o tendria que definir estructuras? PCB, cola, etc. en C por ej.
Implementacion:
c1=Cola CPU-bound: 0,1,2,3,4
c2=Cola I/O-bound: 5,6,7,8,9,10
p = proceso_menor_prioridad_sistema()
if ((p.state==blocked)){
//¿chequear que p no esta terminado y si lo esta sacarlo?
if (c1.size()>0)
p=proceso_mayor_prioridad(c1)
else if (c2.size()>0)
p=proceso_mayor_prioridad(c2)
}
run(p)