Buenos días, escribo para hacer una consulta respecto de una parte de la resolución de este ejercicio planteada en el video correspondiente de openfing. En la parte 2)e)a) del práctico, se pide calcular la cantidad de tablas de 2do y 3er nivel necesarias, llegando a que se necesitan 3 tablas de 3er nivel. Sin embargo, cuando hay que determinar las de 2do nivel, no me queda claro por qué se necesitan 2. No podrían direccionarse las 3 tablas de 3er nivel con una de 2do nivel? Muchas gracias y saludos.
No miré el video pero supongo que parte de la memoria es el stack que siempre va al final de la misma por lo que va a estar direccionado por otra tabla de segundo nivel aunque tengas espacio libre en la primera.
Saludos
Hola. También menciona que para el código + datos globales (2^31 B) se ocupan todos los índices de una tabla de 3er nivel y luego solo el primer índice de la segunda tabla de 3er nivel. Pero no debería ocuparse todos los índices de la segunda tabla también? ya que con la primer tabla de 3er nivel guardo 2^30B, entonces aún me quedan 2^31 - 2^30 = 2^30 B por guardar, lo cual ocuparía todas las entradas de la segunda tabla de 3er nivel.
En respuesta a Nicolas Grosso San Roman
Re: Duda Ejercicio 2- Práctico 8
Me sumo a la consulta del compañero.
En respuesta a Nicolas Grosso San Roman
Re: Duda Ejercicio 2- Práctico 8
Hola! dos (o tres) cosas respecto esto:
1) podes ver la solución explicada a este ejercicio en el pdf publicado en la sección del práctico (que capaz está más claro)
2) Es verdad que en cuanto a cantidad de entradas de 3er nivel si se dice eso en el video no es correcto. Se precisan 2^10 páginas, por lo tanto necesito 2^10 entradas de tablas de 3er nivel que apunten al los frames. Las tablas de 3er nivel tienen 2^9 entradas, por lo tanto, con una entrada no alcanza. Dado que 2^10 es 2x2^9 con dos tablas de tercer nivel es suficiente (pero completas). Luego, para apuntar a estas dos tablas de 3er nivel solo necesito dos entradas de 2do, así que con una tabla de 2do nivel para esto es suficiente.
3) Aclarando la pregunta original, es como dice Jorge. Si se fijan en las ppts la memoria virtual está dividida, y se pone código, datos y heap "arriba" y el stack "abajo". Como el heap crece hacia direcciones más bajas y el stack hacia las más altas, si los consideran en una sola bolsa para sus cuentas, van a limitar el espacio de memoria utilizable (lo cual no es correcto). Por esto es que se separan los cálculos, de manera de ubicar en la tabla de primer nivel la o las entradas al stack abajo, y la o las entradas de primer nivel para código, datos y heap arriba. Espero que haya quedado más claro.
Saludos
1) podes ver la solución explicada a este ejercicio en el pdf publicado en la sección del práctico (que capaz está más claro)
2) Es verdad que en cuanto a cantidad de entradas de 3er nivel si se dice eso en el video no es correcto. Se precisan 2^10 páginas, por lo tanto necesito 2^10 entradas de tablas de 3er nivel que apunten al los frames. Las tablas de 3er nivel tienen 2^9 entradas, por lo tanto, con una entrada no alcanza. Dado que 2^10 es 2x2^9 con dos tablas de tercer nivel es suficiente (pero completas). Luego, para apuntar a estas dos tablas de 3er nivel solo necesito dos entradas de 2do, así que con una tabla de 2do nivel para esto es suficiente.
3) Aclarando la pregunta original, es como dice Jorge. Si se fijan en las ppts la memoria virtual está dividida, y se pone código, datos y heap "arriba" y el stack "abajo". Como el heap crece hacia direcciones más bajas y el stack hacia las más altas, si los consideran en una sola bolsa para sus cuentas, van a limitar el espacio de memoria utilizable (lo cual no es correcto). Por esto es que se separan los cálculos, de manera de ubicar en la tabla de primer nivel la o las entradas al stack abajo, y la o las entradas de primer nivel para código, datos y heap arriba. Espero que haya quedado más claro.
Saludos
En respuesta a Leonardo Alberro Zimmermann
Re: Duda Ejercicio 2- Práctico 8
Buenas,
Me queda una duda respecto al stack. Si el stack en el espacio de direccionamiento virtual comienza en la última dirección virtual disponible, los índices que se van a ocupar en la tabla de tercer nivel también comienzan desde el último índice (2^9-1) hasta el (2^9-1)-(2^5)? El índice ocupado en la tabla de segundo nivel que corresponde al stack, es el índice 2^9-1?
Por lo que entiendo, el stack comienza en la dirección virtual que tiene 48 bits en 1. Eso daría como resultado el último índice de cada nivel, y la última dirección de la página a la que corresponda. Es correcto esto?
Gracias de antemano
Me queda una duda respecto al stack. Si el stack en el espacio de direccionamiento virtual comienza en la última dirección virtual disponible, los índices que se van a ocupar en la tabla de tercer nivel también comienzan desde el último índice (2^9-1) hasta el (2^9-1)-(2^5)? El índice ocupado en la tabla de segundo nivel que corresponde al stack, es el índice 2^9-1?
Por lo que entiendo, el stack comienza en la dirección virtual que tiene 48 bits en 1. Eso daría como resultado el último índice de cada nivel, y la última dirección de la página a la que corresponda. Es correcto esto?
Gracias de antemano