Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Estrategias asignacion particion e instruccion readMem/writeMem en memoria #4354

Closed
1 task done
Ranico1 opened this issue Oct 18, 2024 · 6 comments
Closed
1 task done

Comments

@Ranico1
Copy link

Ranico1 commented Oct 18, 2024

🛠️ Lenguaje

Go

🖋️ Descripción

Buenos dias!
Teniamos las siguientes tres dudas con respecto a lo enunciado en el titulo.
La primera es referida a si debemos implementar las tres estrategias de asignacion de particion en memoria (best fit, worst fit y first fit) y que lo determine el archivo de configuracion o si debemos elegir solamente una e implementarla.
La segunda y tercera son en cuanto a la instruccion readMem y writeMem.
En un principio tenemos la duda de si no se pueden leer los 4 bytes que pide el enunciado por un tema de limite, se deben leer los que se puedan o se debe negar la lectura/escritura.
Finalmente, CPU a la hora de hacer el pedido de lectura/escritura ¿puede pasarle el PID del proceso que esta en ejecucion para saber el limite de la particion que le corresponde a dicho PID y ver si puede leer/escribir normalmente o va a estar condicionado por el limite de la particion?
Desde ya muchas gracias y buen fin de semana.

📔 Citas del enunciado/videos

No response

💭 Soluciones posibles

No response

📝 Normas del foro

  • Leí los lineamientos del foro
@LeandroCarbajales
Copy link
Contributor

Buenas!

La primera es referida a si debemos implementar las tres estrategias de asignacion de particion en memoria (best fit, worst fit y first fit) y que lo determine el archivo de configuracion o si debemos elegir solamente una e implementarla.

Tienen que implementar las tres estrategias y luego utilizar la que determine el archivo de configuración, una prueba por ejemplo puede implicar correr los mismos procesos con cada una de las estrategias para corroborar y comparar los resultados entre ellas.

En un principio tenemos la duda de si no se pueden leer los 4 bytes que pide el enunciado por un tema de limite, se deben leer los que se puedan o se debe negar la lectura/escritura.

Se debe negar la lectura/escritura, de lo contrario tendrías resultados no determinísticos.

Finalmente, CPU a la hora de hacer el pedido de lectura/escritura ¿puede pasarle el PID del proceso que esta en ejecucion para saber el limite de la particion que le corresponde a dicho PID y ver si puede leer/escribir normalmente o va a estar condicionado por el limite de la particion?

El límite de la partición del PID en ejecución ya lo conoce CPU ya que es parte de su contexto de ejecución (uno de sus registros), por lo que la misma CPU ya corrobora no pasarse de la partición en la etapa de traducción de direcciones como está especificada en el enunciado. Por lo que la Memoria no necesita hacer ese chequeo en ese momento, se podría decir que ya lo hizo cuando le asignó la partición al PID :)

Te aclara las dudas?
Saludos!
Lean

@Ranico1
Copy link
Author

Ranico1 commented Oct 19, 2024

Muchas gracias por la respuesta, se entendio todo.
Una consulta final, a la hora de hacer la compactacion de la memoria en la que se va a hacer una nueva particion con el tamaño de los espacios vacios se va a producir un cambio en la base y el limite de los procesos que estaban en memoria de usuario, no porque varie su tamaño sino por el reacomodamiento de las particiones, por lo que se nos ocurrio que si un proceso escribio previo a dicha compactacion en su respectivo espacio de memoria y post compactacion un proceso (debido a estas modificaciones en la base y el limite) lee o escribe en dicho espacio que ahora le pertenece habria un problema de que esta leyendo lo de otro proceso.
Saludos.

@RaniAgus
Copy link
Contributor

¡Buenas! Recuerden que en la compactación, además de modificar la base de los procesos, van a tener que mover el contenido de la partición para que encaje dentro de la nueva base. Esto permite que lo que el proceso haya escrito en cierta dirección lógica permanezca en la misma dirección lógica, incluso a pesar de que la física haya cambiado por la compactación.

Dicho esto, sí, los espacios libres van a quedar con datos "basura" de algún proceso que estuvo ahí. Lo mismo ocurre cuando un proceso llega a EXIT y se libera su espacio: el mismo se marca como libre y ya.

Saludos

@Ranico1
Copy link
Author

Ranico1 commented Oct 21, 2024

Para terminar de entender, con mover el contenido de la particion haces referencia a lo que se encontraba escrito en el array de bytes correspondiente a la particion moverlo a su nueva base?

@iago64
Copy link
Contributor

iago64 commented Oct 21, 2024

Para terminar de entender, con mover el contenido de la particion haces referencia a lo que se encontraba escrito en el array de bytes correspondiente a la particion moverlo a su nueva base?

Exacto, si no, perderías los datos y no es la idea

@Ranico1
Copy link
Author

Ranico1 commented Oct 21, 2024

Muchas gracias!

@Ranico1 Ranico1 closed this as completed Oct 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants