sisoputnfrba / foro

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

UMC sin marcos disponibles #296

Closed damianvc31 closed 8 years ago

damianvc31 commented 8 years ago

Que pasaria si quiero inicializar un programa y no tengo marcos disponibles? Segun entiendo deberia poder hacerlo igualmente ya que al iniciar no cargo ninguna pagina en la UMC.

Entonces,supongamos que mando todo a swap, pero despues quiero ejecutar una instruccion, necesito la pagina donde esta esa instruccion. No tengo marcos disponibles (o bien necesito dos paginas para esa instruccion y no tengo 2 marcos). Que deberia pasar? Como la politica de reemplazo es local, supongo que no puedo desalojar paginas de otros procesos, osea que la UMC deberia devolverle algun tipo de error al CPU, el CPU comunicarselo al nucleo y el nucleo decirle a la UMC que finalice el programa (y supongo que tambien el nucleo decirle a la consola para que muestre algun mensaje de error)

Si todo esto es asi, el unico caso donde la UMC rechaza la inicializacion de un programa nuevo sería cuando la swap no tiene espacio para guardar todas las paginas?

marcogatti commented 8 years ago

Buenas,

Exacto, tal como dice el enunciado:

En caso de que el espacio total disponible no sea suficiente, deberá rechazar el proceso, siendo su inicialización cancelada

Ademas, sobre lo que decías acá:

Entonces,supongamos que mando todo a swap, pero despues quiero ejecutar una instruccion, necesito la pagina donde esta esa instruccion. No tengo marcos disponibles (o bien necesito dos paginas para esa instruccion y no tengo 2 marcos). Que deberia pasar? Como la politica de reemplazo es local, supongo que no puedo desalojar paginas de otros procesos, osea que la UMC deberia devolverle algun tipo de error al CPU, el CPU comunicarselo al nucleo y el nucleo decirle a la UMC que finalice el programa (y supongo que tambien el nucleo decirle a la consola para que muestre algun mensaje de error)

Acordate que la UMC no conoce instrucciones, solo páginas, no sabe que hay dentro de esas páginas. Si el CPU necesita solicitar a la UMC las paginas correspondientes a una instrucción que comienza en una y termina en la otra, como te parece que se resolvería?

Saludos!

damianvc31 commented 8 years ago

En ese caso deberia traer las 2 paginas no? Igual lo que apuntaba la pregunta era mas que nada que pasa si no tengo marcos libres donde traerme las paginas que necesito, sea 1 o 2. Al no poder desalojar paginas de otros procesos, devuelvo un error para matar el programa, o que deberia pasar?

marcogatti commented 8 years ago

Es un muy buen punto el que mencionas, y como estamos hablando de uno de esos casos borde no contemplados por el enunciado, la respuesta es: resuélvanlo usando su mejor criterio, y sepan fundamentar por qué eligieron ese camino.

Se me ocurre que este puede ser un problema típico de aquellos sistemas que implementan exclusivamente reemplazo local, y justamente por este tipo de limitaciones, se me ocurre que prácticamente ningún sistema usa este esquema en forma pura. De que me sirve admitir un proceso nuevo en el sistema si no le puedo asignar un marco de memoria para que procese? O incluso, que tan eficientemente puede trabajar si le asignara 1, 2, 3, etc. frames solamente?

Seguramente en clase te habremos contado que, muchas veces, el sistema operativo usa algunas heurísticas para decidir si asignarle o no más frames a un proceso que esta generando una cierta cantidad de Page Faults. Este tipo de cosas son las que definen que tan bien funciona un sistema operativo, y, como ya te habrás imaginado, pocas veces los conceptos teóricos se encuentran perfectamente aplicados en ejemplos prácticos reales. Generalmente, lo que encontramos, son combinaciones de estos conceptos que probaron ser más eficientes bajo ciertas condiciones.

En fin, volviendo a tu pregunta, no esperamos que lo resuelvan de ninguna forma en particular. Tomen una decisión ustedes, y sepan justificarla cuando nos la cuenten :).

Saludos!

damianvc31 commented 8 years ago

Ok, veremos cuando llegue el momento como lo resolvemos

Saludos!