Ejercicio 6 - Práctico 8

Ejercicio 6 - Práctico 8

de Rafael Carlos Cordano Ottati -
Número de respuestas: 4

Buenos días.

Me surgió una duda del ejercicio 6 del práctico 8.

Se especifica que por un lado se tienen direcciones de memoria virtual de 32 bits. 

Por otro lado los descriptores de página tienen solo 16 bits que usa para la dirección de la página.

Esto que significa, que las direcciones virtuales son de 32 bits y las direcciones físicas de 16 bit?

Gracias

En respuesta a Rafael Carlos Cordano Ottati

Re: Ejercicio 6 - Práctico 8

de Jorge Merlino -

A los 16 bits de la dirección del marco tenés que sumarle los 16 bits de desplazamiento dentro del mismo.

Saludos

En respuesta a Jorge Merlino

Re: Ejercicio 6 - Práctico 8

de Nicolas Aguilera Leal -
Buenas. Tengo algunas dudas de este ejercicio y del teórico en general.

Primero, respecto a la parte a): cuál es el HW involucrado en traducir la dirección virtual a la física? Lo único que se me ocurre es la CPU y la LTB. Luego, hay más HW involucrado?

Cuál es la función de la MMU cuando hay memoria virtual? Por lo que entiendo, la MMU no sería necesaria para verificar que una dirección lógica generada sea parte de la memoria asignada al proceso, ya que las direcciones que pueda generar la CPU están limitadas a los frames que tenga en sus tablas de páginas, que las carga el SO. Si fuera así la CPU generaría direcciones físicas una vez resuelta la referencia a la tabla de páginas. Es correcto esto? O luego de que la CPU obtiene una dirección de memoria de la tabla de páginas, quedan pasos por realizar para convertirla en una dirección física?
Si lo anterior no fuera correcto, cómo se determina si un frame de memoria pertenece o no al proceso en sistemas con memoria virtual?

Luego, sobre la parte b) i): cómo se calcula el tamaño del espacio virtual del proceso? Por lo que se ve en la figura, tiene dos entradas no vacías en la tabla de primer nivel; esto quiere decir que el espacio de direccionamiento de ese proceso es de tamaño 2 * (cantidad de entradas de la tabla de segundo nivel) * (tamaño de página)? O tengo que tomar en cuenta todas las posibles direcciones virtuales que el proceso pueda generar (y en este caso sería 2^32 porque las direcciones virtuales son de 32 bits)?

Sobre la parte b) iii): Si el proceso accede a 0x02020C01, en la figura se ve que la entrada está en memoria, y que la tabla de páginas apunta al frame 0x3781. Entonces, luego de sumarle el offset, se genera la dirección 0x37810001; esta dirección, es física? O todavía resta procesamiento para convertirla en una dirección física?

Gracias de antemano
En respuesta a Nicolas Aguilera Leal

Re: Ejercicio 6 - Práctico 8

de Jorge Merlino -

El hardware involucrado en la traducción es precisamente la MMU de la cual no sabías su función. Si hay TLB esta forma parte de la MMU. La CPU no participa en esto.

Por otro lado, las direcciones que genera la CPU pueden ser cualesquiera porque responden al programa que esté ejecutando. Nadie garantiza que el programador no intente acceder a cualquier dirección. Las direcciones que generan los programas de usuario son todas virtuales y la MMU debe verificar si tienen sentido o no.

Para la pregunta b) i) tenés que ver cuantas páginas tiene asignadas el proceso y multiplicarlo por el tamaño de la página. En ese ejercicio son las entradas de las tablas de segundo nivel que no tienen 0 como dirección.

Para b) iii) la entrada 2 en las dos primeras tablas (0x0202) resulta en el marco 0xAC0F. A eso hay que sumarle el desplazamiento por lo que da 0xAC0F0C01 como dirección física (igual la letra no pide calcular la dirección física, solo decir que pasa si se accede a esa dirección virtual)

Saludos