Closed jfloresmaquera closed 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.-
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:
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.-
Perfectirijillo, el 1. nos saco la duda y el 2. queriamos confirmar por las dudas para estar 100% seguros je.
Muchas gracias!
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?
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
Buenísimo, nos quedó más claro. Gracias!
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:
Queria saber si estos pasos que estamos siguiendo son los correctos.