Práctico 3 Ejercicio 13

Práctico 3 Ejercicio 13

de Enzo Fabbiani Perez -
Número de respuestas: 6

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!

En respuesta a Enzo Fabbiani Perez

Re: Práctico 3 Ejercicio 13

de Pablo Dalchiele Gonzalez -

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.

En respuesta a Pablo Dalchiele Gonzalez

Re: Práctico 3 Ejercicio 13

de Matias Rodal Medina -

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

En respuesta a Matias Rodal Medina

Re: Práctico 3 Ejercicio 13

de Diego Barreiro Indart -

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.

En respuesta a Enzo Fabbiani Perez

Re: Práctico 3 Ejercicio 13

de Pedro Liber Antonio Carrasco Aguilar -

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)