IIC2333 / foro-2019-1

Foro oficial del curso IIC2333 - Sistemas Operativos y Redes, semestre 2019-1.
2 stars 0 forks source link

Manejo de interrupciones #10

Closed pnheinsohn closed 5 years ago

pnheinsohn commented 5 years ago

Tengo una duda respecto a esto:

Sea el siguiente escenario: P1 con actual A = 5 (demora 5 en completar dicha ráfaga) P2 con actual B = 1 - A = 2 (demora 1 en estar ready) Quantum = 3

Lo que pasaría sería mas o menos lo siguiente?

t=0: 5 -> 4 t=1: 4 -> 3 | P2 pasa a ready t=2: 3 -> 2 t=3=Quantum: P1 se mantiene en 2 (running -> ready) y entra P2 para pasar de 2 -> 1

Al final, lo que quiero saber es que si se interrumpe una ráfaga, entonces esa ¿No disminuye mientras que entra la que sigue y si lo hace?

pd: Lamento la forma de expresarme jajajaja pero me parecía la manera más fácil. pd2: editado en base al comentario

Geeermy commented 5 years ago

¡Hola! La verdad me la dejaste difícil con la explicación, pero ya caché jeje.

Sí, está bien. Si no hicieras eso, tu simulación nunca terminaría porque los procesos nunca podrían pasar a FINISHED al no poder finalizar sus ráfagas.

Una pequeña corrección a tu ejemplo: P1 se mantendría en A = 2, no en A = 3. :-)

pnheinsohn commented 5 years ago

Ah! jajajaj cierto, me traspapelé.

Muchas Gracias!

Geeermy commented 5 years ago

Ojo con una última cosa: si P1 ejecuta una ráfaga en la CPU y lo interrumpen, el proceso que entra después (P2), ejecuta en la CPU en la siguiente iteración, no dentro de la misma jeje. Me parece que ya lo manejas, pero prefiero explicitarlo.

pnheinsohn commented 5 years ago

Espera ahi me compliqué, ¿Si en t=3 P1 es interrumpido, entonces ejecuta una vez más su ráfaga y en la próxima iteración entra P2 para ejecutar la suya?

Geeermy commented 5 years ago

Mejor vamos a hacer esto de forma ordenada:

P1 tiene Ai = 5 mientras que P2 tiene Bi = 2. Asumamos que partimos en t = 3.

Esto lo puedes ver de dos formas.

Forma 1

[t=3] P1 ejecuta. Ai = 4. P2 espera. Bi = 1 [t=4] P1 ejecuta. Ai = 3. P2 espera. Bi = 0. Pasa a estado READY. [t=5] P1 ejecuta. Ai = 2. Cumple su quantum, es interrumpido. [t=6] P2 entra a la CPU por prioridad. Empieza a ejecutar.

Forma 2

[t=3] P1 ejecuta. Ai = 4. P2 espera. Bi = 1 [t=4] P1 ejecuta. Ai = 3. P2 espera. Bi = 0. Pasa a estado READY. [t=5] P1 ejecuta. Ai = 2. Cumple su quantum, es interrumpido. P2 entra a la CPU por prioridad. [t=6] P2 ejecuta.

Ambas son válidas, pero comparten una característica en común: en ninguno de los casos se corre en la CPU más de una vez dentro de una iteración.

¡Dime si con ese esquema te queda más claro!

pnheinsohn commented 5 years ago

perfeeecto! Muchas gracias :)