sisoputnfrba / foro

Foro de consultas para el trabajo práctico
151 stars 7 forks source link

Suspencion Proceso, Asignacion FIJA #2422

Closed jfloresmaquera closed 2 years ago

jfloresmaquera commented 3 years ago

Buenas, nos salio una duda mientras estabamos con la suspención de procesos. Si en el caso de Asignacion FIJA se quiere suspender un proceso, no solo se tienen que liberar los frames usados en RAM por el proceso y enviar a SWAP los modificados, sino que además:

  1. Tenemos que liberar los frames que fueron reservados para el proceso (basandonos en la respuesta que nos dieron en el issue #2405 ).
  2. En caso de que se solicite una pagina de este proceso suspendido, tengo que primero solicitar en RAM los frames necesarios a reservar para el mismo, ya que no tiene frames reservados asignados.

Queria saber si estos pasos que estamos siguiendo son los correctos.

iago64 commented 2 years ago

Buenas! Cómo va?

La parte copada de la suspensión es que como bien decis, vas a mandar todo a swap y despues, hasta que no lo vuelvas a ready no vas a tener mas peticiones de ese proceso ya que va a estar suspendido.

Después cuando el proceso vuelva a ready recién ahí van a tener que asignarle nuevamente los frames que le correspondan :)

Saludos.-

jfloresmaquera commented 2 years ago

Mas dudas que nos surgieron en base a lo preguntado (todo en base a la asignación FIJA).

Nosotros preguntamos esto en soporte de los sábados (tengo el recuerdo que lo charlamos con vos) y nos dieron el visto bueno que nosotros recien creamos el proceso en la RAM y SWAP cuando se pide el primer alloc. En el caso de asignacion FIJA también estariamos reservando los frames inicialmente cuando nos hacen el primer alloc.

Esto llevo a las siguientes dudas:

iago64 commented 2 years ago

Buenas! Cómo va?

1.- Si, para asignación fija vamos a hacer las cuentas para que el grado de multiprocesamiento sea acorde para que todos los procesos entren en ram sin problemas.

2.- Si, pueden tener mas procesos en swap que en ram, la joda es que esos procesos van a ser los suspendidos 😉

Saludos.-

jfloresmaquera commented 2 years ago

Perfectirijillo, el 1. nos saco la duda y el 2. queriamos confirmar por las dudas para estar 100% seguros je.

Muchas gracias!

mercedesmagnelli commented 2 years ago

Buenas! Reabro (no sé si se puede) el issue de nuestro grupo porque charlando nos surgió la duda: cuando se hace un mate_init esto genera que el proceso en cuestión ya pase a estar en memoria RAM? Es decir, se inicializarían las estructuras administrativas + una correspondiente asignación de frames en memoria?

Esto salió a colación porque leyendo nuestros apuntes, pensamos que el mate_init representaría la transición NUEVO->LISTO, ya que permite al proceso poder ejecutarse cuando sea su momento. Dado que los procesos que están en estado listo tienen que ser tenido en cuenta para el nivel de multiprocesamiento, nos gustaría saber si nuestra suposición es correcta.

Si no fuera este el caso, ¿en qué momento sería correcto generar la reserva de frames para el proceso? ¿En el momento en el que se hace un alloc?

Todo esto se puede resumir a: cuando se hace el init de un proceso, ¿este ya comienza a contar para la multiprogramación?

DISCLAIMER: todo esto en un esquema de asignación fija.

LeandroCarbajales commented 2 years ago

Buenas! En resumen, no, el mate_init representa la creación del proceso o visto de otra manera su llegada a la cola "new", la transición de "new -> ready" se hace cuando lo decida el planificador de largo plazo (cuando el grado de multiprogramación lo permita) y recién ahí es cuando necesitan reservar los marcos en memoria/swap.

A modo de ejemplo, si tienen un grado de multiprogramación de 3, tranquilamente les podrian llegar 4 o más mate_inits, pero solamente 3 de esos carpinchos pasarían a ready mientras que el resto quedaría en "new" hasta que el grado de multiprogramación lo permita, que sería cuando esos 3 vayan finalizando o se suspendan.

Espero que les aclare la duda :) Saludos! Lean

mercedesmagnelli commented 2 years ago

Buenísimo, nos quedó más claro. Gracias!