Paginación y memoria virtual

Aprende cómo un sistema operativo divide la memoria en páginas y usa tablas de páginas para traducir cada dirección que utiliza un programa. Sigue las traducciones a través de la TLB, la pequeña caché de hardware que las acelera, y de las tablas de páginas multinivel, que mantienen un tamaño reducido incluso para espacios de direcciones de 64 bits. Después, descubre cómo el intercambio permite que los programas usen más memoria de la que tiene la máquina: gestiona fallos de página, compara políticas de reemplazo como FIFO, LRU y el algoritmo del reloj con ejemplos resueltos de cadenas de referencias, y reconoce la hiperpaginación y sus soluciones.

IntermedioUnidad 4 de 9 del curso Curso de Sistemas operativos

Lo que aprenderás

  1. Divide la memoria en páginas y marcos de tamaño fijo, y usa una tabla de páginas por proceso para convertir cada dirección virtual en una dirección física.
    • Divide el espacio de direcciones en páginas y la memoria física en marcos
      Explica por qué la paginación sustituye a los segmentos de tamaño variable y divide una dirección virtual en un número de página y un desplazamiento.
    • Traduce una dirección con una tabla de páginas lineal
      Lee entradas de la tabla de páginas, sigue los pasos de una dirección virtual a una física y calcula cuánta memoria ocupa una tabla de páginas.
  2. Explica cómo un búfer de traducción adelantada almacena en caché traducciones recientes, predice la frecuencia de aciertos a partir del patrón de acceso de un programa y mantén su corrección ante fallos y cambios de contexto.
    • Sigue un acierto y un fallo de la TLB
      Sigue los pasos del hardware con un búfer de traducción adelantada y usa la localidad para predecir la frecuencia de aciertos en las búsquedas.
    • Gestiona los fallos de la TLB y los cambios de contexto
      Compara las TLB gestionadas por hardware y por software, mantén correctas las traducciones durante los cambios de contexto y calcula la cobertura de la TLB.
  3. Calcula por qué las tablas de páginas lineales desperdician memoria, compara las estructuras que reducen su tamaño y traduce direcciones mediante tablas de páginas multinivel, valorando el ahorro de memoria frente a la mayor lentitud de los fallos.
    • Compara formas de reducir una tabla de páginas
      Evalúa las páginas más grandes, la combinación de segmentación y paginación y las tablas de páginas invertidas frente al coste de memoria de una tabla lineal.
    • Traduce direcciones mediante una tabla de páginas de dos niveles
      Divide una dirección virtual en índice del directorio, índice de la tabla y desplazamiento, y recorre el directorio y la tabla de páginas hasta obtener una dirección física.
    • Adapta las tablas de páginas a direcciones de 64 bits
      Calcula cuántos niveles necesita una tabla de páginas y explica cómo funcionan en la práctica las tablas x86-64 de cuatro y cinco niveles y las páginas grandes.
  4. Mantén en un disco o una unidad SSD las páginas que no caben en memoria, sigue paso a paso un fallo de página, estima su coste y usa fallos de página deliberadamente para la asignación diferida y la copia en escritura.
    • Intercambia páginas y gestiona un fallo de página
      Explica el espacio de intercambio y el bit de presencia, y sigue al hardware y al sistema operativo durante un fallo de página.
    • Estima el coste de los fallos de página y mantén marcos libres
      Calcula el tiempo de acceso efectivo con fallos de página y explica cómo el sistema operativo libera marcos por adelantado y escribe las páginas modificadas.
    • Usa los fallos de página para la asignación diferida, la copia en escritura y la compartición
      Explica cómo los sistemas operativos usan los bits de validez, presencia y protección para posponer trabajo y compartir memoria de forma segura.
  5. Simula y compara políticas de reemplazo con cadenas de referencias, explica cómo los sistemas reales aproximan LRU y reconoce y corrige la hiperpaginación.
    • Evalúa las políticas de reemplazo tomando como referencia la política óptima
      Cuenta aciertos y fallos en una cadena de referencias, clasifica los fallos y usa la política óptima como referencia.
    • Compara los reemplazos FIFO, aleatorio y LRU
      Simula las políticas clásicas con la misma cadena de referencias, explica la anomalía de Belady y elige una política para un patrón de acceso dado.
    • Aproxima LRU mediante bits de uso y el algoritmo del reloj
      Ejecuta el algoritmo del reloj con bits de uso y modificación, y explica por qué los sistemas reales aproximan LRU en lugar de implementarlo exactamente.
    • Reconoce la hiperpaginación y asigna marcos
      Explica la hiperpaginación mediante el modelo del conjunto de trabajo y elige soluciones como el control de admisión, el control de la frecuencia de fallos de página y el mecanismo de terminación por falta de memoria.

Guía de estudio de Paginación y memoria virtual

5 capítulos

1

Traduce direcciones virtuales mediante paginación

Cada búsqueda de instrucción, lectura y escritura comienza con una dirección en el espacio virtual de un proceso. La paginación permite al sistema operativo colocar su contenido en marcos físicos separados mientras conserva la visión del programa de direcciones consecutivas. Dividirás direcciones, seguirás una búsqueda en una tabla de páginas lineal y distinguirás la dirección de una entrada de mapeo de la dirección de los datos solicitados. Los mismos cálculos también muestran los costes de espacio de la paginación.

1.1 Páginas, marcos y campos de dirección

Un programa usa direcciones virtuales. La memoria física contiene los bytes en marcos. La paginación divide el espacio de direcciones virtuales en páginas de igual tamaño y la memoria física en marcos del mismo tamaño. El sistema operativo puede colocar cualquier página en cualquier marco libre. La página 0 podría ocupar el marco 12 y la página 1 el marco 3; el programa sigue viendo direcciones virtuales consecutivas.

Esto elimina la fragmentación externa en las asignaciones de páginas individuales. Con segmentos de tamaño variable, una solicitud puede fallar porque el espacio libre está dividido en huecos demasiado pequeños. Con paginación, un marco libre siempre tiene espacio para una página. Un espacio de direcciones disperso puede dejar un gran hueco entre el montículo y la pila sin reservar marcos físicos para ese hueco.

Mide el espacio sin usar dentro de las páginas

La paginación sigue teniendo fragmentación interna. Una región debe ocupar páginas completas incluso cuando su última página está parcialmente vacía. Una región de 9000 bytes necesita tres páginas de 4 KiB: dos páginas contienen 8192 bytes, por lo que quedan 808 bytes para la tercera. La asignación ocupa 12 288 bytes, de los que 3288 bytes no se usan. KiB significa 1024 bytes; MiB significa 1 048 576 bytes. Algunos libros usan KB y MB para estas cantidades binarias.

Divide la dirección en campos

Una dirección identifica tanto una página como un byte dentro de ella. Para un tamaño de página de 2k bytes, los k bits inferiores son el desplazamiento. Los bits superiores restantes son el número de página virtual, o VPN. Una dirección de 32 bits con páginas de 4 KiB tiene 12 bits de desplazamiento y 20 bits de VPN. Hay 220 páginas virtuales posibles en ese espacio de direcciones.

Para 0x00403A7C, los últimos tres dígitos hexadecimales dan el desplazamiento 0xA7C, porque cada dígito hexadecimal representa cuatro bits. Los primeros cinco dígitos dan el VPN 0x00403. Este atajo funciona aquí porque el límite entre campos cae entre dígitos hexadecimales. Para otro tamaño de página, cuenta los bits antes de dividir el valor hexadecimal escrito.

La aritmética decimal da el mismo resultado:

VPN=⌊VA/P⌋,offset=VA mod P

Aquí P es el tamaño de página en bytes. Con páginas de 1024 bytes, la dirección virtual 5000 tiene VPN 4 y desplazamiento 904. Cuatro páginas completas suman 4096 bytes; los 904 bytes restantes sitúan la dirección dentro de la página 4. Los desplazamientos comienzan en cero, por lo que los de esta página van de 0 a 1023.

La traducción sustituye el VPN por un número de marco físico. Copia el desplazamiento sin cambios: el byte 904 de una página virtual es el byte 904 de su marco. El número de página por sí solo no es una dirección de byte. Multiplica un número de marco por el tamaño de página para hallar la dirección inicial del marco y después suma el desplazamiento.

Elige un tamaño de página

Las páginas más grandes reducen el número de mapeos y permiten que cada traducción en caché cubra más bytes. También desperdician más espacio en páginas parcialmente utilizadas y transfieren más datos cuando se carga una página. Un tamaño habitual de página base es 4 KiB; otros sistemas usan 16 KiB o 64 KiB. x86-64 también admite mapeos grandes, como páginas de 2 MiB.

Puntos clave

  • Una página virtual y un marco físico tienen el mismo tamaño.
  • Cualquier marco libre puede contener cualquier página; las páginas virtuales adyacentes no tienen que ocupar marcos adyacentes.
  • Los bits inferiores de la dirección dan el desplazamiento, que la traducción conserva.
  • Redondea las asignaciones al número entero de páginas superior al calcular la fragmentación interna.
  • Las páginas más grandes reducen la sobrecarga de los mapeos, pero aumentan el posible desperdicio.

1.2 Lectura de una tabla de páginas lineal

Una tabla de páginas registra los mapeos de un proceso. En una tabla de páginas lineal, el VPN indexa un arreglo: la entrada 4 describe la página virtual 4. Cada proceso tiene su propia tabla, por lo que la misma dirección virtual puede referirse a distintos bytes físicos en procesos diferentes. En un cambio de contexto, el sistema operativo selecciona la tabla del nuevo proceso mediante un registro base de la tabla de páginas.

Lee el estado y los permisos de la entrada

Una entrada de la tabla de páginas, o PTE, contiene un número de marco físico (PFN) e información de control. En el modelo didáctico, un bit de validez indica que la página pertenece al espacio de direcciones; un bit de presencia indica que su contenido reside en memoria física. Los bits de protección controlan la lectura, la escritura, la ejecución y el acceso desde modo usuario. Un bit de modificación registra las escrituras realizadas desde que se borró por última vez. Un bit de acceso registra el uso desde que se borró por última vez; también se llama bit de referencia o de uso.

Estas son funciones conceptuales, no una garantía de que el hardware tenga una organización idéntica. x86 no tiene un bit de validez independiente en una PTE. Cuando el bit de presencia está desactivado, el sistema operativo consulta sus propios registros para distinguir una dirección sin usar de una página válida almacenada en otro lugar. En x86, el hardware activa los bits de acceso y modificación; el sistema operativo los gestiona y los borra.

Localiza la entrada y el byte

Para traducir una dirección con una tabla lineal:

  1. Divide la dirección virtual en VPN y desplazamiento.
  2. Localiza su entrada en table base+VPN×PTE size.
  3. Comprueba si el mapeo existe, está presente y permite este acceso.
  4. Forma la dirección física a partir de PFN×page size+offset.
  5. Lee o escribe el byte en esa dirección física.

Con páginas de 1024 bytes, la dirección virtual 5000 da VPN 4 y desplazamiento 904. Supón que la PTE 4 está presente y permite la lectura solicitada, con PFN 9. El marco 9 comienza en 9216, por lo que la dirección física del byte es 10 120. La dirección de la propia tabla es un cálculo separado: si las entradas ocupan 4 bytes, la PTE 4 está 16 bytes después de la base de la tabla.

En un ejemplo hexadecimal, las páginas de 4 KiB dividen 0x00403A7C en el VPN 0x403 y el desplazamiento 0xA7C. Si el mapeo permitido contiene el PFN 0x1F2B5, la dirección física es 0x1F2B5A7C. La PTE está en base + 0x403 × 4 = base + 0x100C. Añadir el desplazamiento forma una dirección de datos; multiplicar el VPN por el tamaño de la entrada localiza la PTE. Estas dos direcciones tienen fines distintos.

Una comprobación fallida genera una excepción. El sistema operativo puede cargar una página válida que no reside en memoria, proporcionar memoria inicializada a cero o reparar otro mapeo legítimo. Una dirección no válida o un acceso prohibido suele causar un fallo de segmentación. Una página presente puede rechazar una escritura si su protección la prohíbe.

Calcula el espacio de la tabla y las lecturas de memoria

Las tablas lineales son costosas incluso para procesos pequeños. Con direcciones virtuales de 32 bits y páginas de 4 KiB, cada tabla necesita 1 048 576 entradas. Con 4 bytes por entrada, son 4 MiB por proceso, incluidas las entradas para páginas virtuales sin usar. Cien procesos necesitan 400 MiB solo para estas tablas.

También añaden una búsqueda a cada referencia a memoria. En un modelo sencillo sin caché de traducciones, el procesador lee una PTE y después los datos solicitados: dos accesos a memoria. La compartición sigue siendo posible: dos procesos pueden mapear deliberadamente sus páginas virtuales independientes al mismo PFN, como ocurre con el código de programa de solo lectura.

Puntos clave

  • Una tabla lineal es un arreglo indexado por VPN.
  • Ubicación de la PTE = table base+VPN×entry size.
  • Dirección física = PFN×page size+offset.
  • La presencia y los permisos responden a preguntas distintas.
  • El tamaño de la tabla depende de todo el espacio de direcciones virtuales, incluidas las páginas sin usar.
  • Las tablas independientes de los procesos pueden compartir deliberadamente un marco físico.
2

Acelera la traducción con la TLB

Traducir cada referencia mediante la memoria añadiría una búsqueda antes de cada acceso útil. Una TLB mantiene las traducciones recientes cerca del procesador. Su eficacia depende tanto del orden de acceso como de la capacidad, y su contenido debe seguir siendo correcto cuando cambian los procesos o los mapeos. Seguirás aciertos y fallos, estimarás el tiempo medio de acceso y relacionarás las traducciones en caché con el trabajo que realiza el sistema operativo.

2.1 Aciertos, fallos y localidad de la TLB

Un búfer de traducción adelantada, o TLB, es una pequeña caché de hardware de traducciones de direcciones en la unidad de gestión de memoria (MMU). Contiene mapeos recientes de VPN a PFN e información de acceso. Almacena traducciones en caché, mientras que una caché de datos contiene bytes del programa. Un programa puede fallar en una caché y acertar en la otra.

Sigue los aciertos y los fallos

Ante un acierto en la TLB, la MMU obtiene el PFN de la entrada en caché, comprueba los permisos de acceso y combina el PFN con el desplazamiento sin cambios. No necesita leer la tabla de páginas. Un acierto nunca elimina la necesidad de aplicar la protección. El bit de validez de la TLB indica que una entrada en caché es utilizable; no indica si una página virtual pertenece al espacio de direcciones del proceso.

Ante un fallo de TLB, el sistema debe buscar la traducción en la tabla de páginas. Si la página está presente y el acceso está permitido, instala la traducción y completa o vuelve a intentar la referencia. No se necesita una lectura del almacenamiento. Si la tabla indica, en cambio, que falta un mapeo o que el acceso está prohibido, un fallo de página requiere la intervención del sistema operativo. Un fallo de TLB por sí solo no es un fallo de página.

Predice la reutilización a partir de la localidad

Las TLB pueden contener muchas menos entradas que el número de páginas virtuales, pero funcionan bien porque los programas presentan localidad. La localidad espacial significa que se usan direcciones cercanas en momentos próximos. Una vez que se almacena una traducción en caché, muchas direcciones de esa página pueden usarla. La localidad temporal significa que es probable que las direcciones usadas recientemente vuelvan a utilizarse, como ocurre con las instrucciones de un bucle.

Considera 16 384 enteros de cuatro bytes almacenados consecutivamente en un arreglo alineado con un límite de página. Con páginas de 4 KiB, cada página contiene 1024 enteros, por lo que el arreglo ocupa 16 páginas. Si se comienza con una TLB vacía y sin otras traducciones que interfieran, el primer entero de cada página causa un fallo. Los siguientes 1023 de esa página aciertan. Hay 16 fallos y 16 368 aciertos en total, lo que da una tasa de acierto de aproximadamente el 99,9 %.

El orden de acceso cambia ese resultado. En C, int a[1024][1024] almacena las filas de forma consecutiva. Supón enteros de cuatro bytes, alineación con un límite de página, páginas de 4 KiB y una TLB LRU de 64 entradas. Cada fila ocupa una página. El recorrido por filas tiene un fallo por fila, es decir, 1024 fallos. El recorrido por columnas visita 1024 páginas distintas antes de volver a la primera. Su traducción ya ha sido expulsada, por lo que las 1 048 576 referencias al arreglo fallan. El tamaño del arreglo no cambia; cambia la distancia entre usos de una misma traducción.

Calcula el coste medio de aciertos y fallos

El modelo de tiempo debe indicar el coste de un acierto y de un fallo. Supón que la memoria tarda 100 ns, que la búsqueda en la TLB no añade tiempo y que un fallo en una tabla lineal añade una lectura de memoria. Un acierto cuesta 100 ns y un fallo resuelto cuesta 200 ns. Con una tasa de acierto del 98 %:

EAT=0,98(100)+0,02(200)=102 ns

Este promedio incluye el acceso final a los datos en ambos casos. Contar solo la lectura adicional de la PTE como el coste total del fallo subestimaría el total. Con tablas multinivel, un fallo puede necesitar varias lecturas de tablas, por lo que la localidad importa aún más.

Puntos clave

  • La TLB almacena traducciones y permisos, no datos del programa.
  • Un acierto sigue aplicando los permisos de acceso.
  • Un fallo de TLB puede resolverse sin un fallo de página.
  • Los accesos cercanos comparten una traducción; los accesos repetidos la reutilizan.
  • El orden de acceso puede cambiar mucho las tasas de fallos de TLB.

2.2 Mantener correctas las traducciones en caché

Un fallo de TLB necesita una búsqueda de la traducción, pero las arquitecturas reparten ese trabajo de distintas formas. Con una TLB gestionada por hardware, como en x86 y ARM, la MMU recorre la tabla de páginas desde la raíz de la tabla seleccionada. El hardware define el formato que puede recorrer. Si el mapeo es utilizable, rellena la caché de traducciones sin llamar a un manejador del sistema operativo para el fallo ordinario.

Una TLB gestionada por software, usada en los diseños clásicos de MIPS y SPARC, genera una excepción ante un fallo. Un manejador del sistema operativo encuentra el mapeo y lo inserta mediante instrucciones privilegiadas. Esto da al sistema operativo más libertad sobre la estructura de su tabla. El retorno de esta excepción vuelve a intentar la instrucción que falló; el retorno de una llamada al sistema normalmente continúa después de la llamada.

Mantén accesible el manejador de recarga

El manejador de fallos necesita acceso fiable a sus propias instrucciones y datos. Si atender un fallo provoca de inmediato el mismo tipo de fallo sin resolver dentro del manejador, el sistema puede dejar de avanzar. Los diseños lo evitan mediante memoria no traducida o traducciones fijadas permanentemente para el código y los datos esenciales del manejador.

Selecciona el espacio de direcciones correcto

Los cambios de contexto plantean otro problema. El proceso A podría mapear el VPN 7 al marco 20, mientras que el proceso B mapea el VPN 7 al marco 90. Conservar la entrada sin etiqueta de A después de cambiar a B enviaría a B al marco incorrecto. Cargar la raíz de la tabla de páginas de B no hace por sí solo que sea seguro usar un mapeo en caché sin etiqueta.

Una solución es invalidar las entradas pertinentes de la TLB al cambiar de proceso. Se borran sus bits de validez, lo que obliga al nuevo proceso a rellenarlas. Otra solución etiqueta las entradas con un identificador de espacio de direcciones (ASID). La búsqueda comprueba entonces tanto la página virtual como su etiqueta de espacio de direcciones. x86 llama a su etiqueta identificador de contexto de proceso, o PCID. Las entradas de varios espacios de direcciones pueden permanecer en caché mientras el hardware selecciona solo las que pertenecen al contexto actual. La reutilización de etiquetas debe seguir gestionándose para que una entrada antigua no se confunda con un nuevo espacio de direcciones.

Invalida los mapeos modificados

Un cambio en una PTE también deja desactualizada una traducción en caché. Supón que el sistema operativo elimina el permiso de escritura en memoria, pero deja una entrada de la TLB que permite escribir. El procesador podría seguir permitiendo escrituras mediante esa entrada antigua. El sistema operativo debe invalidar las traducciones afectadas. En una máquina con varios núcleos, debe participar cada núcleo que pueda tener el mapeo en caché. Esta coordinación se llama invalidación coordinada de las TLB.

Calcula la cobertura de traducción

Además de la corrección, la capacidad también importa. La cobertura de la TLB es la cantidad de memoria representada por las traducciones en caché:

reach=entries×page size

Una TLB de 64 entradas cubre 256 KiB con páginas de 4 KiB y 128 MiB con páginas de 2 MiB. La cobertura describe los mapeos cubiertos, no la capacidad de la memoria física. Los procesadores reales pueden tener capacidades de TLB distintas para diferentes tamaños de página, por lo que este cálculo compara un número fijo de entradas.

Cuando una TLB está llena, reemplaza una traducción. LRU favorece las entradas usadas recientemente; el reemplazo aleatorio elige sin registrar el uso reciente. Recorrer cíclicamente una página más de las que caben perjudica a LRU porque cada traducción se expulsa justo antes de volver a necesitarse.

Puntos clave

  • El hardware o un manejador del sistema operativo puede rellenar una TLB.
  • Los ASID distinguen VPN idénticos que pertenecen a diferentes espacios de direcciones.
  • Cambiar una PTE requiere invalidar las traducciones desactualizadas en caché.
  • Una invalidación coordinada de las TLB coordina la invalidación entre núcleos.
  • La cobertura es igual al número de entradas por el tamaño de página.
3

Reduce el tamaño de las tablas de páginas

Los espacios de direcciones virtuales grandes hacen inviable un arreglo completo de mapeos de páginas. Las estructuras de tablas de páginas ahorran espacio al organizar u omitir mapeos de distintas formas. Compararás esas opciones, seguirás un recorrido de dos niveles y ampliarás el mismo razonamiento sobre campos de bits a x86-64. Cada estructura equilibra la memoria usada para los mapeos con el trabajo necesario cuando la TLB no tiene una traducción; las páginas grandes cambian ambos lados de ese equilibrio.

3.1 Alternativas a una tabla lineal completa

Una tabla de páginas lineal reserva una entrada para cada página virtual posible. La mayoría de los procesos usan solo una pequeña parte de su espacio de direcciones: el código y el montículo están cerca de un extremo, la pila cerca del otro y un gran hueco los separa. Una tabla con millones de entradas no válidas sigue consumiendo memoria. Reducir este coste implica cambiar el tamaño de página, la organización de la tabla o ambos.

Reduce el número de páginas

Las páginas más grandes reducen el número de VPN. Con un espacio de direcciones de 32 bits y páginas de 16 KiB, 14 bits forman el desplazamiento y 18 bits forman el VPN. Una tabla lineal necesita entonces 262 144 entradas. Con 4 bytes por entrada ocupa 1 MiB, frente a los 4 MiB para páginas de 4 KiB. Esto ahorra espacio de tabla aunque el proceso siga pudiendo direccionar 4 GiB de bytes virtuales.

El coste se traslada a otra parte. Una asignación pequeña puede desperdiciar más espacio de su última página y cargar una página en memoria transfiere más bytes. Aumentar el tamaño de página no distingue una parte del espacio de direcciones usada de forma densa de un hueco sin usar; simplemente da a ambos menos entradas.

Omite los huecos con tablas de segmentos separadas

Un esquema híbrido de segmentación y paginación proporciona al código, el montículo y la pila sus propias tablas de páginas. Cada segmento tiene una base de tabla y un límite para sus números de página. El hueco entre segmentos no necesita entradas. La traducción primero selecciona el segmento, comprueba su límite y después busca la página dentro de ese segmento.

Este enfoque depende de una división útil en segmentos. Sus tablas pueden tener distintas longitudes y necesitar espacio físico contiguo, lo que reintroduce la fragmentación externa para las propias tablas. Las páginas de datos del proceso siguen siendo de tamaño fijo; los objetos fragmentados son ahora las tablas de páginas de tamaño variable.

Indexa los marcos físicos

Una tabla de páginas invertida cambia lo que describe una entrada. Tiene una entrada por marco físico para toda la máquina y registra el proceso y el VPN que lo ocupan. Con 16 GiB de memoria física y marcos de 4 KiB, necesita 4 194 304 entradas independientemente de cuántos procesos tengan espacios de direcciones virtuales grandes. Sigue siendo necesario conocer el tamaño de la entrada para convertir ese recuento en un total de bytes.

Una tabla ordinaria usa el VPN como índice directo de un arreglo. En cambio, una tabla invertida busca el par formado por la identidad del espacio de direcciones y el VPN. Una estructura hash puede hacer que esto sea eficiente, pero las colisiones pueden requerir búsquedas adicionales. Los marcos compartidos también necesitan un tratamiento adicional porque un marco puede tener varios nombres virtuales. Las tablas de páginas con hash, como las usadas en sistemas PowerPC, utilizan ideas de búsqueda relacionadas; una tabla con hash no es necesariamente una tabla invertida estricta de una entrada por marco.

Asigna tablas según la región usada

Las tablas de páginas multinivel conservan la búsqueda mediante índices y asignan páginas de tabla de nivel inferior solo donde se necesitan mapeos. Una entrada de nivel superior puede marcar todo un intervalo sin usar sin asignar su tabla de nivel inferior. Esta es la solución habitual en los sistemas modernos. El ahorro es mayor para espacios de direcciones dispersos, mientras que un fallo de TLB necesita más pasos de búsqueda.

Compara las opciones preguntándote qué determina el tamaño. Una tabla lineal crece con el número de páginas virtuales por proceso. Una tabla invertida crece con el número de marcos físicos del sistema. Una jerarquía crece con las ramas de la tabla necesarias para los mapeos. Ninguno de estos recuentos es el número de bytes de datos del programa que residen actualmente en memoria.

Puntos clave

  • Las páginas más grandes reducen el número de PTE, pero pueden aumentar la fragmentación interna.
  • Las tablas de segmentos separadas omiten huecos, pero pueden requerir asignaciones de tablas de tamaño variable.
  • Una tabla invertida tiene una entrada por cada marco físico del sistema.
  • La búsqueda invertida necesita una identidad de espacio de direcciones y un VPN.
  • Una jerarquía omite las tablas de nivel inferior para intervalos de direcciones sin usar.

3.2 Recorrido de una tabla de páginas de dos niveles

Una tabla de páginas de dos niveles divide una tabla lineal grande en partes del tamaño de una página. Un directorio de páginas apunta a esas partes. El directorio se asigna, pero una página de tabla de nivel inferior solo se asigna cuando su región necesita mapeos. Una entrada ausente del directorio puede representar todo un intervalo sin usar.

Deduce la división 10/10/12

Toma una dirección virtual de 32 bits, páginas de 4 KiB y entradas de 4 bytes. Cada página de la tabla de páginas contiene 1024 entradas, por lo que un índice de 10 bits selecciona una entrada. La dirección se divide en 10 bits de directorio, 10 bits de tabla y 12 bits de desplazamiento. Cada tabla de nivel inferior mapea 1024 páginas, que cubren 4 MiB de direcciones virtuales. El directorio también tiene 1024 entradas y ocupa una página de 4 KiB.

Sigue las entradas del directorio y de la tabla

El recorrido sigue punteros físicos:

  1. Suma directory index×4 a la base física del directorio. Lee esa entrada del directorio de páginas (PDE).
  2. Si apunta a una página de tabla, multiplica su PFN por 4096 para obtener la base física de esa tabla.
  3. Suma table index×4 y lee la PTE.
  4. Comprueba el mapeo final y combina su PFN con el desplazamiento.

La PDE apunta a una tabla, mientras que la PTE apunta a la página de datos solicitada. Confundir estas funciones envía una referencia a la memoria de la tabla de páginas en lugar de a los datos del programa.

Para la dirección virtual 0x00803ABC, el índice del directorio es 2, el índice de la tabla es 3 y el desplazamiento es 0xABC. Supón que la entrada 2 del directorio apunta al marco 0xA1. Su tabla comienza en 0xA1000. La entrada 3 está 12 bytes después del inicio de esa tabla, en 0xA100C. Si la PTE presente y permitida contiene el PFN 0x2F3C4, la dirección de datos es 0x2F3C4ABC.

Observa los dos multiplicadores distintos. Un índice de tabla cuenta entradas, por lo que debes multiplicarlo por el tamaño de la entrada. Un PFN cuenta marcos, por lo que debes multiplicarlo por el tamaño de página. El desplazamiento cuenta bytes dentro de la página final y no necesita ninguno de los dos multiplicadores. La base del directorio y los punteros usados durante el recorrido son direcciones físicas; usar punteros virtuales exigiría otra traducción para realizar esta traducción.

Cuenta las tablas y las lecturas de búsqueda

El espacio depende de cómo se distribuyan los mapeos. Supón que un proceso usa los 8 MiB inferiores de su espacio de 4 GiB y los 4 MiB superiores, con ambas regiones alineadas con los límites del directorio. La región inferior necesita dos páginas de tabla y la superior una. Al añadir el directorio se obtienen cuatro páginas, o 16 KiB, en lugar de una tabla lineal de 4 MiB. Mapear el mismo número de páginas de datos de forma dispersa entre muchas regiones del directorio podría necesitar más páginas de tabla.

En el esquema didáctico básico, una PDE no válida significa que ninguna de las páginas de su región de 4 MiB pertenece al espacio de direcciones. El recorrido se detiene sin leer una PTE. Los sistemas operativos completos también pueden usar entradas ausentes para la asignación diferida, por lo que sus registros de software determinan el significado de una entrada no presente para el hardware.

La jerarquía ahorra espacio al añadir trabajo ante un fallo de TLB. Un recorrido de dos niveles sin caché lee una PDE y una PTE antes de acceder a los datos: tres lecturas de memoria en total, frente a dos con una tabla lineal. Un acierto de TLB evita esas lecturas de tablas. Esto hace que una tasa alta de aciertos sea especialmente valiosa a medida que aumenta la profundidad de la jerarquía.

Puntos clave

  • La división 10/10/12 se deriva de páginas de 4 KiB y entradas de 4 bytes.
  • Una PDE localiza una página de tabla; una PTE localiza un marco de datos.
  • Multiplica los índices por el tamaño de la entrada y los PFN por el tamaño de página.
  • Cuenta el directorio además de las páginas de tabla de nivel inferior asignadas.
  • Un fallo de TLB cuesta lecturas adicionales de tablas; un acierto evita el recorrido.
  • Los mapeos dispersos ahorran más cuando comparten un número pequeño de páginas de tabla.

3.3 Tablas de varios niveles y páginas grandes en x86-64

El número de niveles de tabla se deriva de tres cantidades: el ancho implementado de la dirección virtual, el tamaño de página y el tamaño de la entrada. Primero calcula el ancho del desplazamiento. Después calcula cuántas entradas caben en una página de tabla y cuántos bits seleccionan una entrada. Por último, divide los bits restantes del VPN en campos de índice y redondea el número de niveles hacia arriba si es necesario.

Deduce los cuatro niveles

Para la paginación x86-64 de cuatro niveles, el ancho implementado de la dirección virtual es de 48 bits. Una página de 4 KiB proporciona 12 bits de desplazamiento. Una entrada de 8 bytes da 512 entradas por página de tabla, seleccionadas por 9 bits. El VPN tiene 36 bits, por lo que se necesitan cuatro índices de 9 bits. Un recorrido correcto sin caché sigue cuatro entradas y después accede a los datos.

Los niveles son PML4, tabla de punteros a directorios de páginas, directorio de páginas y tabla de páginas. Sus índices ocupan los bits 47–39, 38–30, 29–21 y 20–12. CR3 identifica la raíz física. Linux llama a los niveles correspondientes PGD, PUD, PMD y PTE; su jerarquía genérica incluye un nivel P4D, que se integra en otro cuando la arquitectura usa solo cuatro niveles.

Distingue el ancho de dirección de la RAM

Un espacio de direcciones implementado de 48 bits contiene 256 TiB de bytes direccionables. Las direcciones siguen almacenándose en valores de 64 bits: en la forma canónica ordinaria, los bits por encima del bit 47 repiten ese bit. Los intervalos válidos inferior y superior están separados por un hueco no canónico. Llamarlo espacio de direcciones de 48 bits no significa que se pueda usar cualquier patrón de 64 bits ni que un proceso reciba 256 TiB de RAM.

Una tabla lineal sería enorme. Hay 236 páginas virtuales; al multiplicar por entradas de 8 bytes se obtienen 239 bytes, o 512 GiB por proceso. Una jerarquía representa los intervalos sin usar mediante ramas ausentes en lugar de reservar todas esas entradas.

Los procesadores que admiten paginación de cinco niveles pueden usar 57 bits de dirección virtual implementados cuando ese modo está activado. Se añade un índice más de 9 bits por encima de la PML4, lo que da 128 PiB de bytes direccionables y una posible lectura adicional de tabla. Los bits superiores de una dirección canónica repiten entonces el bit 56. El soporte del procesador y el modo de paginación activado determinan qué ancho se aplica.

Detén el recorrido en una página grande

Las páginas grandes detienen el recorrido antes. En x86-64, una entrada del nivel de directorio de páginas puede mapear directamente una página de 2 MiB, lo que deja 21 bits de desplazamiento. Una entrada de la tabla de punteros a directorios de páginas puede mapear una página de 1 GiB, lo que deja 30 bits de desplazamiento. Los bits inferiores que de otro modo seleccionarían entradas de nivel inferior seleccionan ahora bytes dentro de esa página grande.

Esto reduce tanto la longitud del recorrido como el número de traducciones necesarias para una región dada. Aumenta la cobertura de la TLB, lo que puede ayudar a las bases de datos y otras cargas de trabajo grandes. El mapeo físico necesita una región contigua de marcos debidamente alineada, y una página grande parcialmente usada puede desperdiciar mucha más memoria. Linux admite la asignación explícita de páginas enormes y las páginas enormes transparentes; los tamaños admitidos dependen de la arquitectura.

El recuento sencillo de costes supone que no hay entradas de tabla en caché. Los procesadores reales almacenan en caché estructuras de paginación, y las lecturas de tablas pueden acertar en las cachés ordinarias. Por tanto, cuatro niveles no garantizan cuatro demoras de memoria principal en cada fallo de TLB. Describen la cadena de dependencias y su coste sin caché.

Puntos clave

  • Calcula el ancho del índice a partir del número de entradas por página de tabla.
  • x86-64 de cuatro niveles divide 36 bits de VPN en cuatro índices de 9 bits.
  • El ancho implementado de la dirección virtual es menor que el contenedor de direcciones de 64 bits.
  • Una entrada de página grande termina el recorrido antes y asigna más bits al desplazamiento.
  • Las cachés de recorrido reducen el coste habitual sin cambiar la jerarquía.
4

Supera la capacidad de la memoria física mediante el intercambio

Un proceso puede tener más páginas virtuales de las que mantiene actualmente en memoria física. El sistema operativo proporciona el contenido de las páginas cuando un acceso lo necesita, a veces desde el espacio de intercambio y otras sin ninguna lectura del almacenamiento. Seguirás la instrucción que causa el fallo a través del manejador y hasta su reanudación, estimarás el coste de los fallos mayores y verás por qué los fallos también permiten funciones útiles como la memoria llena de ceros y la copia en escritura.

4.1 Seguimiento de una página desde el espacio de intercambio hasta la memoria

Los espacios de direcciones virtuales pueden superar en conjunto la memoria física porque no todas las páginas tienen que permanecer residentes. El espacio de intercambio almacena el contenido de las páginas desplazadas en un disco o una unidad SSD. Linux puede usar una partición o un archivo de intercambio; Windows usa un archivo de paginación. La memoria física contiene el subconjunto de páginas residentes en cada momento.

La paginación mueve páginas individuales. Una salida de página la escribe en el almacenamiento de respaldo antes de reutilizar su marco; una entrada de página la vuelve a leer. Históricamente, el intercambio también significaba trasladar un proceso completo. En el uso actual, la palabra suele referirse al movimiento de páginas, por lo que debes identificar qué objeto se está moviendo.

Interpreta el mapeo ausente

El bit de presencia de una PTE indica al hardware si hay disponible un mapeo residente. Si una página válida se ha trasladado al espacio de intercambio, el sistema operativo registra dónde puede encontrarse su contenido, ya sea en bits de la entrada definidos por software o en metadatos separados. Un bit de presencia en cero no identifica por sí mismo el espacio de intercambio: también puede describir memoria sin asignar o de asignación diferida.

Un fallo de página es una excepción causada por un acceso que no puede completarse con el mapeo actual. Puede indicar una ausencia o una violación de protección. El manejador decide si el acceso es legítimo y cómo resolverlo. Una gestión satisfactoria puede cargar bytes almacenados, proporcionar memoria llena de ceros, mapear un marco residente existente o hacer una copia privada. Un acceso realmente no válido suele producir un fallo de segmentación.

Restaura una página guardada

Sigue la lectura de una página desde el espacio de intercambio con páginas de 1024 bytes:

  1. La dirección virtual 5000 da el VPN 4 y el desplazamiento 904.
  2. La TLB no tiene una traducción utilizable. El recorrido de la tabla de páginas encuentra que la página válida no está presente; los registros de software identifican el bloque 37 del espacio de intercambio.
  3. El manejador obtiene el marco 9. Si no hay ningún marco libre, la recuperación de memoria debe liberar espacio primero.
  4. El sistema operativo lee el bloque 37 en el marco 9. El proceso que causó el fallo espera; otro proceso listo para ejecutarse puede usar la CPU.
  5. Al terminar la lectura, el sistema operativo instala el PFN 9, marca el mapeo como presente y deja el proceso listo para ejecutarse.
  6. Se vuelve a intentar la instrucción. La traducción llega ahora a la dirección física 10 120.

La instrucción reanuda la operación prevista una vez que los bytes están disponibles. Avanzar más allá de la instrucción fallida haría perder una lectura o escritura. El proceso puede percibir una demora, pero su dirección virtual no ha cambiado.

Clasifica el fallo y predice la demanda

Un fallo mayor necesita una lectura del almacenamiento. Un fallo menor se resuelve sin esa entrada/salida, por ejemplo, proporcionando un marco lleno de ceros o mapeando un marco que ya está residente. Por tanto, un gran número de fallos menores no implica el mismo tráfico del dispositivo que el mismo número de fallos mayores. En Linux, /usr/bin/time -v informa de los dos recuentos para un comando.

La paginación por demanda espera hasta que se accede a una página antes de proporcionarla. Esto permite que un programa comience sin cargar todo su contenido. La precarga incorpora páginas que se espera necesitar pronto. Las buenas predicciones evitan esperas posteriores; las malas consumen ancho de banda y memoria para páginas que nunca se usan.

Mantén separados los eventos. Un fallo de TLB requiere buscar una traducción. Un fallo de página requiere que el sistema operativo gestione un problema de mapeo. Un fallo de segmentación es un resultado habitual de un acceso prohibido. Una página residente y con los permisos necesarios puede causar un fallo de TLB sin que ocurra ninguno de los otros eventos.

Puntos clave

  • Que una página no esté presente no significa automáticamente que esté almacenada en el espacio de intercambio.
  • Un fallo mayor necesita una lectura del almacenamiento; un fallo menor no.
  • Un fallo de una página en el espacio de intercambio bloquea el proceso mientras se completa la lectura.
  • El manejador repara el mapeo y vuelve a intentar la instrucción que causó el fallo.
  • La paginación por demanda espera al uso; la precarga predice el uso futuro.
  • Un fallo de TLB, un fallo de página y un fallo de segmentación son eventos distintos.

4.2 Coste de los fallos, páginas modificadas y marcos libres

Una lectura poco frecuente del almacenamiento puede dominar el tiempo medio de memoria. Sea p la probabilidad de que una referencia cause un fallo mayor, M el tiempo de acceso ordinario y F el tiempo total de servicio de una referencia que causa un fallo. Un modelo sencillo de dos casos da:

EAT=(1−p)M+pF

Aquí F incluye la lectura del almacenamiento, el trabajo del sistema operativo y cualquier escritura diferida necesaria de una víctima modificada. Es el coste total del caso con fallo, no solo una pequeña penalización por buscar una PTE.

Calcula el efecto de fallos poco frecuentes

Supón que un acceso ordinario tarda 100 ns y un fallo mayor tarda 8 ms en total. Convierte 8 ms a 8 000 000 ns antes de calcular el promedio. Con un fallo por cada 1000 referencias:

EAT=0,999(100)+0,001(8000000)=8099,9 ns

Esto es aproximadamente 81 veces el tiempo de acceso ordinario. Una tasa de fallos del 0,1 % parece pequeña, pero un fallo cuesta tanto como muchos miles de referencias a memoria.

Para una ralentización inferior al 10 %, exige un promedio inferior a 110 ns. Al despejar se obtiene:

p<110−1008000000−100≈1,25×10−6

Esto equivale a menos de aproximadamente un fallo mayor por cada 800 000 referencias. La probabilidad permitida depende del tiempo de servicio supuesto. Para un tiempo de servicio ilustrativo de una unidad SSD de 0,1 ms, la espera es más corta, pero sigue siendo de 100 000 ns: mil accesos de 100 ns.

Mantén marcos preparados

El sistema operativo intenta tener marcos preparados antes de que un fallo necesite uno. Un demonio de paginación en segundo plano, como kswapd de Linux, recupera memoria cuando los marcos libres caen por debajo de un umbral bajo. En el modelo básico de umbrales, continúa hasta alcanzar un umbral alto. Esto evita que cada fallo tenga que esperar a que se seleccione y prepare una víctima.

Conserva los cambios antes de reutilizar el marco

Una página modificada contiene cambios realizados desde que se borró por última vez el estado de modificación. Antes de reutilizar su marco, esos cambios deben conservarse si la página sigue formando parte de la memoria de un proceso. Su escritura diferida puede hacerse en segundo plano. Después de una escritura satisfactoria, la página residente puede marcarse como limpia; una escritura posterior vuelve a marcarla como modificada.

Una página limpia solo puede descartarse sin una nueva escritura cuando su contenido puede recuperarse o regenerarse. El código de programa no modificado puede volver a leerse del ejecutable. Una página con una copia actualizada en el espacio de intercambio puede leerse desde allí. Una página anónima limpia sin una copia recuperable no puede simplemente olvidarse. El bit de modificación por sí solo no demuestra que exista almacenamiento de respaldo.

Si un fallo debe expulsar de forma síncrona una página modificada, puede requerir una escritura de la víctima seguida de la lectura solicitada. Preferir una víctima limpia y recuperable evita esa escritura en la ruta crítica del fallo. La agrupación combina varias escrituras en transferencias más grandes, algo especialmente útil en discos.

Puntos clave

  • Convierte todos los valores de tiempo a una misma unidad antes de calcular el promedio.
  • Una probabilidad pequeña de fallo mayor puede dominar el tiempo de acceso efectivo.
  • Un demonio de paginación en segundo plano mantiene una reserva de marcos libres.
  • El estado de modificación registra las escrituras desde que se borró por última vez, no simplemente desde la carga.
  • Descartar una página limpia de forma segura requiere que su contenido pueda recuperarse o regenerarse.
  • La escritura diferida en segundo plano puede eliminar una escritura de la víctima de la ruta del fallo.

4.3 Inicialización a cero por demanda, código compartido y copia en escritura

Los fallos de página son puntos de control útiles para posponer trabajo. Un mapeo puede pertenecer a un proceso antes de que el sistema operativo le asigne un marco privado. Con la inicialización a cero por demanda, el primer acceso obtiene memoria llena de ceros. Esto evita asignar y poner a cero por adelantado todas las páginas reservadas. La inicialización a cero también impide que un proceso vea datos que dejó otro proceso.

El fallo no necesita una lectura del disco porque el contenido requerido son ceros, no bytes guardados. Es un fallo menor. Un sistema puede optimizar la implementación, pero el resultado visible sigue siendo que la memoria recién proporcionada tiene el contenido de ceros requerido.

Comparte código de solo lectura

Las tablas de páginas separadas no requieren copias separadas de todas las páginas. Dos PTE pueden contener el mismo PFN, incluso en direcciones virtuales distintas. Los procesos que ejecutan el mismo programa pueden compartir código de solo lectura. Cincuenta procesos que usan un editor pueden hacer referencia a una copia residente de cada página de código compartida. La protección de solo lectura impide que un proceso cambie esas instrucciones para todos.

Crea contenido privado al escribir

La copia en escritura (COW) permite compartir inicialmente páginas que más adelante pueden necesitar contenido privado. Después de fork(), el padre y el hijo tienen espacios de direcciones separados, pero pueden compartir sus marcos de datos privados ordinarios. El sistema operativo marca sus mapeos privados con permiso de escritura como de solo lectura y registra que son mapeos COW. Las lecturas se realizan sin copiar.

Cuando cualquiera de los dos procesos escribe por primera vez en una página COW compartida, la escritura infringe su protección actual y causa un fallo de página. El manejador reconoce el caso COW legítimo, asigna un marco privado, copia la página, instala un mapeo con permiso de escritura para el proceso que escribió y vuelve a intentar la instrucción. El otro proceso conserva el contenido original. El sistema operativo también debe hacer que las traducciones en caché concuerden con los mapeos modificados.

Para un proceso con 400 MiB de datos privados residentes, supón que su hijo escribe en tres páginas distintas de 4 KiB antes de llamar a exec(). Los datos copiados a causa de esas escrituras suman 12 288 bytes. Las escrituras repetidas en una página que ya es privada no causan una nueva copia de página completa cada vez. La creación de tablas de páginas y otras tareas de gestión del proceso siguen teniendo costes; COW evita copiar de inmediato los 400 MiB de datos.

Esto es especialmente útil cuando a fork() le sigue pronto exec(), que sustituye el espacio de direcciones del hijo. Copiar todos los datos antiguos inmediatamente realizaría un trabajo que el hijo podría no usar nunca. Los mapeos con permiso de escritura compartidos de forma intencional tienen una semántica distinta: COW describe los mapeos privados que deben separarse al escribir.

Una PTE de solo lectura por sí sola no indica que se use COW. Una escritura en código de programa realmente de solo lectura es un error; una escritura en una página de datos protegida por COW puede corregirse. Los registros de software distinguen los casos, por lo que la misma excepción de protección del hardware puede dar lugar a un reintento satisfactorio o a un fallo de segmentación.

Protege los mapeos del núcleo

Los mapeos del núcleo también usan protección. Un diseño tradicional mapea la memoria del núcleo en el espacio de direcciones de cada proceso con acceso exclusivo del supervisor, lo que permite entrar en el núcleo sin seleccionar un mapeo completamente distinto. El código en modo usuario no puede acceder a esas páginas solo porque tengan direcciones. El aislamiento de las tablas de páginas del núcleo, introducido en los sistemas afectados después de que Meltdown se hiciera público en 2018, elimina la mayoría de los mapeos del núcleo mientras se ejecuta código de usuario y cambia los mapeos al entrar en el núcleo.

Puntos clave

  • La memoria inicializada a cero por demanda no necesita una lectura del almacenamiento y no debe exponer datos antiguos.
  • Distintas tablas de páginas pueden mapear el mismo marco de código de solo lectura.
  • COW comparte datos privados hasta que una escritura requiere una copia privada.
  • El manejador usa registros de software para distinguir COW de una escritura prohibida.
  • COW evita copiar datos que un proceso hijo descarta poco después mediante exec.
5

Elige políticas de reemplazo de páginas y evita la hiperpaginación

Cuando una página necesaria no tiene un marco libre, el sistema operativo debe elegir qué retirar. Esa elección cambia las tasas de fallos futuras, pero incluso una buena política no puede mantener residentes todas las páginas activas cuando la demanda es demasiado alta. Compararás políticas con cadenas de referencias, usarás bits de hardware para aproximar el uso reciente y relacionarás el conjunto de trabajo de un proceso con la asignación de marcos. El último paso es reconocer cuándo la paginación repetida impide el progreso útil.

5.1 Recuento de fallos y búsqueda de la víctima óptima

Una política de reemplazo elige una página residente para expulsarla cuando una página necesaria no tiene un marco libre disponible. La memoria física actúa como caché del contenido de las páginas. La política intenta conservar páginas cuyo uso futuro evitará fallos costosos. Un fallo de reemplazo es un evento abstracto de residencia; que necesite entrada/salida depende de la procedencia del contenido ausente.

Registra aciertos y fallos

Compara políticas usando la misma cadena de referencias, el mismo número de marcos y el mismo estado inicial. Una cadena de referencias enumera números de página en orden de acceso. Para cada referencia, pregunta primero si la página está residente. Si lo está, registra un acierto. De lo contrario, registra un fallo, carga la página y expulsa una víctima solo si la memoria ya está llena.

Las primeras referencias son fallos incluso mientras quedan marcos libres. Estos fallos obligatorios no pueden evitarse eligiendo otra víctima. Los fallos posteriores causados por capacidad insuficiente son fallos por capacidad. El reemplazo de páginas no tiene conflictos de colocación: una página puede ocupar cualquier marco. Los fallos por conflicto pertenecen a cachés con colocación restringida, no a este modelo de marcos totalmente flexible.

Elige el uso futuro más lejano

La política óptima, OPT o MIN, elige la página cuyo próximo uso está más lejos en el futuro. Una página que nunca volverá a usarse es una víctima ideal. Esto produce el menor número de fallos para una cadena de referencias conocida, pero un sistema operativo en ejecución no puede conocer referencias futuras arbitrarias. OPT proporciona una referencia para las políticas prácticas.

Usa tres marcos inicialmente vacíos y la cadena 1, 2, 3, 1, 4, 1, 5, 2, 1, 4, 3, 1. Las tres primeras referencias llenan la memoria y fallan. La siguiente referencia a 1 acierta. En la referencia 5 llega la página 4: las páginas residentes 1, 2 y 3 se usarán de nuevo en las posiciones 6, 8 y 11, respectivamente. Expulsa la 3, cuyo próximo uso es el más lejano.

Después de que la referencia a 1 acierte, la página 5 llega en la posición 7. Las páginas residentes 1, 2 y 4 se usarán de nuevo en las posiciones 9, 8 y 10, respectivamente, por lo que OPT expulsa la 4. Las siguientes referencias a 2 y 1 aciertan. La referencia a la página 4 falla en la posición 10; puede expulsarse la 2 o la 5 porque ninguna vuelve a usarse. Después falla la referencia a la página 3 y se retira otra página sin uso futuro. La referencia final a 1 acierta.

Compara los totales y las cargas de trabajo

El seguimiento tiene 7 fallos y 5 aciertos. Contando las 12 referencias, la tasa de acierto es 5/12, aproximadamente el 41,7 %. Hay cinco páginas distintas y, por tanto, cinco fallos obligatorios. Si la tasa indicada excluye esos fallos, pasa a ser 5/7, aproximadamente el 71,4 %. Ambas tasas pueden describir el mismo seguimiento, por lo que siempre debes identificar el denominador.

Para no perderte, mantén la referencia actual separada de la secuencia futura. OPT compara el siguiente uso de cada página residente después de la posición actual; no elige la página con el número más alto ni la que se cargó primero. Si dos páginas no vuelven a usarse, cualquiera de las dos elecciones conserva la optimalidad.

Las cargas de trabajo influyen en cuánto importa la política. Cuando las referencias tienen la misma probabilidad para todas las páginas, el uso anterior ofrece poca orientación. Con localidad, un pequeño conjunto de páginas de uso frecuente recibe muchas referencias, y conservarlo mejora la tasa de acierto. La diferencia entre el número de fallos de una política práctica y el de OPT mide la mejora posible para esa carga de trabajo.

Puntos clave

  • Cuenta las cargas iniciales como fallos, incluso antes de cualquier expulsión.
  • OPT expulsa la página residente cuyo próximo uso está más lejos.
  • OPT es una referencia porque requiere conocer las referencias futuras.
  • El reemplazo de páginas tiene fallos por capacidad, pero no fallos por conflicto de colocación en marcos.
  • Indica si el denominador de la tasa de acierto incluye los fallos obligatorios.

5.2 FIFO, LRU y efectos de la carga de trabajo

FIFO expulsa la página que se cargó antes entre las residentes actuales. Una cola registra el orden de llegada. Un acierto no mueve la página al final de esa cola. Esto hace que FIFO sea fácil de mantener, pero puede expulsar una página que sigue usándose con frecuencia simplemente porque llegó hace mucho tiempo.

Registra el último uso en lugar de la llegada

LRU, reemplazo de la página menos recientemente utilizada, registra el uso más reciente de cada página residente. Ante un acierto, esa página pasa a ser la usada más recientemente; ante un fallo con la memoria llena, sale la página cuyo último uso es más antiguo. Esto sigue la localidad temporal: el uso reciente suele predecir el uso en un futuro próximo. El momento de llegada y el del último uso son historiales distintos.

El reemplazo aleatorio elige al azar una víctima residente sin mantener el orden de uso reciente. Su resultado varía entre ejecuciones. Puede evitar el patrón de fallo determinista de LRU en una carga de trabajo cíclica, pero también puede tomar decisiones desafortunadas. LFU, reemplazo de la página menos frecuentemente utilizada, registra recuentos en lugar del uso reciente. Sin envejecimiento, puede conservar una página que fue popular en una fase anterior del programa pero que ahora no se usa.

Sigue las políticas en la misma cadena

Compara tres marcos vacíos con 1, 2, 3, 1, 4, 1, 5, 2, 1, 4, 3, 1. Las páginas 1, 2 y 3 llenan primero la memoria. El acierto en 1 deja sin cambios el orden de FIFO, por lo que la llegada de 4 expulsa a 1. En cambio, LRU considera que 1 es reciente y expulsa a 2. Por tanto, la siguiente referencia a 1 falla con FIFO y acierta con LRU.

En LRU, los fallos posteriores expulsan a 3 para la página 5, a 4 para la página 2, a 5 para la página 4 y a 2 para la página 3. Termina con 8 fallos y 4 aciertos. FIFO produce 10 fallos y 2 aciertos. OPT produce 7 fallos en la misma cadena. LRU mejora a FIFO en este caso, pero no alcanza el óptimo que conoce el futuro.

Explica la anomalía de Belady

Más marcos no mejoran todas las políticas en todas las cadenas. La anomalía de Belady es un aumento de fallos cuando FIFO recibe más marcos. Para 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, FIFO tiene 9 fallos con tres marcos y 10 con cuatro. La capacidad adicional cambia las víctimas posteriores de la cola, por lo que sus conjuntos residentes no están necesariamente contenidos unos en otros.

LRU y OPT son algoritmos de pila: si los empates se resuelven de forma coherente, el conjunto residente con menos marcos está contenido en el conjunto con más marcos. Por tanto, aumentar la capacidad no puede convertir un acierto con menos memoria en un fallo con más memoria. LRU produce 10 fallos con tres marcos y 8 con cuatro en la cadena de la anomalía.

Reconoce cargas de trabajo desfavorables para el uso reciente

LRU sigue teniendo cargas de trabajo desfavorables. Recorre cíclicamente tres veces las páginas 1, 2, 3, 4 con tres marcos. Cada página nueva expulsa la que se necesitará a continuación y produce 12 fallos. OPT necesita 6. El reemplazo aleatorio puede conservar páginas útiles durante un ciclo y aquí funciona mejor en promedio. Un recorrido de una sola vez también puede expulsar un conjunto útil de páginas de uso frecuente de una caché LRU.

Una comparación de políticas debe incluir su carga de trabajo y el número de marcos. La localidad hace que el uso reciente sea útil en muchos programas, lo que motiva las aproximaciones de LRU en sistemas reales. Un bucle periódico que apenas supera la capacidad favorece otra elección; una ventaja observada en una cadena corta no establece una clasificación universal.

Puntos clave

  • Los aciertos de FIFO no cambian el orden de llegada; los de LRU sí cambian el orden de uso reciente.
  • LFU cuenta los usos, mientras que LRU registra cuándo ocurrió el último uso.
  • El reemplazo aleatorio varía entre ejecuciones y aun así puede elegir víctimas poco adecuadas.
  • FIFO puede presentar la anomalía de Belady.
  • Los conjuntos residentes de LRU y OPT quedan contenidos unos en otros al aumentar la capacidad.
  • Una carga de trabajo cíclica que apenas supera la capacidad puede hacer fallar a LRU.

5.3 Aproximación del uso reciente con una manecilla de reloj

LRU exacto necesita trabajo en cada referencia a memoria. Con marcas de tiempo, cada referencia actualiza una marca y la selección de la víctima busca la más antigua. Con una lista ordenada, la víctima está disponible al final, pero cada referencia debe mover su página al principio. Actualizar esta estructura por software en cada lectura y escritura sería demasiado costoso.

Lee el bit de uso

El hardware ofrece una señal más barata: el bit de uso, también llamado bit de acceso o de referencia. El hardware lo activa cuando se lee o escribe una página. El sistema operativo lo borra para comenzar otro intervalo de observación. Un bit activado significa al menos un uso desde la última vez que se borró; no es un recuento de frecuencia y no revela el orden exacto del último uso.

Busca una víctima

El algoritmo del reloj coloca los marcos en un círculo y mantiene una manecilla que apunta al siguiente candidato. Al reemplazar, examina el bit de uso del candidato. Si el bit es 1, la manecilla lo borra y avanza. Si el bit es 0, ese marco es la víctima. La nueva página entra con su bit de uso activado y la manecilla avanza más allá de ella. Un acierto activa el bit de la página referenciada sin mover la manecilla.

Supón que el círculo contiene A con bit 1, B con bit 0 y C con bit 1, y que la manecilla está en A. Un fallo en D borra el bit de A y avanza hasta B. B ya tiene el bit en 0, por lo que D reemplaza a B con el bit en 1 y la manecilla termina en C. Si la siguiente referencia es un fallo en E, la manecilla borra el bit de C, encuentra después el de A en 0 y reemplaza a A. Si se hubiera accedido a A entre esos fallos, su bit sería 1 y recibiría otra oportunidad.

Si todos los bits están en 1 y no intervienen nuevos accesos, una vuelta los borra todos. La manecilla expulsa entonces la página inicial cuando regresa a ella. Esa selección concreta se parece a la siguiente víctima de FIFO según el orden de llegada, pero el reloj generalmente sigue el historial de uso y la posición de la manecilla; no siempre equivale a FIFO.

Un seguimiento completo del reloj necesita una convención de inicialización. Aquí, los marcos vacíos se llenan en orden con el bit en 1; la manecilla permanece en el marco 0 hasta el primer reemplazo. Los aciertos activan los bits. Cada reemplazo hace avanzar la manecilla. Con esa convención, tres marcos para 1, 2, 3, 1, 4, 1, 5, 2, 1, 4, 3, 1 producen 10 fallos. Una cadena corta puede ocultar el beneficio de una aproximación del uso reciente; el reloj suele seguir bien la localidad en ejecuciones más largas.

Considera el coste de escritura y las variantes reales

El estado de modificación añade el coste de conservar una víctima. Una preferencia del reloj mejorado clasifica los pares (uso, modificación) como (0,0), (0,1), (1,0) y después (1,1). Esto favorece una página que no se ha usado recientemente ni tiene cambios sin guardar. Las implementaciones difieren en cómo borran bits durante los recorridos y programan las escrituras. La escritura diferida en segundo plano puede limpiar una candidata modificada antes de que el reemplazo la necesite.

Los sistemas reales usan variantes más elaboradas. VAX/VMS colocaba las páginas retiradas en listas de páginas limpias o modificadas para que un proceso pudiera recuperar una antes de que se reutilizara su marco. Linux ha usado listas activas e inactivas y ofrece LRU multigeneracional, que agrupa las páginas según el uso reciente observado. Estos sistemas usan información del hardware para orientar las decisiones del sistema operativo; el bit de uso del hardware no elige por sí mismo una víctima.

Puntos clave

  • Mantener los registros de LRU exacto en cada referencia es costoso.
  • Un bit de uso registra cualquier uso desde que se borró, no un recuento.
  • El reloj borra un 1 y avanza; expulsa una página cuyo bit encuentra en 0.
  • Los aciertos activan los bits de uso, pero no mueven la manecilla del reloj.
  • Las páginas limpias y sin uso reciente son buenas víctimas para el reloj mejorado.
  • Indica la inicialización y el movimiento de la manecilla al seguir el algoritmo del reloj.

5.4 Conjuntos de trabajo, asignación de marcos e hiperpaginación

La hiperpaginación ocurre cuando los procesos pasan la mayor parte del tiempo cargando páginas en memoria a causa de fallos y expulsando páginas que volverán a necesitar pronto. El dispositivo de almacenamiento permanece ocupado mientras cae la utilización de la CPU, aunque los programas aún tengan trabajo por hacer. Una carga baja de CPU por sí sola no identifica la hiperpaginación; la pista es la combinación de paginación intensa y escaso progreso.

La causa es una demanda de memoria superior a los marcos disponibles. Un proceso necesita que un conjunto útil de páginas esté residente para completar su fase actual. Si los conjuntos activos de varios procesos no caben juntos, sus fallos desplazan repetidamente páginas útiles. Iniciar aún más procesos puede empeorar esta presión aunque la CPU parezca poco utilizada.

Estima la demanda actual de páginas

El conjunto de trabajo, escrito W(t,Δ), estima las necesidades actuales de un proceso. En el modelo de ventana de referencias, es el conjunto de páginas distintas de las últimas Δ referencias que terminan en el instante t. Cuenta cada página una sola vez, aunque aparezca varias veces en la ventana. El tamaño del conjunto de trabajo es un número de páginas, no el número de referencias.

Con una ventana de 5 y la cadena 1, 2, 1, 3, 2, 1, 4, 5, 4, 5, 4, 6, 5, 4, examina el estado después de la referencia 6. Las últimas cinco referencias son 2, 1, 3, 2, 1, lo que da {1, 2, 3}, de tamaño 3. Después de la referencia 8 la ventana es 3, 2, 1, 4, 5, lo que da un tamaño de 5. Después de la referencia 11 es 4, 5, 4, 5, 4, lo que da un tamaño de 2. La demanda alcanza temporalmente un máximo mientras se solapan las fases antigua y nueva.

Controla la demanda activa y la asignación

Una ventana corta puede omitir páginas que aún se necesitan; una demasiado larga puede incluir páginas de una fase terminada. El modelo del conjunto de trabajo de Peter Denning relaciona estas necesidades cambiantes con la asignación. Una política de conjunto de trabajo ejecuta procesos solo cuando sus conjuntos de trabajo combinados caben en memoria. Si no caben, suspende uno o más procesos y libera sus marcos. Esto es control de admisión.

El control de la frecuencia de fallos de página (PFF) usa las tasas de fallos medidas. Por encima de un umbral superior, un proceso necesita más marcos. Por debajo de un umbral inferior, algunos marcos pueden reasignarse. Si un proceso necesita marcos y no hay ninguno disponible, puede ser necesario suspender un proceso. Dos umbrales reducen los ajustes continuos alrededor de un único límite.

Con reemplazo global, un fallo puede expulsar una página de otro proceso. Esto se adapta con flexibilidad a la demanda cambiante, pero permite que un proceso aumente los fallos de otro. Con reemplazo local, las víctimas proceden solo de la asignación del proceso que causa el fallo. Esto limita las interferencias, pero no puede ayudar a un proceso que tiene demasiado pocos marcos asignados sin cambiar la asignación.

Elige soluciones para la presión sobre la memoria

Las soluciones útiles reducen la demanda o aumentan la capacidad: ejecutar menos programas, añadir memoria física o mejorar la localidad, por ejemplo, recorriendo los arreglos en el orden de almacenamiento. Un intercambio más rápido reduce el coste de cada fallo mayor; no hace que un conjunto activo demasiado grande quepa en memoria. Sustituir un disco por una unidad SSD puede mejorar el progreso sin eliminar la causa.

Bajo una presión extrema, el mecanismo de terminación por falta de memoria de Linux puede terminar un proceso seleccionado cuando la recuperación y el intercambio no logran liberar suficiente memoria. La selección usa una puntuación basada en el uso de memoria y ajustes de política, no simplemente la identidad del proceso más grande. La memoria puede recuperarse cuando el proceso termina, y su trabajo se pierde. Esta es una liberación de recursos de último recurso, distinta de suspender un proceso para que pueda reanudarse más tarde.

Puntos clave

  • La hiperpaginación combina una paginación intensa con poco progreso útil.
  • Un conjunto de trabajo cuenta las páginas distintas de una ventana reciente.
  • El control de admisión limita los procesos activos a los que la memoria puede sostener.
  • PFF ajusta la asignación de marcos usando umbrales superior e inferior de la tasa de fallos.
  • El reemplazo global permite expulsar páginas de otros procesos; el local aísla la selección de víctimas.
  • Un intercambio más rápido reduce la demora, pero no aumenta la capacidad de marcos.
  • La terminación por falta de memoria hace perder el trabajo de un proceso; la suspensión puede conservarlo.

Ejemplos de Paginación y memoria virtual

5 Lecciones Interactivas

1

Traduce una dirección virtual paso a paso

11 pasos
Divide una dirección, localiza su PTE, aplica las restricciones del mapeo y calcula la dirección física final del byte.
  1. 1
    IntroducciónDe una dirección a un byte

    Una instrucción de lectura indica una dirección virtual de byte. Los propios bytes están en marcos físicos, y la tabla de páginas del proceso actual conecta ambos. Sigue una dirección a través de la división, la búsqueda de la entrada y el acceso final.

    Mantén separadas dos preguntas: ¿dónde está la entrada que describe esta página y dónde está el byte que necesita la instrucción? Ambas son direcciones, pero apuntan a objetos distintos.

  2. 2
    ExplicaciónLas páginas pueden moverse sin cambiar las direcciones del programa

    Una página es una parte de tamaño fijo de la memoria virtual; un marco es una parte del mismo tamaño de la memoria física. La página 0 podría ocupar el marco 15 mientras la página 1 ocupa el marco 2.

    El programa sigue viendo direcciones virtuales consecutivas a través de esas páginas. Cualquier página cabe en cualquier marco libre, por lo que el sistema operativo no necesita un único hueco físico grande para todo un proceso.

  3. 3
    EjemploSepara la página de su desplazamiento

    Usa páginas de 2 KiB y la dirección virtual 11 600. Cada página contiene 2048 bytes. Cinco páginas completas suman 10 240 bytes, por lo que esta dirección pertenece al VPN 5.

    Los 1360 bytes restantes dan su desplazamiento. En binario, los 11 bits inferiores contienen ese desplazamiento porque una página tiene 211 posiciones de byte. Los bits superiores identifican la página virtual.

  4. 4
    EjemploMide el espacio asignado sin usar

    Una región necesita 10 700 bytes y usa páginas de 2 KiB. Cinco páginas solo contienen 10 240 bytes, por lo que necesita seis páginas. Su capacidad total es de 12 288 bytes.

    Resta el tamaño útil de la región para obtener 1588 bytes sin usar dentro de la asignación. Esto es fragmentación interna. Los marcos libres en otros lugares no forman parte de ese desperdicio; los bytes sin usar están dentro de una página asignada.

  5. 5
    DesafíoPrueba otra división de dirección

    Con páginas de 8 KiB, un proceso hace referencia a la dirección virtual 25 100. ¿Qué VPN y desplazamiento identifican este byte?

    ---reveal---

    Tres páginas suman 24 576 bytes, lo que deja un desplazamiento de 524. El VPN es 3 y el desplazamiento es 524. El desplazamiento debe ser menor que 8192; ese límite ayuda a detectar un error de cociente o resta antes de traducir la página.

  6. 6
    ExplicaciónEncuentra la entrada antes que los datos

    En una tabla de páginas lineal, el VPN indexa un arreglo propio de cada proceso. Si su base es la dirección física 20 000 y las entradas tienen 8 bytes, la PTE 5 comienza en 20 040.

    Multiplicar por el tamaño de entrada localiza la información del mapeo. No localiza el byte solicitado por el programa. La entrada debe proporcionar un número de marco físico y permitir la operación solicitada antes de que el procesador pueda formar la dirección de los datos.

  7. 7
    Idea claveComprueba el estado del mapeo

    Una página puede pertenecer a un proceso sin estar residente. También puede estar residente y prohibir una operación determinada. La presencia y los permisos responden a preguntas distintas.

    El modelo didáctico asigna funciones separadas a la validez, la presencia y la protección. x86 no proporciona un bit de validez independiente; cuando un mapeo de hardware no está presente, los registros del sistema operativo distinguen entre espacio de intercambio, asignación diferida y una dirección sin usar.

  8. 8
    EjemploTermina la traducción

    Vuelve a la dirección virtual 11 600 con páginas de 2 KiB: VPN 5, desplazamiento 1360. Supón que la PTE 5 permite la lectura, está presente e indica el marco 14.

    El marco 14 comienza en el byte 28 672. Al sumar el desplazamiento sin cambios se obtiene la dirección física de byte 30 032. La PTE en 20 040 nos da este resultado; no es la dirección desde la que el programa lee sus datos.

  9. 9
    DesafíoElige la dirección final correcta

    Con páginas de 1 KiB, la dirección virtual 3250 se mapea mediante una PTE presente y con los permisos necesarios al marco 11. ¿Qué dirección física se obtiene? Explica qué parte permanece sin cambios.

    ---reveal---

    La dirección tiene VPN 3 y desplazamiento 178. El marco 11 comienza en 11 264, por lo que el resultado es 11 442. El desplazamiento sigue siendo 178 porque una página y su marco tienen las mismas posiciones internas de bytes.

  10. 10
    DesafíoRelaciona la división con el tamaño de la tabla

    Un sistema tiene direcciones virtuales de 24 bits, páginas de 4 KiB y entradas de tabla lineal de 8 bytes. ¿Cuánta memoria ocupa la tabla completa?

    ---reveal---

    El desplazamiento usa 12 bits, por lo que quedan 12 bits de VPN y 4096 entradas. Al multiplicar por ocho se obtienen 32 768 bytes, o 32 KiB. La tabla sigue conteniendo entradas para páginas sin usar; asignar pocos marcos de datos no reduce este arreglo lineal completo.

  11. 11
    RepasoInterpreta los dos cálculos de direcciones

    Usa el VPN para localizar una entrada de mapeo, comprueba su estado y usa su PFN para localizar un marco. Después lleva el desplazamiento original a ese marco.

    El tamaño de entrada determina el avance por la tabla; el tamaño de página determina el avance por los marcos físicos. Mantener visibles esas unidades permite que el mismo método funcione con direcciones decimales, direcciones hexadecimales y distintos tamaños de página.

2

Usa la TLB sin perder corrección

12 pasos
Sigue aciertos, fallos, localidad, etiquetas de contexto, invalidación y cobertura de la TLB.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónPor qué la traducción repetida puede ser rápida
  2. 2
    ExplicaciónUn acierto ahorra una búsqueda en la tabla
  3. 3
    Idea claveUn fallo puede resolverse por completo en memoria
  4. 4
    EjemploCuenta los fallos de un arreglo recorrido secuencialmente
  5. 5
    EjemploCalcula un promedio a partir de los casos completos
  6. 6
    DesafíoAplica la localidad a una segunda pasada
  7. 7
    ExplicaciónElige quién realiza la recarga
  8. 8
    EjemploEtiqueta las traducciones por espacio de direcciones
  9. 9
    ConexiónUn cambio de tabla necesita invalidar la caché
  10. 10
    DesafíoCalcula la cobertura de traducción
  11. 11
    DesafíoSepara un problema de capacidad de uno de corrección
  12. 12
    RepasoSigue tanto el rendimiento como la corrección
3

Recorre tablas de páginas más pequeñas

14 pasos
Compara organizaciones de tablas, sigue un ejemplo de dos niveles y deduce tablas más profundas y mapeos de páginas grandes.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónUsa menos memoria para los mapeos
  2. 2
    ExplicaciónPregunta qué describe una entrada
  3. 3
    ConexiónCompara dos formas de evitar el desperdicio
  4. 4
    DesafíoComprueba un recuento de tabla invertida
  5. 5
    ExplicaciónDivide el VPN en dos índices
  6. 6
    EjemploLee la entrada del directorio
  7. 7
    EjemploSigue el puntero físico hasta la entrada final
  8. 8
    DesafíoCuenta las tablas asignadas para mapeos dispersos
  9. 9
    ExplicaciónDeduce una jerarquía más profunda
  10. 10
    Idea claveTen presente el ancho implementado
  11. 11
    EjemploPermite que una entrada del directorio mapee los datos
  12. 12
    DesafíoCalcula otro número de niveles
  13. 13
    DesafíoEvalúa una propuesta de página grande
  14. 14
    RepasoCuenta por separado el espacio y el trabajo de búsqueda
4

Gestiona fallos y pospone el trabajo innecesario

14 pasos
Restaura una página del espacio de intercambio, estima su coste y aplica la inicialización a cero por demanda y la copia en escritura.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónEspera el contenido y vuelve a intentar
  2. 2
    ExplicaciónInterpreta un mapeo no presente
  3. 3
    EjemploLocaliza la página guardada
  4. 4
    EjemploInstala el mapeo y reanuda la ejecución
  5. 5
    DesafíoDistingue dos tipos de fallos
  6. 6
    EjemploConvierte el coste antes de calcular el promedio
  7. 7
    ExplicaciónPrepara víctimas antes de que los fallos las necesiten
  8. 8
    Idea claveComprueba si una página limpia es recuperable
  9. 9
    DesafíoAñade la escritura de la víctima a la ruta crítica
  10. 10
    ExplicaciónProporciona ceros solo cuando se necesiten
  11. 11
    ExplicaciónComparte páginas privadas hasta que se escriba
  12. 12
    DesafíoCuenta las páginas copiadas, no las instrucciones de escritura
  13. 13
    DesafíoDeduce la causa a partir del comportamiento del fallo
  14. 14
    RepasoUsa los fallos para proporcionar el contenido correcto
5

Compara víctimas y evita la hiperpaginación

20 pasos
Sigue políticas, ejecuta la manecilla del reloj, estima conjuntos de trabajo y elige soluciones para la paginación excesiva.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónMantén residentes las páginas útiles
  2. 2
    ConsejoFija las condiciones de la simulación
  3. 3
    EjemploElige una víctima con conocimiento del futuro
  4. 4
    EjemploTermina el seguimiento de referencia
  5. 5
    DesafíoEncuentra la parte inevitable
  6. 6
    ExplicaciónUsa el orden de llegada para FIFO
  7. 7
    EjemploUsa el último acceso para LRU
  8. 8
    Idea claveEvita suponer que el uso reciente siempre predice la reutilización
  9. 9
    DesafíoInterpreta un resultado con un marco adicional
  10. 10
    ExplicaciónSustituye el orden exacto por una señal de uso
  11. 11
    EjemploToma una decisión con el reloj
  12. 12
    DesafíoDa otra oportunidad a una página usada recientemente
  13. 13
    ConexiónTen en cuenta las víctimas modificadas
  14. 14
    ExplicaciónReconoce la presión sobre la memoria que bloquea el progreso
  15. 15
    EjemploCuenta un conjunto de trabajo en un cambio de fase
  16. 16
    ExplicaciónAsigna según la demanda o los síntomas de fallos
  17. 17
    DesafíoDistingue el aislamiento de la capacidad
  18. 18
    ConexiónElige una solución que cambie la causa
  19. 19
    DesafíoRelaciona los conjuntos de trabajo con el reemplazo
  20. 20
    RepasoRelaciona los seguimientos con el sistema en ejecución

Ejercicios de Paginación y memoria virtual

50 Preguntas de Práctica en 5 sets

Set 1: Práctica 1: Construye el modelo de paginación10 Preguntas de Práctica

Pregunta 1 de 10

¿Cuántos bits de desplazamiento requiere una página de 8 KiB?
  1. 10 bits
  2. 13 bits
  3. 12 bits
  4. 16 bits
Mostrar respuestaOcultar respuesta
Respuesta: B
Una página de 8 KiB contiene 8192 posiciones de byte, por lo que sus desplazamientos van de 0 a 8191 y requieren 13 bits. Doce bits seleccionan solo 4096 posiciones, lo suficiente para una página de 4 KiB. El ancho de la dirección determina los bits restantes del VPN, no el ancho del desplazamiento para este tamaño de página.

Pregunta 2 de 10

Con páginas de 2048 bytes, la dirección virtual 7300 tiene un mapeo presente y con los permisos necesarios al marco 6. ¿A qué dirección física de byte llega el acceso?
  1. 7300
  2. 14 336
  3. 13 290
  4. 13 444
Mostrar respuestaOcultar respuesta
Respuesta: D
La página virtual es la 3 y el desplazamiento es 1156, ya que tres páginas suman 6144 bytes. El marco 6 comienza en 12 288, lo que da la dirección física 13 444. Usar el número de página virtual original dejaría la dirección sin cambios e ignoraría el mapeo al marco 6.

Pregunta 3 de 10

¿Qué debe comprobarse todavía cuando una escritura encuentra su traducción en la TLB?
  1. Si los permisos en caché permiten la escritura
  2. Si la página tiene un segundo marco libre
  3. Si los datos también están guardados en la TLB
  4. Si la tabla de páginas tiene un nuevo índice lineal
Mostrar respuestaOcultar respuesta
Respuesta: A
Una entrada de la TLB contiene permisos de acceso además del número de marco, por lo que un acierto debe seguir permitiendo la escritura solicitada. Encontrar una traducción no concede acceso sin restricciones. La TLB contiene información de mapeo; los datos del programa pueden estar en otro lugar de la jerarquía de memoria.

Pregunta 4 de 10

Una TLB de 128 entradas mapea páginas de 4 KiB. ¿Cuál es su cobertura?
  1. 32 KiB
  2. 128 KiB
  3. 512 KiB
  4. 4 MiB
Mostrar respuestaOcultar respuesta
Respuesta: C
Cada entrada cubre una página de 4 KiB, por lo que 128 entradas representan 512 KiB de memoria. El número de entradas por sí solo no es una capacidad en bytes. Una cobertura de 4 MiB requeriría ocho veces más cobertura de traducción con este tamaño de página; no puede deducirse de la cantidad de RAM instalada.

Pregunta 5 de 10

Un espacio completo de direcciones virtuales de 30 bits usa páginas de 4 KiB y entradas de tabla lineal de 8 bytes. ¿Cuánta memoria ocupa una tabla?
  1. 256 KiB
  2. 1 MiB
  3. 8 MiB
  4. 2 MiB
Mostrar respuestaOcultar respuesta
Respuesta: D
Al quitar los 12 bits de desplazamiento quedan 18 bits de VPN, lo que da 262 144 entradas. Ocho bytes por entrada suman 2 097 152 bytes, o 2 MiB. El resultado de 256 KiB cuenta las entradas como si cada una ocupara un byte; el almacenamiento de la tabla debe incluir el tamaño real de cada entrada.

Pregunta 6 de 10

Un sistema de dos niveles usa páginas de 4 KiB y entradas de 4 bytes en ambos niveles. Un proceso mapea páginas en exactamente cinco regiones del directorio. ¿Cuánta memoria ocupan su directorio y sus tablas de nivel inferior?
  1. 20 KiB
  2. 40 KiB
  3. 24 KiB
  4. 4 MiB
Mostrar respuestaOcultar respuesta
Respuesta: C
Cada región ocupada del directorio necesita una tabla de nivel inferior de 4 KiB y el proceso también necesita su directorio de 4 KiB. Seis páginas de tabla suman 24 KiB. Contar solo las cinco tablas de nivel inferior da 20 KiB y omite la raíz que permite acceder a esas tablas.

Pregunta 7 de 10

A una página válida se le proporciona un marco lleno de ceros en el primer acceso, sin ninguna lectura del almacenamiento. ¿Qué tipo de fallo de página ocurrió?
  1. Un fallo de página menor
  2. Un fallo de página mayor
  3. Un acierto de TLB
  4. Un fallo de segmentación
Mostrar respuestaOcultar respuesta
Respuesta: A
El sistema operativo reparó el mapeo sin leer contenido de página del almacenamiento, por lo que es un fallo menor. Un fallo mayor requiere una lectura del almacenamiento. Proporcionar memoria llena de ceros es una solución legítima de un fallo de página; la excepción por sí sola no significa que el proceso haya realizado un acceso no válido.

Pregunta 8 de 10

Un acceso ordinario tarda 80 ns; el servicio total de un fallo mayor tarda 2 ms. Si una referencia de cada 10 000 causa un fallo mayor, ¿cuál es el tiempo de acceso efectivo en el modelo de dos casos?
  1. 80,02 ns
  2. 279,992 ns
  3. 199,992 ns
  4. 2079,992 ns
Mostrar respuestaOcultar respuesta
Respuesta: B
Convierte 2 ms a 2 000 000 ns y usa la probabilidad de fallo 0,0001. El promedio es 0,9999×80+0,0001×2000000=279,992 ns. El valor de 199,992 ns omite la contribución de la referencia ordinaria, mientras que usar milisegundos como si fueran nanosegundos subestima el coste del fallo.

Pregunta 9 de 10

Con dos marcos inicialmente vacíos, OPT procesa 2, 7, 2, 9, 7, 2. ¿Cuántos fallos ocurren, incluidos los primeros usos?
  1. 3 fallos
  2. 5 fallos
  3. 4 fallos
  4. 6 fallos
Mostrar respuestaOcultar respuesta
Respuesta: C
Las primeras referencias a 2 y 7 fallan y después la referencia a 2 acierta. En 9, OPT expulsa a 2 porque 7 se necesita antes; la referencia a 7 acierta y la referencia final a 2 falla, lo que da cuatro fallos. Tres es solo el número de páginas distintas y omite el fallo posterior por capacidad cuando vuelve la página 2.

Pregunta 10 de 10

Con tres marcos inicialmente vacíos, OPT procesa 6, 1, 4, 6, 8, 1, 9, 6, 4. ¿Cuáles son su número total de fallos y su tasa de acierto después de excluir los fallos obligatorios?
  1. 6 fallos; 75 % de aciertos
  2. 5 fallos; 100 % de aciertos
  3. 6 fallos; 33,3 % de aciertos
  4. 7 fallos; 50 % de aciertos
Mostrar respuestaOcultar respuesta
Respuesta: A
Las cinco páginas distintas causan cinco fallos obligatorios; OPT también falla cuando 4 vuelve al final, lo que da seis fallos en total. Los aciertos son la cuarta, sexta y octava referencias. Al excluir cinco referencias obligatorias quedan cuatro referencias y tres aciertos, por lo que el 75 % es correcto; el 33,3 % usa las nueve referencias.
Set 2: Práctica 2: Sigue búsquedas y fallos10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Una región de 17 500 bytes usa páginas de 8 KiB. ¿Cuántos bytes quedan sin usar en sus páginas asignadas?
  1. 1116 bytes
  2. 8192 bytes
  3. 7076 bytes
  4. 15 268 bytes
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

En una tabla lineal con entradas de 8 bytes, ¿dónde está la PTE 11 con respecto a la base de la tabla?
  1. 88 bytes después de la base
  2. 11 bytes después de la base
  3. 19 bytes después de la base
  4. 80 bytes después de la base
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Un arreglo alineado con un límite de página contiene 6144 valores de cuatro bytes. Se lee una vez en orden con páginas de 8 KiB, una TLB vacía y sin referencias que interfieran. ¿Cuántos fallos de TLB ocurren?
  1. 6 fallos
  2. 12 fallos
  3. 6144 fallos
  4. 3 fallos
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Una página de tabla tiene 4096 bytes y cada entrada tiene 8 bytes. ¿Cuántos bits seleccionan una entrada?
  1. 8 bits
  2. 9 bits
  3. 10 bits
  4. 12 bits
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Una máquina hipotética usa direcciones virtuales de 39 bits, páginas de 4 KiB y entradas de 8 bytes en tablas del tamaño de una página. ¿Cuántos niveles se necesitan?
  1. 3 niveles
  2. 2 niveles
  3. 4 niveles
  4. 5 niveles
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Se completa la lectura de una página del espacio de intercambio y el manejador instala un mapeo presente. ¿Qué debe ocurrir con la instrucción que causó el fallo?
  1. Se omite para que continúe la ejecución
  2. Se vuelve a intentar con el mapeo reparado
  3. Se sustituye por una nueva llamada al sistema
  4. Se completa con el número del bloque de intercambio
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Después de fork, un proceso hijo escribe en cinco páginas COW compartidas distintas de 4 KiB cada una y después vuelve a escribir en la primera de esas páginas. ¿Cuántos datos de página se copian para estas escrituras?
  1. 4 KiB
  2. 24 KiB
  3. 20 KiB
  4. 40 KiB
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Con tres marcos inicialmente vacíos, procesa 4, 8, 2, 4, 6, 8, 4 con FIFO y LRU. ¿Cuáles son sus números totales de fallos?
  1. FIFO: 6; LRU: 5
  2. FIFO: 5; LRU: 6
  3. FIFO: 6; LRU: 6
  4. FIFO: 5; LRU: 5
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

El reloj tiene los marcos A(1), B(1), C(0), D(1), con la manecilla en B. Un fallo carga E. ¿Cuál es el resultado del reemplazo, incluida la nueva posición de la manecilla?
  1. Sale B; E tiene el bit 1; la manecilla apunta a C
  2. Sale C; E tiene el bit 1; la manecilla apunta a D
  3. Sale C; E tiene el bit 0; la manecilla apunta a D
  4. Sale D; E tiene el bit 1; la manecilla apunta a A
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Tres procesos tienen conjuntos de trabajo de 7, 5 y 4 páginas. Solo hay 12 marcos disponibles. Si el control de admisión suspende exactamente un proceso completo y minimiza el número de páginas de conjuntos de trabajo retiradas, ¿cuál debe suspender y cuántos marcos quedan libres?
  1. Suspender el proceso de 5 páginas; sobra 1 marco
  2. Suspender el proceso de 7 páginas; sobran 3 marcos
  3. No suspender ningún proceso; sobran 4 marcos
  4. Suspender el proceso de 4 páginas; sobran 0 marcos
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 3: Práctica 3: Combina los mecanismos10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Un espacio de direcciones virtuales de 28 bits tiene páginas de 16 KiB y entradas de 8 bytes en una tabla lineal completa. ¿Cuál es el tamaño de la tabla?
  1. 64 KiB
  2. 128 KiB
  3. 256 KiB
  4. 2 MiB
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

El sistema operativo elimina el permiso de escritura de un mapeo que dos núcleos pueden tener en caché. ¿Qué estado almacenado en caché debe actualizar?
  1. Invalidar solo los bytes de datos en ambos núcleos
  2. Invalidar la traducción solo en el núcleo que escribe
  3. Invalidar la traducción desactualizada en ambos núcleos
  4. Sustituir los identificadores de espacio de direcciones de todos los procesos
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Una tabla invertida cubre 8 GiB de memoria física usando marcos de 8 KiB. ¿Cuántas entradas necesita?
  1. 1 048 576 entradas
  2. 262 144 entradas
  3. 2 097 152 entradas
  4. 8 388 608 entradas
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Un sistema de dos niveles de 32 bits usa páginas de 4 KiB y entradas de 4 bytes. El directorio comienza en la dirección física 0x3000. Un acceso permitido usa la dirección virtual 0x01407120; su PDE contiene el PFN 0x52 y su PTE contiene el PFN 0x9C. ¿Cuáles son la dirección de la PDE, la dirección de la PTE y la dirección final de los datos?
  1. 0x3005, 0x52007, 0x9C120
  2. 0x3014, 0x5201C, 0x52120
  3. 0x301C, 0x52014, 0x9C120
  4. 0x3014, 0x5201C, 0x9C120
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Un fallo mayor necesita una lectura de página de 0,15 ms. Si la víctima seleccionada está modificada, primero se requiere una escritura síncrona de 0,20 ms. Si se ignoran todas las demás sobrecargas, ¿cuánto más lento es este fallo que uno que usa una víctima limpia con contenido recuperable?
  1. 0,20 ms más lento
  2. 0,05 ms más lento
  3. 0,15 ms más lento
  4. 0,35 ms más lento
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

¿Por qué debe contener ceros una página recién proporcionada mediante inicialización a cero por demanda antes de que el proceso la lea?
  1. Para que la dirección virtual de la página coincida con su número de marco
  2. Para asegurar que la página ya tenga una copia guardada en intercambio
  3. Para impedir que el procesador active alguna vez su bit de modificación
  4. Para impedir que se expongan datos que dejó otro proceso
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un seguimiento de 20 referencias comienza con la memoria vacía, accede a ocho páginas distintas y registra 13 fallos. ¿Qué tasa de acierto tiene después de excluir los fallos obligatorios?
  1. 7/20, o 35 %
  2. 12/20, o 60 %
  3. 7/12, aproximadamente 58,3 %
  4. 7/13, aproximadamente 53,8 %
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Una simulación de LRU con dos marcos comienza vacía con 9, 3, 9, 7, 3, 9, 7. ¿Cuántos fallos hay y puede una simulación de LRU con tres marcos tener más fallos en esta misma cadena?
  1. 5 fallos; más marcos no pueden añadir fallos
  2. 6 fallos; más marcos no pueden añadir fallos
  3. 6 fallos; más marcos pueden añadir fallos
  4. 7 fallos; más marcos pueden añadir fallos
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

El reloj comienza lleno con A(1), B(0), C(1) y la manecilla en A. Las referencias son D, A, E, con D y E inicialmente ausentes; los aciertos activan los bits y los reemplazos activan el nuevo bit y hacen avanzar la manecilla. ¿Cuáles son el contenido final de los marcos en su orden original y la posición de la manecilla?
  1. E, D, C; manecilla en B
  2. A, E, D; manecilla en B
  3. E, D, C; manecilla en C
  4. A, D, E; manecilla en A
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Después de la referencia 9 en 2, 6, 2, 8, 6, 9, 9, 6, 4, ¿cuál es el conjunto de trabajo para una ventana de cinco referencias?
  1. {4, 6, 9}
  2. {2, 4, 6, 8, 9}
  3. {4, 6, 8, 9}
  4. {4, 9}
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 4: Práctica 4: Analiza costes y patrones de acceso10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Una dirección virtual de 34 bits usa páginas de 8 KiB. ¿Cuántos bits de VPN y cuántas páginas virtuales tiene el espacio de direcciones?
  1. 13 bits de VPN; 213 páginas
  2. 22 bits de VPN; 222 páginas
  3. 21 bits de VPN; 234 páginas
  4. 21 bits de VPN; 221 páginas
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un arreglo de C alineado con un límite de página tiene 128 filas y 1024 enteros de cuatro bytes por fila. Una TLB LRU de 64 entradas comienza vacía; las páginas son de 4 KiB y solo se cuentan las referencias al arreglo. ¿Cuántos fallos de TLB ocurren en un recorrido por filas y en uno por columnas?
  1. Filas: 128; columnas: 131 072
  2. Filas: 128; columnas: 128
  3. Filas: 1024; columnas: 131 072
  4. Filas: 131 072; columnas: 128
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Los procesos A y B usan ambos el VPN 12, mapeado a marcos distintos. Sus entradas de TLB llevan ASID diferentes. ¿Por qué pueden permanecer ambas entradas en caché durante un cambio de contexto?
  1. La búsqueda compara el PFN y los permisos en caché
  2. La búsqueda compara el ASID actual junto con el VPN
  3. La búsqueda compara solo el VPN tras actualizar la raíz de la tabla
  4. La búsqueda compara solo el ASID actual entre todas sus páginas
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Un sistema de dos niveles de 32 bits tiene páginas de 4 KiB y entradas de 4 bytes. El proceso A mapea 1024 páginas consecutivas a partir de la dirección virtual cero. El proceso B mapea 1024 páginas, una en cada región del directorio. ¿Cuánta memoria de tabla necesita cada uno, incluido su directorio?
  1. A: 4 KiB; B: 4 MiB
  2. A: 8 KiB; B: 8 KiB
  3. A: 8 KiB; B: 4 MiB + 4 KiB
  4. A: 4 MiB; B: 4 MiB + 4 KiB
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

En la paginación x86-64 de cuatro niveles, sustituye una región alineada de 2 MiB totalmente cubierta por mapeos de 4 KiB por un mapeo de 2 MiB. Supón que las tablas superiores siguen siendo necesarias para otros mapeos. ¿Cuántas páginas de tabla final y lecturas de recorrido por fallo de TLB se eliminan para esa región?
  1. 512 páginas de tabla; una lectura de recorrido
  2. Una página de tabla; dos lecturas de recorrido
  3. Una página de tabla; una lectura de recorrido
  4. 512 páginas de tabla; dos lecturas de recorrido
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Una referencia falla en la TLB, pero su PTE está presente y permite el acceso. ¿Obtener esta traducción requiere un fallo de página mayor?
  1. Sí; cada recarga de TLB lee la página del intercambio
  2. No; la traducción puede cargarse sin leer del almacenamiento
  3. Sí; el fallo de TLB borra el bit de presencia
  4. No; el acceso termina sin comprobar permisos
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Las referencias ordinarias tardan 120 ns y las referencias que causan fallos mayores tardan 3 ms en total. ¿Qué probabilidad máxima de fallo mayor mantiene el promedio en 150 ns o menos en el modelo de dos casos?
  1. 150/3000000=5,0×10−5
  2. 30/3000120≈1,0×10−5
  3. 120/3000000=4,0×10−5
  4. 30/2999880≈1,0×10−5
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Compara tres marcos inicialmente vacíos con 5, 2, 8, 5, 1, 2, 5, 8 usando LRU y OPT. ¿Cuántos fallos produce cada uno?
  1. LRU: 6; OPT: 5
  2. LRU: 7; OPT: 5
  3. LRU: 6; OPT: 6
  4. LRU: 7; OPT: 6
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Un recorrido del reloj mejorado compara X con (uso, modificación) = (0,1) e Y con (1,0). Según la preferencia estándar de clases, ¿qué página se prefiere y qué coste puede requerir conservarla?
  1. Y; conservarla puede requerir una escritura
  2. X; su bit de uso en cero elimina la necesidad de escribir
  3. X; conservarla puede requerir una escritura
  4. Y; su bit de modificación en cero demuestra que no se usó
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Dos procesos necesitan seis páginas cada uno para progresar, pero reciben ocho marcos en total. Una solución propuesta cambia el reemplazo global por reemplazo local y da cuatro marcos a cada uno. ¿Por qué puede seguir sin resolverse la hiperpaginación?
  1. Cada asignación sigue siendo menor que el conjunto de trabajo de su proceso
  2. El reemplazo local hace que cada asignación sea permanentemente fija
  3. Ocho marcos bastan cuando cada página tiene un propietario diferente
  4. Ambos procesos siguen eligiendo víctimas de un conjunto global
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 5: Práctica 5: Aplica y diagnostica10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Con páginas de 8 KiB, la dirección virtual 0x00012345 tiene un mapeo presente y con los permisos necesarios al PFN 0x2D. ¿Qué dirección física se obtiene?
  1. 0x0005A345
  2. 0x0002D345
  3. 0x0005B345
  4. 0x00012345
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Dos diseños no añaden tiempo por la búsqueda en la TLB y no tienen fallos de página ni cachés de recorrido. La memoria tarda 90 ns. El diseño L tiene una tabla lineal y un 95 % de aciertos de TLB; el diseño H tiene una tabla de cuatro niveles y un 99 % de aciertos. ¿Cuáles son sus tiempos medios por referencia?
  1. L: 94,5 ns; H: 90,9 ns
  2. L: 85,5 ns; H: 89,1 ns
  3. L: 94,5 ns; H: 93,6 ns
  4. L: 99 ns; H: 97,2 ns
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Con un ancho fijo de dirección virtual, una tabla lineal pasa de páginas de 4 KiB y entradas de 8 bytes a páginas de 16 KiB y entradas de 16 bytes. ¿Cómo cambia su tamaño total en bytes?
  1. Pasa a tener una cuarta parte del tamaño
  2. Pasa a tener la mitad del tamaño
  3. Mantiene el mismo tamaño
  4. Pasa a tener el doble del tamaño
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Un sistema hipotético usa 46 bits de dirección virtual implementados, páginas de 8 KiB y entradas de 8 bytes en tablas del tamaño de una página. Los índices inferiores se llenan hasta su capacidad. ¿Cuántos niveles se necesitan y cuántos bits de índice quedan para la raíz?
  1. Tres niveles; 10 bits de índice de raíz
  2. Cuatro niveles; 6 bits de índice de raíz
  3. Cinco niveles; 3 bits de índice de raíz
  4. Cuatro niveles; 3 bits de índice de raíz
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Una página modificada se escribe correctamente mientras permanece residente. Ningún proceso escribe en ella después. ¿Cuál es su estado y puede otra referencia usarla sin cargarla de nuevo?
  1. Modificada y residente; sí
  2. Limpia y residente; sí
  3. Limpia y no residente; no
  4. Modificada y no residente; no
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Los procesos A, B y C comparten inicialmente dos páginas de datos privados de 4 KiB mediante COW. A escribe en ambas páginas, después B escribe en la primera y luego C escribe en la segunda. Un manejador reutiliza un marco original solo cuando tiene un único propietario. ¿Cuánta memoria física adicional para páginas requieren estas escrituras?
  1. 16 KiB
  2. 12 KiB
  3. 20 KiB
  4. 24 KiB
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un seguimiento de referencias usa siete páginas distintas y comienza con la memoria vacía. ¿Cuántos fallos obligatorios debe contener?
  1. 0 fallos obligatorios
  2. 6 fallos obligatorios
  3. 7 fallos obligatorios
  4. 14 fallos obligatorios
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Dos simulaciones de FIFO inicialmente vacías procesan 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, 1, con tres y cuatro marcos. ¿Cuáles son los números de fallos y muestra la asignación mayor la anomalía de Belady en esta cadena completa?
  1. Tres: 9; cuatro: 10; sí
  2. Tres: 10; cuatro: 10; no
  3. Tres: 11; cuatro: 10; no
  4. Tres: 10; cuatro: 11; sí
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

El reloj tiene los marcos R(1), S(1), T(1), con la manecilla en S. No ocurren aciertos mientras busca una víctima. ¿Qué página se expulsa y dónde termina la manecilla después del reemplazo?
  1. Se expulsa R; la manecilla termina en S
  2. Se expulsa S; la manecilla termina en T
  3. Se expulsa T; la manecilla termina en R
  4. Se expulsa S; la manecilla termina en S
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

En un instante, los procesos A y B tienen las ventanas de referencias 7, 4, 7, 9, 4, 7 y 2, 8, 2, 5, 8, 2. El tamaño de la ventana es seis y sus conjuntos de páginas no tienen elementos en común. Tienen cinco marcos en total. ¿Qué deduce una política de admisión basada en conjuntos de trabajo?
  1. La demanda es de doce marcos; acortar automáticamente ambas ventanas
  2. La demanda es de cinco marcos; ambos conjuntos de trabajo ya caben
  3. La demanda es de seis marcos; reducir el conjunto de procesos activos
  4. La demanda es de tres marcos; ambos procesos pueden compartir todos los marcos
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

¿Te atascas con una pregunta tuya? Ayuda con Tareas

Términos Clave

79 Términos Clave, cada uno con su definición

A

Agrupación de transferencias de páginas
La agrupación de transferencias de páginas reúne transferencias de páginas en operaciones de almacenamiento mayores, lo que reduce la sobrecarga de muchas transferencias pequeñas separadas, especialmente en discos.
Un demonio de paginación puede combinar varias escrituras de páginas modificadas mientras prepara marcos para reutilizarlos más adelante.
Aislamiento de las tablas de páginas del núcleo (KPTI)
El aislamiento de las tablas de páginas del núcleo separa la mayoría de los mapeos del núcleo de los usados durante la ejecución en modo usuario y cambia el contexto de mapeo al entrar en el núcleo.
En los sistemas afectados, el aislamiento reduce la exposición a Meltdown a costa de trabajo adicional para cambiar los mapeos.
Algoritmo de pila
Un algoritmo de pila tiene conjuntos residentes contenidos unos en otros al aumentar la capacidad de marcos, lo que garantiza que los marcos adicionales no aumenten su número de fallos.
LRU y OPT tienen la propiedad de pila, aunque LRU todavía puede producir más fallos que OPT.
Algoritmo del reloj mejorado
El algoritmo del reloj mejorado incorpora el estado de modificación a la selección de víctimas de segunda oportunidad, de modo que importan tanto el historial de acceso como el coste de conservar el contenido.
Una página cuyos bits de uso y de modificación son ambos 0, la clase preferida (0,0), no tiene uso reciente registrado ni cambios pendientes de escritura diferida.
Anomalía de Belady
La anomalía de Belady es un aumento de los fallos de página cuando una política recibe más marcos para la misma cadena de referencias y las mismas condiciones iniciales.
FIFO puede presentar la anomalía; la capacidad adicional cambia sus elecciones posteriores de víctimas según el orden de llegada.

B

Bit de modificación
Un bit de modificación registra si se ha escrito en una página desde que se borró por última vez su estado de modificación, lo que ayuda a identificar cambios sin guardar.
Después de completar la escritura diferida, el sistema operativo puede borrar el estado de modificación mientras la página permanece residente.
Bit de presencia
Un bit de presencia indica al hardware si una entrada proporciona un mapeo residente; un bit desactivado requiere que el software determine el estado de la página.
Un bit de presencia desactivado puede llevar al manejador a los metadatos de intercambio o a una asignación inicializada a cero por demanda.
Bit de uso (bit de referencia)
Un bit de uso registra si se ha accedido a una página desde que el sistema operativo borró el bit por última vez; no cuenta los accesos.
Diez lecturas después de borrarlo dejan el mismo valor de bit que una lectura: el bit de uso es 1.
Bits de protección
Los bits de protección especifican las operaciones permitidas en un mapeo, como lectura, escritura, ejecución y acceso desde modo usuario.
Una página de código residente puede rechazar una escritura aunque su número de marco esté disponible.
Búfer de traducción adelantada (TLB)
Un búfer de traducción adelantada es una caché de hardware rápida de traducciones recientes de páginas virtuales y su información de acceso.
El acceso secuencial a muchos enteros de una página puede reutilizar una sola traducción de la TLB almacenada en caché.

C

Caché de estructuras de paginación
Una caché de estructuras de paginación conserva información intermedia de la tabla de páginas para que los recorridos posteriores puedan evitar repetir algunas búsquedas de niveles superiores.
Un fallo de TLB de cuatro niveles puede costar menos de cuatro demoras de memoria principal cuando las entradas intermedias están en caché.
Cadena de referencias
Una cadena de referencias es una secuencia ordenada de números de página usada para simular aciertos, fallos y elecciones de víctimas de una política de reemplazo.
La misma cadena de referencias y los mismos marcos iniciales permiten comparar FIFO y LRU en condiciones iguales.
Cobertura de la TLB
La cobertura de la TLB es la cantidad de memoria representada por un conjunto de traducciones en caché, calculada multiplicando el número de entradas por el tamaño de página.
Sesenta y cuatro entradas representan 256 KiB con páginas de 4 KiB, suponiendo que cada entrada mapea ese tamaño de página.
Conjunto de trabajo
Un conjunto de trabajo es el conjunto de páginas distintas que un proceso usó dentro de una ventana reciente de referencias, y estima sus necesidades residentes actuales.
Para la ventana de cinco referencias 4, 5, 4, 5, 4, el conjunto de trabajo es {4, 5}, de tamaño dos.
Control de admisión
El control de admisión limita el conjunto de procesos activos para que los marcos disponibles puedan sostener su demanda de memoria y suspende procesos cuando es necesario.
Si los conjuntos de trabajo activos superan la capacidad, suspender un proceso puede permitir que los procesos restantes progresen.
Control de la frecuencia de fallos de página
El control de la frecuencia de fallos de página ajusta la asignación de marcos de un proceso mediante umbrales superior e inferior sobre su tasa de fallos medida.
Un proceso por encima del umbral superior necesita más marcos; uno por debajo del umbral inferior puede liberar algunos.
Copia en escritura
La copia en escritura comparte inicialmente el contenido de páginas privadas y crea una copia privada con permiso de escritura cuando un proceso escribe por primera vez en una página compartida.
Un proceso hijo que cambia solo tres páginas de 4 KiB puede evitar copiar toda la región de datos del padre.

D

Demonio de paginación
Un demonio de paginación es un trabajador del sistema operativo en segundo plano que recupera memoria y prepara marcos libres antes de que los necesiten las asignaciones urgentes.
kswapd de Linux puede comenzar a recuperar páginas mientras todavía queda una pequeña reserva de marcos libres.
Desplazamiento dentro de la página
Un desplazamiento dentro de la página es la posición de byte dentro de una página, codificada en los bits inferiores de la dirección y conservada durante la traducción.
Un desplazamiento de 904 sigue identificando el byte 904 después de mapear la página al marco físico 9.
Dirección canónica
Una dirección canónica es una dirección x86-64 cuyos bits superiores no utilizados repiten el bit implementado más alto de la dirección virtual.
En el modo ordinario de cuatro niveles, los bits por encima del bit 47 deben repetirlo para que la dirección sea canónica.
Directorio de páginas
Un directorio de páginas es una tabla de nivel superior cuyas entradas localizan páginas de tablas de páginas de nivel inferior o marcan sus regiones como ausentes.
En un sistema 10/10/12, una entrada del directorio cubre una región virtual que contiene 1024 páginas de datos.

E

Entrada de la tabla de páginas (PTE)
Una entrada de la tabla de páginas es un registro de mapeo que contiene un número de marco físico e información de estado o protección para una página virtual.
El procesador comprueba una entrada de la tabla de páginas antes de usar su número de marco para completar una traducción.
Entrada del directorio de páginas
Una entrada del directorio de páginas es un registro que apunta a una tabla inferior y contiene el estado o los permisos de la región virtual que representa.
El número de marco de una PDE no final localiza una página de PTE, no el marco de datos final del programa.
Escritura diferida
La escritura diferida conserva en el almacenamiento de respaldo el contenido modificado de una página residente, lo que permite borrar su estado de modificación cuando se completa correctamente.
Escribir una página no requiere expulsarla de inmediato; el proceso puede seguir usando el marco.
Espacio de direcciones disperso
Un espacio de direcciones disperso tiene grandes regiones virtuales sin usar entre áreas mapeadas, como el hueco entre el montículo y la pila de un proceso.
El gran hueco virtual no necesita marcos de datos solo porque existan direcciones a ambos lados.
Espacio de intercambio
El espacio de intercambio es un área de almacenamiento reservada para conservar el contenido de páginas desplazadas de la memoria física, como un archivo o una partición de intercambio.
Un manejador de fallos puede leer los bytes de una página desplazada desde su ubicación registrada en el espacio de intercambio a un marco libre.
Esquema híbrido de segmentación y paginación
Un esquema híbrido de segmentación y paginación proporciona a cada segmento una tabla de páginas con límite y omite las entradas para los huecos virtuales entre segmentos.
Las tablas separadas del montículo y la pila ahorran entradas para el hueco, pero pueden requerir asignaciones de tablas de distintos tamaños.

F

Fallo de la TLB
Un fallo de la TLB ocurre cuando no se encuentra en la caché de traducciones una traducción utilizable para una página virtual y un contexto solicitados.
Un fallo de TLB puede resolverse a partir de una PTE presente sin leer ningún contenido de página del espacio de intercambio.
Fallo de página
Un fallo de página es una excepción que se genera cuando un acceso a memoria no puede completarse con su mapeo actual, por ausencia o por una violación de protección.
El manejador puede reparar un fallo de escritura COW, pero rechazar una escritura en código de programa realmente de solo lectura.
Fallo de página mayor
Un fallo de página mayor requiere una lectura del almacenamiento para obtener el contenido de la página antes de que el sistema operativo pueda completar el mapeo.
Leer una página de datos del espacio de intercambio desde una unidad SSD sigue siendo un fallo mayor aunque la unidad sea rápida.
Fallo de página menor
Un fallo de página menor se resuelve sin leer el contenido de la página del almacenamiento, por ejemplo, proporcionando memoria inicializada a cero o mapeando un marco residente.
Una asignación inicializada a cero por demanda puede aumentar el recuento de fallos menores sin causar tráfico de intercambio.
Fallo de segmentación
Un fallo de segmentación es una respuesta habitual del sistema operativo a un acceso a memoria no válido o prohibido que el manejador no puede reparar legítimamente.
Un fallo de TLB en una página presente y con los permisos necesarios no causa por sí solo un fallo de segmentación.
Fallo obligatorio
Un fallo obligatorio es un fallo de primer uso en una página que aún no se ha cargado y que no puede evitarse cambiando la política de selección de víctimas.
Un seguimiento que comienza vacío y accede a cinco páginas distintas tiene cinco fallos obligatorios.
Fallo por capacidad
Un fallo por capacidad ocurre cuando la capacidad limitada de marcos impide conservar una página hasta que una referencia posterior vuelva a necesitarla.
Una página que vuelve a usarse puede fallar aunque se cargara antes, porque otra página reutilizó su marco.
Fragmentación interna
La fragmentación interna es el espacio asignado que queda sin usar dentro de un bloque de tamaño fijo, como la página final parcialmente llena de una región.
Una región de 9000 bytes en tres páginas de 4 KiB deja 3288 bytes asignados sin usar.

H

Hiperpaginación
La hiperpaginación es un movimiento intenso y sostenido de páginas con poca ejecución útil porque los procesos activos necesitan más páginas residentes de las que caben en memoria.
Una utilización baja de la CPU junto con paginación constante puede indicar que iniciar más procesos empeoraría la presión.

I

Identificador de espacio de direcciones (ASID)
Un identificador de espacio de direcciones etiqueta las traducciones en caché con su contexto de espacio de direcciones para distinguir VPN idénticos de distintos procesos.
Los ASID distintos permiten que dos traducciones de la página virtual 7 coexistan de forma segura en la misma TLB.
Inicialización a cero por demanda
La inicialización a cero por demanda proporciona memoria llena de ceros en el primer uso en lugar de asignar y poner a cero por adelantado todas las páginas reservadas.
Una página del montículo a la que se accede por primera vez puede proporcionarse sin una lectura de disco y sin mostrar los bytes antiguos de un marco reutilizado.
Invalidación coordinada de las TLB
Una invalidación coordinada de las TLB coordina la invalidación entre los núcleos del procesador que puedan tener en caché un mapeo modificado por el sistema operativo.
Eliminar el permiso de escritura requiere que los otros núcleos dejen de usar cualquier traducción anterior que permita escribir.
Invalidación de la TLB
Una invalidación de la TLB marca como no válidas las traducciones en caché incluidas en su alcance, lo que obliga a recargarlas en referencias posteriores a partir de la información de mapeo actual.
Invalidar la TLB en un cambio de contexto impide que el siguiente proceso use una traducción sin etiqueta.

Í

Índice de la tabla
Un índice de la tabla es el campo del VPN que selecciona una entrada dentro de la tabla de nivel inferior localizada por la entrada anterior del directorio.
El índice de tabla 3 localiza una PTE 12 bytes después de la base de su tabla cuando las entradas ocupan cuatro bytes.
Índice del directorio
Un índice del directorio es el campo superior del VPN que selecciona una entrada del directorio de páginas durante una traducción jerárquica de direcciones.
Los diez bits superiores seleccionan la entrada 2 del directorio para la dirección virtual 0x00803ABC en el esquema 10/10/12.

L

Localidad espacial
La localidad espacial es la tendencia a acceder a direcciones cercanas en momentos próximos, lo que permite que una traducción de página sirva para muchas referencias.
Leer elementos adyacentes de un arreglo suele producir muchos aciertos de TLB después del primer elemento de una página.
Localidad temporal
La localidad temporal es la tendencia a reutilizar direcciones a las que se ha accedido recientemente, lo que hace útil el historial reciente de traducciones para la caché.
Un bucle corto ejecuta repetidamente código en las mismas pocas páginas y puede reutilizar sus mapeos en caché.
LRU multigeneracional
El LRU multigeneracional es un enfoque de recuperación de páginas de Linux que agrupa páginas según el uso reciente observado para orientar la expulsión bajo presión sobre la memoria.
El envejecimiento basado en generaciones da al código de recuperación más información sobre uso reciente que un solo bit de uso sin envejecimiento.

M

Manecilla del reloj
Una manecilla del reloj marca el siguiente marco que se examinará durante el reemplazo por reloj y avanza a medida que se borran bits de las candidatas o estas se reemplazan.
Después de que el reloj reemplaza la página de un marco, la manecilla del reloj avanza al siguiente marco del anillo.
Mapeo exclusivo del supervisor
Un mapeo exclusivo del supervisor permite el acceso privilegiado del núcleo mientras deniega las referencias ordinarias desde modo usuario a la memoria mapeada.
Una lectura desde modo usuario de una página del núcleo exclusiva del supervisor se rechaza incluso cuando el mapeo está presente.
Marco de página
Un marco de página es un bloque de tamaño fijo de memoria física que puede contener una página virtual del tamaño correspondiente.
El sistema operativo puede usar cualquier marco libre de 4 KiB para contener una página de 4 KiB que acaba de necesitarse.
Mecanismo de terminación por falta de memoria
Un mecanismo de terminación por falta de memoria termina un proceso seleccionado bajo presión extrema para que su memoria pueda recuperarse cuando finalice.
El proceso terminado pierde su trabajo, mientras que los recursos liberados pueden permitir que otros procesos continúen.

N

Número de marco físico
Un número de marco físico identifica un marco por su índice en la memoria física, en lugar de por la dirección de byte donde comienza el marco.
Para páginas de 4 KiB, el número de marco físico 3 identifica el marco que comienza en la dirección de byte 12 288.
Número de página virtual
Un número de página virtual es la parte superior de una dirección virtual que identifica qué página virtual contiene el byte solicitado.
Con páginas de 1024 bytes, la dirección virtual 5000 tiene número de página virtual 4 y desplazamiento 904.

P

Página
Una página es un bloque de tamaño fijo de direcciones virtuales que se mapea como una unidad a un marco físico del mismo tamaño.
Una página virtual de 4 KiB puede ocupar el marco 12 aunque la siguiente página virtual ocupe el marco 3.
Página de código compartida
Una página de código compartida es una página física de instrucciones de programa mapeada como de solo lectura en el espacio de direcciones de más de un proceso.
Varias instancias de un editor pueden usar una copia residente de la misma página de código mediante distintas PTE.
Página grande
Una página grande es un mapeo mayor que el tamaño de página base que puede terminar un recorrido jerárquico en una entrada de nivel superior.
Una entrada de directorio x86-64 puede mapear directamente una página de 2 MiB y omitir la búsqueda en la tabla inferior.
Página limpia
Una página limpia no tiene cambios pendientes según el seguimiento de su estado de modificación; descartarla de forma segura sigue requiriendo que su contenido pueda recuperarse o regenerarse.
El código no modificado puede descartarse y volver a cargarse después desde su ejecutable sin una nueva escritura.
Página víctima
Una página víctima es una página residente seleccionada para su expulsión, de modo que su marco físico pueda reutilizarse para el contenido de otra página.
OPT elige la víctima residente con el próximo uso más lejano en la cadena futura conocida.
Paginación de cinco niveles
La paginación de cinco niveles añade un nivel superior de tabla en los procesadores x86-64 compatibles y permite 57 bits de dirección virtual implementados cuando se selecciona.
Activar el nivel adicional añade otro índice de nueve bits antes de los cuatro índices inferiores habituales.
Paginación por demanda
La paginación por demanda proporciona una página cuando una referencia la requiere por primera vez, evitando la necesidad de preparar todas las páginas antes de que comience la ejecución.
Un programa puede comenzar a ejecutarse mientras las páginas a las que aún no ha accedido siguen sin tener contenido residente.
PML4
Una PML4 es la tabla de nivel superior en la paginación x86-64 de cuatro niveles, seleccionada mediante CR3 e indexada por los bits 47–39 de la dirección virtual.
La entrada de la PML4 conduce a una tabla de punteros a directorios antes de que el recorrido llegue a los niveles de directorio y final.
Precarga
La precarga proporciona páginas antes de que se demanden, usando un patrón de acceso previsto para reducir la espera posterior por el contenido de las páginas.
La lectura anticipada puede ayudar a un patrón de acceso secuencial, pero desperdicia recursos si las páginas previstas no se usan.

R

Recorrido de la tabla de páginas
Un recorrido de la tabla de páginas sigue entradas de mapeo indexadas desde la raíz seleccionada hasta una entrada final que identifica la página física solicitada.
Un recorrido de dos niveles lee una PDE y una PTE antes de que el procesador acceda a los datos solicitados.
Reemplazo aleatorio
El reemplazo aleatorio elige al azar una víctima residente, evita ordenar por uso reciente y produce resultados distintos entre ejecuciones.
Las elecciones aleatorias pueden superar a LRU en promedio en un ciclo que excede la capacidad, pero una ejecución puede ser desafortunada.
Reemplazo de la página menos frecuentemente utilizada (LFU)
El reemplazo LFU selecciona la página con la menor frecuencia de acceso contabilizada, lo que puede favorecer páginas que fueron populares hace mucho tiempo.
Sin envejecimiento, una página antes muy usada puede permanecer mientras se expulsa una página útil de una nueva fase.
Reemplazo de la página menos recientemente utilizada (LRU)
El reemplazo LRU expulsa la página residente cuyo acceso más reciente es el más antiguo y actualiza el orden de uso reciente cuando una referencia acierta.
Un acierto en una página que llegó hace tiempo la protege con LRU, aunque siga siendo antigua en la cola de FIFO.
Reemplazo FIFO
El reemplazo FIFO expulsa la página residente que se cargó antes y mantiene el orden de llegada sin actualizarlo ante los aciertos.
Una página usada con frecuencia puede ser aun así la víctima de FIFO si llegó antes que todas las demás páginas residentes.
Reemplazo global
El reemplazo global permite que un proceso que causa un fallo expulse una página perteneciente a otro proceso, compartiendo el conjunto de marcos de forma flexible.
Un proceso que crece puede aumentar la tasa de fallos de otro al tomar marcos que contenían sus páginas.
Reemplazo local
El reemplazo local limita la selección de víctimas a la propia asignación de marcos del proceso que causa el fallo y reduce las expulsiones entre procesos.
Una asignación de cuatro marcos sigue sin poder contener un conjunto de trabajo de seis páginas solo porque el reemplazo sea local.
Reemplazo óptimo
El reemplazo óptimo expulsa la página que se necesitará más lejos en el futuro y produce el mínimo número de fallos para una cadena de referencias completamente conocida.
OPT es una referencia de simulación porque un sistema operativo no puede conocer los accesos futuros de un programa arbitrario.
Reemplazo por reloj
El reemplazo por reloj recorre un círculo de marcos, borra los bits de uso activados y expulsa la primera candidata que encuentra con el bit desactivado.
Una página con el bit de uso en 1 recibe otra oportunidad cuando la manecilla borra su bit y avanza.

T

Tabla de páginas
Una tabla de páginas es una estructura gestionada por el sistema operativo que registra los mapeos de direcciones virtuales a físicas de un proceso y la información de acceso.
Cambiar la tabla de páginas actual permite que dos procesos usen la misma dirección virtual para datos distintos.
Tabla de páginas con hash
Una tabla de páginas con hash localiza registros de mapeo mediante un hash de la identidad de la página virtual y aplica un tratamiento adicional cuando las claves colisionan.
Una búsqueda mediante hash puede encontrar un mapeo de proceso y VPN sin examinar todas las entradas de una estructura invertida.
Tabla de páginas invertida
Una tabla de páginas invertida tiene una entrada por marco físico para el sistema y registra la identidad del espacio de direcciones y la página virtual que lo ocupa.
Con 16 GiB de RAM y marcos de 4 KiB, una tabla invertida estricta tiene 4 194 304 entradas de marcos.
Tabla de páginas lineal
Una tabla de páginas lineal es un arreglo con una entrada para cada página virtual posible que usa el número de página virtual como índice.
Una tabla lineal completa de 32 bits con páginas de 4 KiB y entradas de 4 bytes ocupa 4 MiB por proceso.
Tabla de páginas multinivel
Una tabla de páginas multinivel es una jerarquía de tablas indexadas que asigna ramas de nivel inferior solo donde los mapeos de direcciones las necesitan.
Un intervalo virtual sin usar puede representarse mediante una rama ausente en lugar de miles de entradas finales sin usar.
Tiempo de acceso efectivo
El tiempo de acceso efectivo es el tiempo medio de las referencias a memoria ponderado por sus probabilidades según un modelo especificado de costes de aciertos, fallos o fallos de página.
Una tasa de acierto de TLB del 98 % da 102 ns cuando los aciertos tardan 100 ns y los fallos resueltos tardan 200 ns.
TLB gestionada por hardware
Una TLB gestionada por hardware se rellena mediante el hardware del procesador, que recorre un formato de tabla de páginas definido por hardware cuando falta una traducción.
Un fallo ordinario de TLB en x86 puede gestionarse sin entrar en un manejador de recarga del sistema operativo.
TLB gestionada por software
Una TLB gestionada por software usa un manejador de excepciones del sistema operativo para encontrar una traducción ausente e instalarla mediante instrucciones privilegiadas.
Un manejador de recarga clásico de MIPS retorna para que el procesador pueda volver a intentar la instrucción que falló.

U

Umbral de memoria libre
Un umbral de memoria libre es un límite de memoria libre usado para activar o limitar la recuperación en segundo plano, de modo que el sistema mantenga una reserva de marcos.
Cuando la memoria libre cae por debajo de un umbral bajo, se inicia el trabajo de recuperación para alcanzar un objetivo más alto de marcos libres.
Unidad de gestión de memoria (MMU)
Una unidad de gestión de memoria es hardware del procesador que traduce direcciones y aplica permisos de mapeo durante las referencias a memoria.
La MMU puede rechazar una escritura mediante una traducción de solo lectura incluso cuando la búsqueda en la TLB acierta.

Sobre esta unidad

Por StudeliInformar de un error

Crea tus propios Materiales de Estudio

Convierte tus notas, diapositivas y documentos en Guías de Estudio, Preguntas de Práctica, Flashcards y 6 herramientas más.

Comenzar