memory - sistemas - memoria virtual recomendada para 4gb ram windows 10
Determine el tamaño de la tabla de páginas para la memoria virtual (3)
Considere un sistema de memoria virtual con una dirección de byte virtual de 38 bits, páginas de 1 KB y 512 MB de memoria física. ¿Cuál es el tamaño total de la tabla de páginas para cada proceso en esta máquina, suponiendo que los bits válidos, de protección, sucios y de uso toman un total de 4 bits y que todas las páginas virtuales están en uso? (Suponga que las direcciones de disco no están almacenadas en la tabla de páginas).
1KB páginas = 2 ^ 10, 512MB = 2 ^ 29 => Desplazamiento = 29 - 10 = 19 bits.
virtual incluye dos partes: marco de página + desplazamiento => marco de página + bit sucio = 38 - 19 = 29 bit. 29 bits incluye 4 bits sucios (arriba) => 25 bits para el marco de página real, cada marco de página tiene 10 bits de longitud.
Entonces, tamaño de la tabla de páginas: 2 ^ 25 * 10 = 320M.
Espero que esto sea correcto.
Bueno, si la pregunta es simplemente "¿cuál es el tamaño de la tabla de páginas?" independientemente de que se ajuste a la memoria física, la respuesta se puede calcular de la siguiente manera:
Primera memoria física. Hay 512K páginas de memoria física (512M / 1K). Esto requiere 19 bits para representar cada página. Agregue eso a los 4 bits de información contable y obtendrá 23 bits.
Ahora la memoria virtual. Con un espacio de direcciones de 38 bits y un tamaño de página de 10 bits (1K), necesita 2 28 entradas en su tabla de páginas.
Por lo tanto, 2 entradas de la tabla de 28 páginas a 23 bits cada una son 6,174,015,488 bits o 736M.
Ese es el tamaño máximo necesario para un subsistema VM de un solo nivel para cada proceso .
Ahora, obviamente, eso no va a funcionar si solo tiene 512M de RAM física, así que tiene un par de opciones.
Puede reducir el número de páginas físicas. Por ejemplo, solo permita que la mitad de la memoria esté sujeta a paginación, manteniendo la otra mitad residente en todo momento. Esto ahorrará un bit por entrada, no es suficiente para hacer una diferencia.
Aumente el tamaño de la página, si es posible . Una página de 1K en un espacio de direcciones de 38 bits es la razón de las tablas de páginas muy gruesas. Por ejemplo, creo que el ''386, con su espacio de direcciones de 32 bits, utiliza páginas 4K. Eso daría como resultado un millón de entradas en la tabla de páginas, mucho menos que los 260 millones requeridos aquí.
Ir multinivel. Un poco más avanzado, pero básicamente significa que las propias tablas de páginas están sujetas a paginación. Debe mantener el primer nivel de las tablas de páginas residentes en la memoria física, pero el segundo nivel puede entrar y salir según sea necesario. Esto reducirá en gran medida los requisitos físicos pero a costa de la velocidad, ya que pueden ocurrir dos niveles de errores de página para llegar a una página de proceso real (uno para las tablas de paginación secundarias y luego uno para la página de proceso).
Veamos un poco más de cerca la opción 3.
Si permitimos 32M para la tabla de paginación primaria y asignamos 4 bytes a cada entrada (32 bits: solo se necesitan 23, pero podemos redondear la eficiencia aquí), esto permitirá 8,388,608 páginas para la tabla de páginas secundaria.
Dado que cada una de esas páginas de páginas de páginas secundarias tiene una longitud de 1 K (lo que nos permite almacenar 256 entradas de tablas de páginas secundarias a 4 bytes cada una), podemos abordar un total de 2,147,483,648 páginas virtuales.
Esto permitiría que 8,192 procesos completamente cargados (es decir, usar todo su espacio de direcciones de 28 bits) se ejecuten lado a lado, suponiendo que tenga una buena cantidad de espacio en el disco para almacenar las páginas no residentes.
Ahora, obviamente, la tabla de paginación primaria (y el subsistema VM, y probablemente una parte justa del resto del sistema operativo) debe permanecer residente en todo momento. No se le puede permitir que salga una de las páginas principales, ya que es posible que necesite esa página para volver a ingresar :-)
Pero ese es un costo residente de solo 32M del 512M para la tabla de paginación primaria, mucho mejor que el (como mínimo, para un proceso completamente cargado) de 736M.
tamaño de la tabla de páginas = número total de entradas de la tabla de páginas * tamaño de la entrada de la tabla de páginas
PASO 1: ENCONTRAR EL NO DE ENTRADAS EN LA TABLA DE PÁGINAS:
no of page table entries=virtual address space/page size
=2^38/2^10=2^28
así que hay 2 ^ 28 entradas en la tabla de páginas
PASO 2: NO DE LOS MARCOS EN LA MEMORIA FÍSICA:
no of frames in the physical memory=(512*1024*1024)/(1*1024)=524288=2^19
por lo que necesitamos 19 bits
y 4 bits
adicionales para 4 bits
válidos, de protección, sucios y de uso total de 23 bits = 2.875 bytes
size of the page table=(2^28)*2.875=771751936B=736MB