
Administración
de la Memoria




-
Introducción
al Almacenamiento Real
-
Organización
y Administración del Almacenamiento
-
Organización
del Almacenamiento
-
Administración
del Almacenamiento
-
Jerarquía
de Almacenamiento
-
Estrategias
de Administración del Almacenamiento
-
Asignación
Contigua de Almacenamiento Versus No Contigua
-
Asignación
Contigua de Almacenamiento de Un Solo Usuario
-
Multiprogramación
de Partición Fija
-
Multiprogramación
de Partición Fija: Traducción y Carga Absolutas
-
Multiprogramación
de Partición Fija: Traducción y Carga Relocalizables
-
Protección
en los Sistemas de Multiprogramación
-
Fragmentación
en la Multiprogramación de Partición Fija
-
Multiprogramación
de Partición Variable
-
Compresión
o Compactación de Almacenamiento
-
Estrategias de
Colocación del Almacenamiento
-
Multiprogramación
con Intercambio de Almacenamiento
-
Introducción
a la Organización del Almacenamiento Virtual
-
Conceptos Básicos
de Almacenamiento Virtual
-
Organización
del Almacenamiento de Niveles Múltiples
-
Transformación
de Bloques
-
Conceptos Básicos
de Paginación
-
Traducción
de Direcciones de Paginación por Transformación Directa
-
Traducción
de Direcciones de Paginación por Transformación Asociativa
-
Traducción
de Direcciones de Paginación por Combinación de Transformación
Asociativa / Directa
-
Compartimiento
de Recursos en un Sistema de Paginación
-
Segmentación
-
Control de Acceso
en Sistemas de Segmentación
-
Traducción
de Direcciones de Segmentación por Transformación Directa
-
Compartimiento
en un Sistema de Segmentación
-
Sistemas de
Paginación / Segmentación
-
Traducción
Dinámica de Direcciones en Sistemas de Paginación / Segmentación
-
Compartimiento
en un Sistema de Paginación / Segmentación
-
Estrategias
de Administración del Almacenamiento Virtual
-
Estrategias
de Reposición de Página
-
El Principio
de Optimización
-
Reposición
de Página al Azar
-
Reposición
de Página por el Sistema de Primero en Entrar - Primero en Salir
(FIFO)
-
Reposición
de Página Menos - Recientemente - Usada (LRU)
-
Reposición
de Página Menos - Frecuentemente - Usada (LFU)
-
Reposición
de Página No Usada - Recientemente (NUR)
-
Localidad
-
Conjuntos de
Trabajo
-
Paginación
por Demanda y Paginación Anticipada
-
Paginación
por Demanda
-
Paginación
Anticipada
-
Liberación
de Página y Tamaño de Página
-
Liberación
de Página
-
Tamaño
de Página
-
Comportamiento
de un Programa en la Paginación
-
Fin
Introducción al Almacenamiento
Real
La organización y administración de la “memoria principal
”, “memoria primaria” o “memoria real” de un sistema
ha sido y es uno de los factores más importantes en el diseño
de los S. O. [7, Deitel].
Los términos “memoria” y “almacenamiento” se consideran
equivalentes.
Los programas y datos deben estar en el almacenamiento principal para:
-
Poderlos ejecutar.
-
Referenciarlos directamente.
Se considera “almacenamiento secundario” o “almacenamiento auxiliar”
al generalmente soportado en discos.
Los hechos demuestran que generalmente los programas crecen en requerimientos
de memoria tan rápido como las memorias:
-
“Ley de Parkinson parafraseada”: Los programas se desarrollan para ocupar
toda la memoria disponible para ellos.
La parte del S. O. que administra la memoria se llama “administrador
de la memoria”:
-
Lleva un registro de las partes de memoria que se están utilizando
y de aquellas que no.
-
Asigna espacio en memoria a los procesos cuando estos la necesitan.
-
Libera espacio de memoria asignada a procesos que han terminado.
Inicio:
Fin:
Organización
y Administración del Almacenamiento
Organización del Almacenamiento
Históricamente el almacenamiento principal se ha considerado
como un recurso costoso, por lo cual su utilización debía
optimizarse [7, Deitel].
Por organización del almacenamiento se entiende la manera de
considerar este almacenamiento:
-
¿ se coloca un solo programa de usuario o varios ?.
-
Si se encuentran varios programas de usuario:
-
¿ se concede a cada uno la misma cantidad de espacio o se divide
el almacenamiento en porciones o “particiones” de diferente tamaño
?.
-
¿ se utilizará un esquema rígido de número
y tamaño de particiones o un esquema dinámico y adaptable
?.
-
¿ se requerirá que los trabajos de los usuarios sean diseñados
para funcionar en una partición específica o se permitirá
que se ejecuten en cualquiera donde quepan ?.
-
¿ se requerirá o no que cada trabajo sea colocado en un bloque
contiguo de memoria ?.
Inicio:
Fin:
Administración del
Almacenamiento
Independientemente del esquema de organización hay que decidir
las estrategias que se utilizarán para optimizar el rendimiento.
Las “estrategias de administración” deben considerar:
-
¿ cuándo se consigue un nuevo programa para colocar en la
memoria ?:
-
¿ cuando el sistema lo pide específicamente o se intenta
anticiparse a las peticiones ?.
-
¿ dónde se colocará el programa que se ejecutará
a continuación ?:
-
¿ se prioriza el tiempo de carga o la optimización en el
uso del almacenamiento ?.
-
¿ con qué criterio se desplazarán programas ?.
Inicio:
Fin:
Jerarquía
de Almacenamiento
Los programas y datos tienen que estar en la memoria principal para
poder ejecutarse o ser referenciados [7, Deitel].
Los programas y datos que no son necesarios de inmediato pueden mantenerse
en el almacenamiento secundario.
El almacenamiento principal es más costoso y menor que el secundario
pero de acceso más rápido.
Los sistemas con varios niveles de almacenamiento requieren destinar
recursos para administrar el movimiento de programas y datos entre niveles
(ver Figura 3.1 [7, Deitel]).

Un nivel adicional es el “caché” o memoria de alta
velocidad, que posee las siguientes características:
-
Es más rápida y costosa que la memoria principal.
-
Impone al sistema un nivel más de traspaso:
-
Los programas son traspasados de la memoria principal al caché antes
de su ejecución.
-
Los programas en la memoria caché ejecutan mucho más rápido
que en la memoria principal.
-
Al utilizar memoria caché se espera que:
-
La sobrecarga que supone el traspaso de programas de un nivel de memoria
a otro sea mucho menor que la mejora en el rendimiento obtenida por la
posibilidad de una ejecución mucho más rápida en la
caché.
Inicio:
Fin:
Estrategias
de Administración del Almacenamiento
Están dirigidas a la obtención del mejor uso posible del
recurso del almacenamiento principal [7, Deitel].
Se dividen en las siguientes categorías:
-
Estrategias de búsqueda:
-
Estrategias de búsqueda por demanda.
-
Estrategias de búsqueda anticipada.
-
Estrategias de colocación.
-
Estrategias de reposición.
Las “estrategias de búsqueda” están relacionadas con
el hecho de cuándo obtener el siguiente fragmento de programa o
de datos para su inserción en la memoria principal.
En la “búsqueda por demanda” el siguiente fragmento de
programa o de datos se carga al almacenamiento principal cuando algún
programa en ejecución lo referencia.
Se considera que la “búsqueda anticipada” puede producir
un mejor rendimiento del sistema.
Las “estrategias de colocación” están relacionadas
con la determinación del lugar de la memoria donde se colocará
(cargará) un programa nuevo.
Las “estrategias de reposición” están relacionadas
con la determinación de qué fragmento de programa o de datos
desplazar para dar lugar a los programas nuevos.
Inicio:
Fin:
Asignación Contigua
de Almacenamiento Versus No Contigua
En la “asignación contigua” cada programa ocupa un bloque
contiguo y sencillo de localizaciones de almacenamiento.
En la “asignación no contigua” un programa se divide en
varios bloques o “segmentos” que pueden almacenarse en direcciones
que no tienen que ser necesariamente adyacentes, por lo que es más
compleja pero más eficiente que la asignación continua.
Inicio:
Fin:
Asignación Contigua
de Almacenamiento de Un Solo Usuario
Se consideran S. O. que ya poseen desarrollado el “sistema de control
de entrada / salida”: IOCS: input / output control system (ver Figura
3.2 [7, Deitel]).

El tamaño de los programas está limitado por la cantidad
de memoria principal, pero se puede superar este límite con técnicas
de “recubrimientos”, con las siguientes características (ver
Figura 3.3 [7, Deitel]):
-
Si una sección particular del programa ya no es necesaria, se carga
otra sección desde el almacenamiento secundario ocupando las áreas
de memoria liberadas por la sección que ya no se necesita.
-
La administración manual por programa del recubrimiento es complicada
y dificulta el desarrollo y el mantenimiento.
Protección en los sistemas de un solo usuario
El usuario tiene un completo control sobre la totalidad del almacenamiento
principal:
-
El almacenamiento se divide en porciones que contienen el S. O., el programa
del usuario y una porción sin usar.
-
El programa del usuario podría destruir áreas del S. O. que
podrían:
-
Detener el sistema.
-
Producir salidas erróneas.
-
El S. O. debe estar protegido contra el proceso usuario:
-
La protección se instrumenta mediante un “registro de límites”
incorporado a la cpu:
-
Contiene la dirección de la instrucción más alta utilizada
por el S. O.
-
Si se intenta ingresar al S. O. la instrucción es interceptada y
el proceso finaliza.
Procesamiento por lotes de flujo único
Los sistemas de un solo usuario se dedican a un trabajo durante más
tiempo del que toma su ejecución.
Los trabajos requieren de:
-
“tiempo de instalación”: el necesario para preparar el entorno
operativo requerido.
-
“tiempo de descarga”: el necesario para desmontar el entorno operativo
que fue requerido.
Durante la instalación y descarga de los trabajos la cpu no está
ejecutando dichos trabajos requeridos, por lo cual:
-
Automatizar la “transición de trabajo a trabajo” reduce la
cantidad de tiempo perdido entre trabajos.
-
Surgieron los sistemas de “procesamiento por lotes”.
En el “procesamiento por lotes de flujo único” los trabajos
se agrupan en “lotes” encolándose para su ejecución.
El “procesador de flujos de trabajos”:
-
Lee las instrucciones del “lenguaje de control de trabajos”.
-
Facilita la preparación del trabajo siguiente.
-
Emite instrucciones al operador del sistema.
-
Automatiza funciones anteriormente manuales.
-
Cuando finaliza un trabajo efectúa las “operaciones de mantenimiento”
apropiadas para facilitar la transición del siguiente trabajo.
Inicio:
Fin:
Multiprogramación
de Partición Fija
Los sistemas de un solo usuario desperdician gran cantidad de recursos
computacionales debido a que [7, Deitel] (ver Figura
3.4 [7, Deitel]):
-
Cuando ocurre una petición de e / s la cpu normalmente no puede
continuar el proceso hasta que concluya la operación de e / s requerida.
-
Los periféricos de e / s frenan la ejecución de los procesos
ya que comparativamente la cpu es varios órdenes de magnitud más
rápida que los dispositivos de e / s.
Los sistemas de “multiprogramación” permiten que varios
procesos usuarios compitan al mismo tiempo por los recursos del sistema:
-
Un trabajo en espera de e / s cederá la cpu a otro trabajo que esté
listo para efectuar cómputos.
-
Existe paralelismo entre el procesamiento y la e / s.
-
Se incrementa la utilización de la cpu y la capacidad global de
ejecución del sistema.
-
Es necesario que varios trabajos residan a la vez en la memoria principal.
Inicio:
Fin:
Multiprogramación
de Partición Fija: Traducción y Carga Absolutas
Las “particiones” del almacenamiento principal:
-
Son de tamaño fijo.
-
Alojan un proceso cada una.
-
La cpu se cambia rápidamente entre los procesos creando la ilusión
de simultaneidad.
Los trabajos se traducían con ensambladores y compiladores absolutos
para ser ejecutados solo dentro de una partición específica
(ver Figura 3.5 [7, Deitel]).

El S. O. resulta de implementación relativamente sencilla pero
no
se optimiza la utilización de la memoria.
Inicio:
Fin:
Multiprogramación
de Partición Fija: Traducción y Carga Relocalizables
Los compiladores, ensambladores y cargadores de relocalización:
-
Se usan para producir programas relocalizables que puedan ser ejecutados
en cualquier partición disponible de tamaño suficiente para
aceptarlos (ver Figura 3.6 [7, Deitel]).
-
Son más complejos que los absolutos.
-
Mejoran la utilización del almacenamiento.
-
Confieren más flexibilidad en el armado de la carga de procesos.

Inicio:
Fin:
Protección en los
Sistemas de Multiprogramación
Si se utiliza asignación contigua de memoria la protección
suele implementarse con varios “registros de límites” (ver
Figura 3.7 y Figura 3.8 [7, Deitel]).
Los extremos superior e inferior de una partición pueden ser:
-
Delineados con dos registros.
-
Indicados el límite inferior o superior y el tamaño de la
partición o región.

Inicio:
Fin:
Fragmentación en
la Multiprogramación de Partición Fija
La “fragmentación de almacenamiento” ocurre en todos los
sistemas independientemente de su organización de memoria.
En los S. O. de multiprogramación de partición fija la
fragmentación se produce cuando:
-
Los trabajos del usuario no llenan completamente sus particiones designadas.
-
Una partición permanece sin usar porque es demasiado pequeña
para alojar un trabajo que está en espera.
Inicio:
Fin:
Multiprogramación
de Partición Variable
Los procesos ocupan tanto espacio como necesitan, pero obviamente no
deben superar el espacio disponible de memoria [7, Deitel] (ver Figura
3.9 [7, Deitel]).

No hay límites fijos de memoria, es decir que la partición
de un trabajo es su propio tamaño.
Se consideran “esquemas de asignación contigua”, dado
que un programa debe ocupar posiciones adyacentes de almacenamiento.
Los procesos que terminan dejan disponibles espacios de memoria principal
llamados “agujeros”:
-
Pueden ser usados por otros trabajos que cuando finalizan dejan otros “agujeros”
menores.
-
En sucesivos pasos los “agujeros” son cada vez más numerosos
pero más pequeños, por lo que se genera un desperdicio de
memoria principal.
Combinación de agujeros (áreas libres)
Consiste en fusionar agujeros adyacentes para formar uno sencillo
más grande.
Se puede hacer cuando un trabajo termina y el almacenamiento que libera
tiene límites con otros agujeros.
Inicio:
Fin:
Compresión o Compactación
de Almacenamiento
Puede ocurrir que los agujeros (áreas libres) separados distribuidos
por todo el almacenamiento principal constituyan una cantidad importante
de memoria:
-
Podría ser suficiente (el total global disponible) para alojar a
procesos encolados en espera de memoria.
-
Podría no ser suficiente ningún área libre individual
(ver Figura 3.10 [7, Deitel]).

La técnica de compresión de memoria implica pasar
todas las áreas ocupadas del almacenamiento a uno de los extremos
de la memoria principal:
-
Deja un solo agujero grande de memoria libre contigua.
-
Esta técnica se denomina “recogida de residuos” (ver Figura
3.11 [7, Deitel]).

Principales desventajas de la compresión
Consume recursos del sistema (ver Figura 3.12 [7,
Deitel]).

El sistema debe detener todo mientras efectúa la compresión,
lo que puede afectar los tiempos de respuesta.
Implica la relocalización (reubicación) de los procesos
que se encuentran en la memoria:
-
La información de relocalización debe ser de accesibilidad
inmediata.
Una alta carga de trabajo significa mayor frecuencia de compresión
que incrementa el uso de recursos.
Inicio:
Fin:
Estrategias de Colocación
del Almacenamiento
Se utilizan para determinar el lugar de la memoria donde serán
colocados los programas y datos que van llegando y se las clasifica de
la siguiente manera:
-
“Estrategia de mejor ajuste”:
-
Un trabajo nuevo es colocado en el agujero en el cual quepa de forma más
ajustada:
-
Debe dejarse el menor espacio sin usar.
-
“Estrategia de primer ajuste”:
-
Un trabajo nuevo es colocado en el primer agujero disponible con tamaño
suficiente para alojarlo.
-
“Estrategia de peor ajuste”:
-
Consiste en colocar un programa en el agujero en el que quepa de la peor
manera, es decir en el más grande posible:
-
El agujero restante es también grande para poder alojar a un nuevo
programa relativamente grande.
Inicio:
Fin:
Multiprogramación
con Intercambio de Almacenamiento
En el esquema de “intercambio” los programas del usuario no requieren
permanecer en la memoria principal hasta su terminación [7,
Deitel].
Una variante consiste en que un trabajo se ejecuta hasta que ya no puede
continuar:
-
Cede el almacenamiento y la cpu al siguiente trabajo.
-
La totalidad del almacenamiento se dedica a un trabajo durante un breve
período de tiempo.
-
Los trabajos son “intercambiados”, dándose que un trabajo
puede ser intercambiado varias veces antes de llegar a su terminación.
Es un esquema razonable y eficiente para un número relativamente
reducido de procesos de usuarios.
Los sistemas de intercambio fueron los predecesores de los sistemas
de paginación.
El rendimiento de los sistemas de intercambio mejora al reducir el tiempo
de intercambio:
-
Manteniendo al mismo tiempo varias “imágenes de usuario o imágenes
de memoria” en la memoria principal.
-
Retirando una imagen de usuario de la memoria principal solo cuando es
necesario su almacenamiento para una nueva imagen.
-
Incrementando la cantidad de memoria principal disponible en el sistema.
Las imágenes de usuario (imágenes de memoria) retiradas del
almacenamiento principal se graban en el almacenamiento secundario (discos).
Inicio:
Fin:
Introducción
a la Organización del Almacenamiento Virtual
“Almacenamiento virtual ” significa la capacidad de direccionar
un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento
primario de determinado sistema de computación [7,
Deitel].
Esta tecnología apareció en 1960 en la Universidad de
Manchester (Inglaterra), en el sistema “Atlas”.
Los métodos más comunes de implementación
son mediante:
-
Técnicas de “paginación”.
-
Técnicas de “segmentación”.
-
Una combinación de ambas técnicas.
Las direcciones generadas por los programas en su ejecución no son,
necesariamente, aquellas contenidas en el almacenamiento primario (memoria
real), ya que las direcciones virtuales suelen seleccionarse dentro
de un número mucho mayor de direcciones que las disponibles dentro
del almacenamiento primario.
La evolución en las organizaciones de almacenamiento puede
resumirse como sigue:
-
Real:
-
Sistemas dedicados a un solo usuario.
-
Real:
-
Sistemas de multiprogramación en memoria real:
-
Multiprogramación en partición fija:
-
Absoluta.
-
Relocalizable (reubicable).
-
Multiprogramación en partición variable.
-
Virtual:
-
Multiprogramación en almacenamiento virtual:
-
Paginación pura.
-
Segmentación pura.
-
Combinación paginación / segmentación.
Inicio:
Fin:
Conceptos
Básicos de Almacenamiento Virtual
La clave del concepto de memoria (almacenamiento) virtual esta en la
disociación:
-
De las direcciones a las que hace referencia un programa.
-
De las direcciones disponibles en la memoria real (almacenamiento primario).
Los principales conceptos son los siguientes:
-
“Direcciones virtuales”:
-
Son las referidas por un proceso en ejecución.
-
“Direcciones reales”:
-
Son las disponibles dentro del almacenamiento primario.
-
“Espacio de direcciones virtuales (v)” de un proceso:
-
Es el número de direcciones virtuales a que puede hacer referencia
el proceso.
-
“Espacio de direcciones reales (r)” de un computador:
-
Es el número de direcciones reales disponibles en el ordenador.
Los procesos hacen referencia a direcciones virtuales pero éstas
deben ejecutarse en el almacenamiento real:
-
Las direcciones virtuales deben ser transformadas dentro de las direcciones
reales, mientras el proceso está en ejecución.
-
La traducción de direcciones deberá hacerse rápidamente
para no degradar al sistema.
Existen varios medios para asociar las direcciones virtuales con las reales
(ver Figura 3.13 [7, Deitel]).

Los mecanismos de “traducción dinámica de direcciones”
(dat) convierten las direcciones virtuales en reales al ejecutarse el proceso.
Las direcciones contiguas dentro del espacio de direcciones virtuales
de un proceso no tienen por qué ser contiguas dentro del almacenamiento
real, a esto se denomina “contigüidad artificial ” (ver Figura
3.14 [7, Deitel]).

Inicio:
Fin:
Organización
del Almacenamiento de Niveles Múltiples
Se deben proporcionar los medios para retener programas y datos en un
gran almacenamiento auxiliar para:
-
Permitir que el espacio de direcciones virtuales de un usuario sea
mayor que el espacio de direcciones reales.
-
Soportar multiprogramación de forma efectiva en un sistema
con muchos usuarios que compartan el almacenamiento real.
Se utiliza un esquema de almacenamiento de dos niveles (ver Figura 3.15
[7,
Deitel]):
-
Primer nivel: “almacenamiento real ”:
-
En él se ejecutan los procesos y en él deben estar los datos
para que un proceso pueda referirse a ellos.

-
Segundo nivel: “almacenamiento auxiliar, secundario o adicional ”:
-
Generalmente consta de discos de gran capacidad que pueden mantener los
programas y datos que no caben al mismo tiempo en el más limitado
almacenamiento real.
Cuando se va a ejecutar un proceso su código y datos se pasan al
almacenamiento principal.
El almacenamiento real es compartido por varios procesos:
-
Cada proceso puede tener un espacio de direcciones virtuales mucho mayor
que el almacenamiento real.
-
Solo se mantiene al mismo tiempo una pequeña parte de los programas
y datos de cada proceso en el almacenamiento real.
Inicio:
Fin:
Transformación
de Bloques
Los mecanismos de traducción dinámica de direcciones deben
mantener “mapas” que ilustren qué direcciones del almacenamiento
virtual se encuentran en el almacenamiento real y dónde se encuentran
[7,
Deitel].
La información se agrupa en “bloques”:
-
El sistema está informado del lugar del almacenamiento real donde
han sido colocados los bloques de almacenamiento virtual.
-
Cuanto mayor sea el bloque menor será la fracción del almacenamiento
real que debe dedicarse a contener la información del mapa.
-
Con bloques grandes:
-
Se reduce la sobrecarga de almacenamiento del mecanismo de transformación.
-
Se incrementa el tiempo de transferencia entre los almacenamientos secundario
y primario.
-
Consumen más almacenamiento real pudiendo limitar el número
de procesos que pueden compartirlo.
-
Los bloques pueden ser de tamaño:
-
Igual : se denominan “páginas” y la organización
de almacenamiento virtual asociada se denomina “paginación”.
-
Diferente: se denominan “segmentos” y la organización
de almacenamiento virtual asociada se denomina “segmentación”.
-
Se pueden combinar ambas técnicas: segmentos de tamaño variable
compuestos de páginas de tamaño fijo.
Las direcciones son “bidimensionales”, es decir que una dirección
virtual “v” se indica por un par ordenado “(b,d)”, donde:
-
“b”: número del bloque donde reside.
-
“d”: desplazamiento a partir del inicio del bloque.
La traducción de una dirección virtual “v = (b,d)” a la dirección
real “r” considera lo siguiente (ver Figura 3.16 y Figura 3.17 [7,
Deitel]):
-
Cada proceso tiene su “tabla de mapa de bloques” mantenida por el
sistema en el almacenamiento real.
-
Un registro especial del procesador llamado “registro origen de la tabla
de bloques” se carga con la dirección real “a” de la “tabla
de mapa de bloques”:
-
Contiene una entrada para cada bloque del proceso.
-
Las entradas se mantienen en orden secuencial para el bloque 0, bloque
1, etc.
-
Se añade el bloque número “b” a la dirección base
“a” de la “tabla de bloques” para formar la dirección real de la
entrada de la “tabla de mapa de bloques” para el bloque “b”:
-
Contiene la dirección real “b ’ ” para el bloque “b”.
-
El desplazamiento “d” se añade a la dirección de inicio del
bloque, “b ’ ”, para formar la “dirección real” deseada: “r = b
’ + d”.
La transformación de bloques se efectúa en forma dinámica
mientras se ejecuta un proceso, por lo cual, si la implementación
no es eficiente, su sobrecarga puede causar una degradación del
rendimiento que podría eliminar en parte las ventajas de la utilización
del almacenamiento virtual.

Inicio:
Fin:
Conceptos
Básicos de Paginación
Frecuentemente se diferencia entre la “paginación pura”
y la “combinación de paginación y segmentación”[7,
Deitel].
Las páginas se transfieren del almacenamiento secundario al primario
en bloques llamados “marcos de páginas”:
-
Tienen el mismo tamaño que las páginas.
-
Comienzan en direcciones del almacenamiento real que son múltiplos
enteros del tamaño fijo de la página.
-
Podrá colocarse una nueva página dentro de cualquier “marco
de página” o “celda de página” disponible.
La “traducción dinámica de direcciones” incluye:
-
Un proceso en ejecución hace referencia a una dirección virtual
“v = (p,d)” (ver Figura 3.18 [7, Deitel]).
-
Un mecanismo de transformación de páginas busca la página
“p” en la “tabla de páginas” y determina si la página
“p” se encuentra en el marco de página “p ’ ”.
-
La dirección de almacenamiento real se forma por la concatenación
de “p ’ ” y “d”.

La tabla de “mapa de páginas” debe indicar si se encuentra
o no en el almacenamiento primario la página referenciada:
-
En caso afirmativo dónde está en la memoria real.
-
En caso negativo dónde puede estar en el almacenamiento secundario.
La dirección de almacenamiento primario “a”, donde comienza el marco
de pagina “p ’ ” (suponiendo un tamaño de página “p”), está
dada por: “a = (p) (p ’)”; se supone marcos de página numerados
0, 1, 2, etc. (ver Figura 3.19, Figura 3.20 y Figura 3.21 [7,
Deitel]).

Inicio:
Fin:
Traducción de Direcciones
de Paginación por Transformación Directa
Un proceso en ejecución hace referencia a la dirección
virtual v = (p,d).
Antes que un proceso comience su ejecución, el S. O. carga la
dirección de almacenamiento primario de la “tabla de mapa de
páginas” en el “registro origen de la tabla de mapa de páginas”
(Ver Figura 3.22 [7, Deitel]).

La dirección base de la tabla de mapa de páginas es “b”.
El número de página es “p”.
La dirección en el almacenamiento primario de la entrada en la
tabla de mapa de páginas para la página “p” es “b
+ p”:
-
Indica que el marco de página “p ’ ” corresponde a la página
virtual.
-
“p ’ ” se concatena con el desplazamiento “d” par formar
la dirección real “r”.
“Esto es un ejemplo de transformación directa debido a que la
tabla de mapa de páginas contiene una entrada por cada una de las
páginas del almacenamiento virtual de este proceso”.
La dirección virtual que se está traduciendo y la dirección
base de la tabla de mapa de páginas son mantenidas en un registro
de alta velocidad del control del procesador.
La tabla de mapa de páginas transformada directamente suele mantenerse
en el almacenamiento primario:
-
Las referencias a esta tabla requieren un ciclo completo de almacenamiento
primario, que generalmente es la parte más larga de un ciclo de
ejecución de instrucciones.
-
Se requiere otro ciclo de ejecución de almacenamiento primario para
la transformación de páginas, lo que puede ocasionar degradación
equivalente a un 50%, para lo cual una solución sería tener
la tabla completa de mapa de páginas de transformación directa
en la “caché” de muy alta velocidad.
Inicio:
Fin:
Traducción de Direcciones
de Paginación por Transformación Asociativa
Una forma de acelerar la traducción dinámica de páginas
consiste en colocar la tabla completa de mapa de páginas en un “almacenamiento
asociativo” que tenga un tiempo de ciclo mucho más rápido
que el almacenamiento primario.
Una variante es la “transformación asociativa pura” (ver
Figura 3.23 [7, Deitel]).

Un programa en ejecución hace referencia a la dirección
virtual v = (p,d).
Cada entrada en el almacenamiento asociativo se busca de forma simultánea
para la página “p”:
-
Se obtiene “p ’ ” como el marco de página correspondiente
a la página “p”.
-
Se concatena “p ’ ” con “d” formando la dirección
real “r”.
Cada una de las células del almacenamiento asociativo se registra
de manera simultánea:
-
Hace costoso el almacenamiento asociativo.
-
Implementar la transformación asociativa pura resulta demasiado
costoso, tal lo ocurrido con la implementación de la transformación
directa pura utilizando “caché”.
Inicio:
Fin:
Traducción de
Direcciones de Paginación por Combinación de Transformación
Asociativa / Directa
Se utiliza un almacenamiento asociativo capaz de mantener solo un pequeño
porcentaje del mapa completo de páginas para un proceso (ver Figura
3.24 [7, Deitel]).

Las entradas de página contenidas en este mapa reducido
corresponden solo a las páginas referenciadas recientemente:
-
Se presupone que una página recientemente referenciada tendrá
posibilidades de serlo de nuevo próximamente.
-
Los rendimientos obtenidos con este esquema de mapa asociativo parcial
superan aproximadamente en un 100 % a los rendimientos obtenidos con esquemas
de mapa asociativo de página completo.
Un programa hace referencia a la dirección virtual v = (p,d).
El mecanismo de traducción de direcciones intenta encontrar la
página “p” en el mapa de página asociativo parcial:
-
Si “p” se encuentra allí:
-
El mapa asociativo devuelve “p ’ ” como el número de marco
de página correspondiente a la página virtual “p”.
-
“p ’ ” se concatena con el desplazamiento “d” para formar
la dirección real “r” que corresponde a la dirección
virtual v = (p,d).
-
Si “p” no se encuentra en el mapa de pagina parcial:
-
Se utiliza un mapa directo convencional.
-
La dirección “b” del registro de origen de la tabla de páginas
se añade a “p” para localizar la entrada apropiada a la página
“p”
en la tabla de mapa de páginas de transformación directa
del almacenamiento primario.
-
La tabla indica que “p ’ ” es el marco de página correspondiente
a la página virtual “p”.
-
“p ’ ” se concatena con el desplazamiento “d” para formar
la dirección real “r” correspondiente a la dirección
virtual v = (p,d).
Inicio:
Fin:
Compartimiento de Recursos
en un Sistema de Paginación
En sistemas multiprogramados, especialmente en los de tiempo compartido,
es común que más de un usuario estén ejecutando los
mismos programas:
-
Para optimizar el uso de la memoria real se comparten las páginas
que pueden ser compartidas:
-
El compartimiento debe ser cuidadosamente controlado para evitar que un
proceso modifique datos que otro proceso esta leyendo (ver Figura 3.25
[7,
Deitel]).
-
Los programas se encuentran divididos en áreas separadas de “procedimiento”
y
“datos”.
-
Los procedimientos no modificables se llaman “procedimientos puros reentrantes”.
-
Los datos y procedimientos modificables no pueden ser compartidos.
-
Los datos no modificables (ej.: tablas fijas) son compartibles.
-
Se debe identificar cada página como compartible o no.
-
Habrá marcos (celdas) de páginas compartidos por varios procesos.

El compartimiento:
-
Reduce la cantidad de almacenamiento primario necesario para la ejecución
eficaz de un grupo de procesos.
-
Puede hacer posible que un sistema determinado mantenga una cantidad mayor
de usuarios (procesos).
Inicio:
Fin:
Segmentación
En los sistemas de “segmentación” un programa y sus datos
pueden ocupar varios bloques separados de almacenamiento real (ver Figura
3.26 [7, Deitel]).

Los bloques:
-
No necesitan ser de igual tamaño.
-
Los bloques separados no necesitan ser adyacentes.
-
Deben estar compuestos de posiciones contiguas de almacenamiento.
Se complica la protección de bloques de memoria de un proceso de
usuario.
Es más difícil limitar el rango de acceso de cualquier
programa [7, Deitel].
Un esquema posible de protección es el uso de claves de protección
del almacenamiento (ver Figura 3.27 [7, Deitel]):
-
Las claves están bajo el control estricto del S. O.
-
Un programa de usuario, a quien corresponde una cierta clave en la cpu,
solo puede hacer referencia a los otros bloques del almacenamiento con
igual clave de protección.

Una dirección virtual es un par ordenado v=(s,d) (ver
Figura 3.28 [7, Deitel]):
-
“s” es el número del segmento del almacenamiento virtual
en el cual residen los elementos referidos.
-
“d” es el desplazamiento en el segmento “s” en el cual se
encuentra el elemento referido.

Un proceso solo puede ejecutarse si su segmento actual (como mínimo)
está en el almacenamiento primario.
Los segmentos se transfieren del almacenamiento secundario al primario
como unidades completas.
Un nuevo segmento puede ser colocado en una serie disponible de posiciones
contiguas del almacenamiento primario de tamaño suficiente para
alojar al segmento.
La traducción dinámica de direcciones utiliza una “tabla
de mapa de segmentos”.
Inicio:
Fin:
Control de Acceso en Sistemas
de Segmentación
Se le otorga a cada proceso ciertos derechos de acceso a todos los segmentos
y se le niega completamente el acceso a muchos otros.
Si un proceso tiene “acceso de lectura” a un segmento, puede
obtener cualquier elemento de información contenido en ese segmento.
Si un proceso tiene “acceso de escritura” a un segmento, puede
modificar cualquier contenido del segmento y puede introducirle información
adicional, incluso destruir toda la información del segmento.
Un proceso con “acceso de ejecución” de un segmento puede
ejecutarlo como si fuera un programa.
Un proceso con “acceso de adición” puede escribir información
adicional al final del segmento, pero no puede modificar la información
existente.
En base a los “tipos de control de acceso” indicados pueden crearse
distintos “modos de control de acceso”.
Ejemplos de combinación de los accesos de lectura, escritura
y ejecución para producir modos de protección útiles
se dan en la Tabla 3.1 y en la Tabla 3.2 [7, Deitel].
| Modo |
Lectura |
Escritura |
Ejecución |
Explicación |
|
0
|
N
|
N
|
N
|
No hay permiso de acceso |
|
1
|
N
|
N
|
S
|
Solo ejecución |
|
2
|
S
|
N
|
N
|
Solo lectura |
|
3
|
S
|
N
|
S
|
Lectura / ejecución |
|
4
|
S
|
S
|
N
|
Lectura / escritura pero no ejecución |
|
5
|
S
|
S
|
S
|
Acceso no limitado |
Tabla 3.1: Ejemplo de combinación de accesos.
| Modo |
Aplicación |
| 0 |
Seguridad |
| 1 |
Un programa disponible a los usuarios, que no pueden copiarlo ni modificarlo,
pero sí ejecutarlo |
| 2 |
Recuperación de información |
| 3 |
Un programa puede ser copiado o ejecutado, pero no puede ser modificado |
| 4 |
Protege los datos contra un intento erróneo de ejecutarlos |
| 5 |
Este acceso se concede a los usuarios de confianza |
Tabla 3.2: Ejemplo de aplicaciones de la combinación
de accesos.
Inicio:
Fin:
Traducción de
Direcciones de Segmentación por Transformación Directa
Existen varias estrategias para la implementación de la traducción
de direcciones de segmentación:
-
Por transformación directa, asociativa o combinación de asociativa
/ directa.
-
Con caché suficiente para alojar la tabla completa de mapa de
segmentos o caché parciales que contengan solo las entradas
de los segmentos de referencia más reciente (ver Figura 3.29
[7,
Deitel]).

Se considerará la traducción de direcciones de segmentación
con la tabla completa de mapa de segmentos en la caché.
Un proceso en ejecución hace referencia a la dirección
virtual v = (s,d):
-
El segmento número “s” se añade a la dirección
base “b” en el registro origen de la tabla de mapa de segmentos
formando la dirección de memoria real “b + s”, de la entrada
para el segmento “s” de la tabla de mapa de segmentos, que
contiene la dirección del almacenamiento primario “s ’ ”,
donde comienza el segmento.
-
El desplazamiento “d” se añade a “s ’ ” formando la
dirección real “r = d + s ’ ”, correspondiente a la dirección
virtual “v = (s,d)”.
Un “bit de residencia”, “r”, indica si en la actualidad el
segmento se encuentra o no en el almacenamiento primario.
Si el segmento se encuentra en el almacenamiento primario “s ’ ”
es la dirección en este almacenamiento donde comienza el segmento.
Si el segmento no se encuentra en el almacenamiento primario “a”
es
la dirección en el almacenamiento secundario de donde debe recuperarse
antes que el proceso pueda continuar.
Se compara cada referencia a un segmento con los bits de protección
para determinar si se permite la operación que se está intentando.
Si el segmento buscado no está en el almacenamiento primario
se genera un “fallo de pérdida de segmento”:
-
El S. O. obtiene el control y carga el segmento referido desde la dirección
“a”
del almacenamiento secundario.
-
Se comprueba si el desplazamiento “d” es menor o igual a la longitud
del segmento “l ”:
-
Si no es así se genera un “fallo de desbordamiento de segmento”
y el S. O. obtiene el control y termina la ejecución del proceso.
-
Si el desplazamiento está en el rango del segmento se comprueban
los bits de protección para asegurarse si se permite la operación
que se está intentando:
-
Si es así entonces la dirección base del segmento, “s
’ ”, en el almacenamiento primario se añade al desplazamiento
“d”
formando la dirección de memoria real “r = s ’ + d”, que
corresponde a la dirección del almacenamiento virtual “v = (s,d)”.
-
Si la operación intentada no se permite se genera un “fallo de
protección de segmento” y el S. O. obtiene el control y termina
la ejecución del proceso.
Inicio:
Fin:
Compartimiento en un Sistema
de Segmentación
Una de las ventajas de la segmentación sobre la paginación
es que se trata más de un hecho lógico que físico:
-
En un sistema de segmentación, una vez que un segmento ha sido declarado
como compartido, entonces las estructuras que lo integran pueden cambiar
de tamaño.
-
Lo anterior no cambia el hecho lógico de que residen en un segmento
compartido.
Dos procesos pueden compartir un segmento con solo tener entradas
en sus tablas generales que apunten al mismo segmento del almacenamiento
primario (ver Figura 3.30 [7, Deitel]).

Inicio:
Fin:
Sistemas
de Paginación / Segmentación
Ofrecen las ventajas de las dos técnicas de organización
del almacenamiento virtual [7, Deitel].
El tamaño de los segmentos es múltiplo del de las páginas.
No es necesario que todas las páginas de un segmento se encuentren
al mismo tiempo en el almacenamiento primario.
Las páginas de almacenamiento virtual, que son contiguas en este
almacenamiento, no necesitan ser contiguas en el almacenamiento real.
El direccionamiento es tridimensional con una dirección
de almacenamiento virtual “v = (s,p,d)”:
-
“s” es el número del segmento.
-
“p” es el número de página.
-
“d” es el desplazamiento en la página donde se encuentra
asignado el elemento deseado.
Inicio:
Fin:
Traducción Dinámica
de Direcciones en Sistemas de Paginación / Segmentación
Se considera la traducción dinámica de direcciones de
virtuales a reales en un sistema de paginación / segmentación
utilizando la combinación de transformación asociativa /
directa (ver Figura 3.31 [7, Deitel]).

El proceso en ejecución hace referencia a la dirección
virtual v = (s,p,d) (ver Figura 3.32 [7, Deitel]).

Las páginas de referencia más reciente tienen entradas
en un almacenamiento asociativo.
Se realiza una búsqueda asociativa para intentar localizar (s,p)
en el almacenamiento asociativo:
-
Si se encuentra (s,p), entonces el marco de página “p
’ ” en el cual reside dicha página en la memoria real, se concatena
al desplazamiento “d” para formar la dirección de memoria
real “r” correspondiente a la dirección virtual v= (s,p,d).
-
Si no se encuentra (s,p), entonces:
-
La dirección base “b” de la tabla de segmentos se añade
al número de segmento “s” formando la dirección “b
+ s” de la entrada de la tabla de mapa de segmentos para el segmento
“s”
de la memoria real.
-
La entrada de la tabla de mapa de segmentos indica la dirección
base “s ’ ” de la tabla de páginas para el segmento “s”.
-
El número de página “p” se añade a “s ’
” formando la dirección “p + s ’ ” de la entrada en la
tabla de páginas para la página “p” del segmento “s”:
-
Indica que “p ’ ” es el número del marco correspondiente
a la página virtual “p”.
-
“p ’ ” se concatena con el desplazamiento “d” formando la
dirección real “r ” que corresponde a la dirección
virtual v = (s,p,d).
Si el segmento “s” no se encuentra en el almacenamiento primario
se produce un “fallo de pérdida de segmento”, cuyo caso el
S. O. localiza el segmento en el almacenamiento secundario, crea una tabla
de páginas para el segmento y carga la página apropiada en
el almacenamiento primario, pudiendo producir reemplazos de páginas.
Si el segmento “s” está en el almacenamiento primario
y si la referencia a la tabla de mapa de páginas indica que la página
deseada no se encuentra en el almacenamiento primario, se produce un “fallo
de pérdida de página”, en tal caso el S. O. obtiene el
control, localiza la página en el almacenamiento secundario y la
carga, pudiendo reemplazar otra página.
Si una dirección de almacenamiento virtual está más
allá del final del segmento se genera un “fallo de desbordamiento
de segmento”, el que debe ser atendido por el S. O.
Si los bits de protección indican que la operación
que se va a ejecutar en la dirección virtual referida no se permite,
se genera un “fallo de protección de segmento”, el que también
debe ser atendido por el S. O.
Si se utiliza un mecanismo de transformación directa pura, manteniendo
el mapa completo dentro del almacenamiento primario, la referencia promedio
de almacenamiento virtual requeriría:
-
Un ciclo de almacenamiento para acceder a la tabla de mapa de segmentos.
-
Un segundo ciclo de almacenamiento para hacer referencia a la tabla
de mapa de páginas.
-
Un tercer ciclo de almacenamiento para referenciar al elemento deseado
del almacenamiento real.
Cada referencia a un elemento comprende tres ciclos de almacenamiento:
-
El sistema correría casi a 1 / 3 de su velocidad nominal.
-
La traducción de direcciones insumiría 2 / 3 del tiempo.
Con la utilización de registros asociativos (por ej. 16 registros),
se logran velocidades de ejecución del 90 % o más de la velocidad
total de procesamiento de sus procesadores de control.
La estructura de tablas de procesos, de mapas de segmentos y de mapas
de páginas puede consumir un porcentaje importante del almacenamiento
primario cuando se ejecutan un gran número de procesos.
La traducción procede mucho más rápido si todas
las tablas están en el almacenamiento primario, lo que resta espacio
para los procesos.
Inicio:
Fin:
Compartimiento en un Sistema
de Paginación / Segmentación
Se implementa disponiendo entradas en tablas de mapa de segmentos para
diferentes procesos que apunten a la misma tabla de mapa de páginas
(ver Figura 3.33 [7, Deitel]).

El compartimiento requiere una administración cuidadosa por parte
del S. O., ya sea en sistemas de paginación, segmentación
o paginación / segmentación, pues se debe considerar qué
sucedería si una nueva página reemplazara a otra página
compartida por muchos procesos.
Inicio:
Fin:
Estrategias
de Administración del Almacenamiento Virtual
Las diferentes organizaciones de almacenamiento virtual generalmente
implementadas son [7, Deitel]:
-
Paginación.
-
Segmentación.
-
Segmentación y paginación.
Las estrategias para la administración de sistemas de almacenamiento
virtual condicionan la conducta de los sistemas de almacenamiento virtual
que operan según esas estrategias.
Se consideran las siguientes estrategias:
-
“Estrategias de búsqueda”:
-
Tratan de los casos en que una página o segmento deben ser traídos
del almacenamiento secundario al primario.
-
Las estrategias de “búsqueda por demanda” esperan a que se
haga referencia a una página o segmento por un proceso antes de
traerlos al almacenamiento primario.
-
Los esquemas de “búsqueda anticipada” intentan determinar
por adelantado a qué páginas o segmentos hará referencia
un proceso para traerlos al almacenamiento primario antes de ser explícitamente
referenciados.
-
“Estrategias de colocación”:
-
Tratan del lugar del almacenamiento primario donde se colocará una
nueva página o segmento.
-
Los sistemas toman las decisiones de colocación de una forma trivial
ya que una nueva página puede ser colocada dentro de cualquier marco
de página disponible.
-
“Estrategias de reposición”:
-
Tratan de la decisión de cuál página o segmento desplazar
para hacer sitio a una nueva página o segmento cuando el almacenamiento
primario está completamente comprometido.
Inicio:
Fin:
Estrategias de Reposición
de Página
Las principales son:
-
El principio de optimización.
-
Reposición de páginas al azar.
-
Primero en entrar - primero en salir.
-
Menos recientemente usada.
-
Menos frecuentemente usada.
-
No usada recientemente.
-
Conjuntos de trabajo.
Inicio:
Fin:
El Principio de Optimización
El “principio de optimización” indica que para obtener
un rendimiento óptimo, la página que se va a reponer es una
que no se va a utilizar en el futuro durante el período de tiempo
más largo.
El problema es que no es factible predecir el futuro.
Inicio:
Fin:
Reposición de Página
al Azar
Consiste en escoger al azar la página que va a ser reemplazada.
Todas las páginas del almacenamiento principal deben tener la
misma probabilidad de ser reemplazadas.
Debe poder seleccionar cualquier página, incluyendo la que va
a ser referenciada a continuación (peor selección).
Este esquema es raramente usado.
Inicio:
Fin:
Reposición de
Página por el Sistema de Primero en Entrar -Primero en Salir (FIFO)
Se registra el momento en que cada página ingresa al almacenamiento
primario.
Para reemplazar una página, se selecciona aquella que ha estado
más tiempo almacenada.
Se presenta el inconveniente de que se pueden reemplazar páginas
muy usadas, que serán llamadas de nuevo al almacenamiento primario
casi de inmediato.
Se puede presentar la llamada “anomalía FIFO”:
-
Belady, Nelson y Shedler descubrieron que con la reposición FIFO,
ciertos patrones de referencias de páginas causan más fallos
de páginas cuando se aumenta el número de marcos (celdas)
de páginas asignados a un proceso: en esto consiste la “anomalía
FIFO”.
-
Esta anomalía contradice a la intuición (ver Figura
3.34 [7, Deitel]).

Inicio:
Fin:
Reposición de Página
Menos - Recientemente - Usada (LRU)
Esta estrategia selecciona para ser reemplazada la página que
no ha sido usada durante el mayor período de tiempo.
Se basa en la heurística de que el pasado reciente es un buen
indicador del futuro próximo.
Requiere que cada página reciba un “sello de tiempo” cada
vez que se referencia:
-
Puede significar una sobrecarga adicional importante.
-
No se implementa frecuentemente.
La página seleccionada para reemplazo podría ser la próxima
en ser requerida, por lo que habría que paginarla de nuevo al almacenamiento
principal casi de inmediato.
Inicio:
Fin:
Reposición de Página
Menos - Frecuentemente - Usada (LFU)
Acá interesa la intensidad de uso que haya tenido cada
página.
La página que será reemplazada es aquella que ha sido
usada con menos frecuencia o que ha sido referida con menos intensidad.
El inconveniente es que se puede seleccionar fácilmente
para su reposición la página equivocada:
-
Ej.: La página de uso menos frecuente puede ser la página
de entrada más reciente al almacenamiento principal, y por lo tanto
existe una alta probabilidad de que sea usada de inmediato.
Inicio:
Fin:
Reposición de Página
No Usada - Recientemente (NUR)
Presupone que las páginas que no han tenido uso reciente tienen
poca probabilidad de ser usadas en el futuro próximo y pueden ser
reemplazadas por otras nuevas.
Es deseable reemplazar una página que no ha sido cambiada
mientras estaba en el almacenamiento primario.
La estrategia NUR se implementa con la adición de dos bits
de hardware por página:
-
“Bit referenciado”:
-
= 0 si la página no ha sido referenciada.
-
= 1 si la página ha sido referenciada.
-
“Bit modificado” (también llamado “bit sucio”):
-
= 0 si la página no ha sido modificada.
-
= 1 si la página ha sido modificada.
La selección de la página que será reemplazada comienza
buscando una página que no ha sido referenciada, pero si no la encuentra
habrá que reemplazar una página que ha sido referenciada.
Si una página ha sido referenciada se comprueba si ha sido modificada
o no:
-
Si no ha sido modificada se la reemplaza:
-
Su reposición representa menos sobrecarga que la de una página
modificada, ya que debería grabarse de nuevo en el almacenamientos
secundario.
-
Si no se encuentra una página que no ha sido modificada será
reemplazada una página modificada.
Con el transcurso del tiempo la mayoría de los “bits referenciados”
serán activados:
-
Se pierde la capacidad para distinguir las páginas más deseables
para ser reemplazadas.
-
Para evitarlo se ajustan periódicamente todos los “bits referenciados”
a “0”:
-
Se logra un nuevo inicio.
-
Se vuelve vulnerable al reemplazo aún a las páginas activas,
pero solo brevemente, mientras se reajustan los bits.
Los “bits modificados” no se ajustan periódicamente
según esta estrategia.
Inicio:
Fin:
Localidad
El concepto de “localidad” expresa [7, Deitel]:
-
“Los procesos tienden a hacer referencia al almacenamiento en patrones
no uniformes y muy localizados”.
La “localidad” se manifiesta en el “tiempo” y en el “espacio”:
-
Es una propiedad empírica (observada).
-
Nunca está garantizada pero es altamente probable.
-
Ej.: Los procesos tienden a favorecer ciertos subconjuntos de páginas,
las que tienden a ser adyacentes entre sí en el espacio de direcciones
virtuales del proceso.
-
Está relacionada con la forma en que se escriben los programas y
se organizan los datos.
“Localidad temporal ”: significa que las localidades de almacenamiento
referenciadas recientemente tienen una alta probabilidad de ser referenciadas
en un futuro próximo:
-
Se apoya en la utilización de:
-
Formación de ciclos (loops).
-
Subrutinas.
-
Pilas.
-
Variables usadas para contar y totalizar.
“Localidad en el espacio”: significa que las referencias de almacenamiento
tienden a acumularse de manera tal que, una vez que se hace referencia
a una localidad, es muy probable que las localidades cercanas sean también
referenciadas:
-
Se apoya en la utilización de:
-
Recorrido de arreglos.
-
Ejecución secuencial de código.
-
Tendencia de los programadores a colocar definiciones de variables relacionadas,
próximas entre sí.
Un programa puede ejecutar eficientemente mientras su subconjunto de
páginas preferido se encuentre en el almacenamiento primario.
El número de fallos de páginas de un proceso depende de
la cantidad de almacenamiento primario disponible para sus páginas.
Generalmente los procesos no muestran patrones de referencias aleatorios
uniformemente distribuidos por sus diferentes páginas.
Al reducir el número de marcos (celdas) de páginas disponibles
para un proceso existe un intervalo durante el cual la razón de
fallos de páginas no se afecta excesivamente.
En determinado punto, cuando se reduce más el número de
marcos de páginas, el número de fallos de páginas
aumenta drásticamente.
Mientras el subconjunto de páginas favorecidas por un proceso
permanezca en el almacenamiento primario, el número de fallos de
páginas no aumenta mucho.
Tan pronto como las páginas del subconjunto favorecido
son retiradas del almacenamiento primario, la actividad de paginación
del proceso aumenta en gran medida al referenciar y traer de nuevo estas
páginas al almacenamiento primario.
Los “subconjuntos favorecidos” también son llamados “conjuntos
de trabajo” o “working sets” (ver Figura 3.35 [7,
Deitel]).

Inicio:
Fin:
Conjuntos
de Trabajo
Denning desarrolló un punto de vista de la actividad de paginación
de un programa llamado la “teoría de conjunto de trabajo del
comportamiento de un programa” [7, Deitel].
Un “conjunto de trabajo” es una colección de páginas
a las cuales un proceso hace activamente referencia.
Denning sostenía que para que un programa se ejecutara eficientemente,
su conjunto de trabajo debe ser mantenido en el almacenamiento primario,
para evitar la “hiperpaginación”.
Una “política de administración de almacenamiento por
conjunto de trabajo” trata de mantener el conjunto de trabajo de los
programas activos en el almacenamiento primario.
La decisión de añadir un nuevo proceso al conjunto activo
de procesos (aumentar el nivel de multiprogramación):
-
Se basa en si hay suficiente espacio disponible en el almacenamiento primario
como para acomodar el conjunto de trabajo del nuevo proceso.
-
Se toma generalmente de forma heurística ya que es imposible
para el sistema conocer por anticipado el tamaño del conjunto de
trabajo de un proceso dado.
El conjunto de trabajo de páginas de un proceso “w(t,w)”
en el momento “t” es el conjunto de páginas referidas por
un proceso durante el intervalo de tiempo del proceso “t - w” a
“t
” (ver Figura 3.36 [7, Deitel]).

El “tiempo del proceso” es el tiempo durante el cual este proceso
tiene la cpu.
La variable “w” se denomina “tamaño de la ventana del
conjunto de trabajo”:
-
La determinación del tamaño de “w” es muy importante.
-
Al aumentar el tamaño de la ventana “w” aumenta el tamaño
del conjunto de trabajo (ver Figura 3.37 [7, Deitel]).

“El verdadero conjunto de trabajo de un proceso es el conjunto de
páginas que deben estar en el almacenamiento primario para la ejecución
eficaz de este proceso”.
Los conjuntos de trabajo cambian mientras un proceso está
en ejecución:
-
Complica la administración precisa del almacenamiento primario en
base a esta estrategia.
-
“Los conjuntos de trabajo son transitorios y el siguiente conjunto de
trabajo del proceso puede diferir substancialmente de su conjunto de trabajo
anterior”.
-
Se debe evitar un exceso de compromiso del almacenamiento primario y la
consecuente hiperpaginación.
Inicio:
Fin:
Paginación
por Demanda y Paginación Anticipada
Paginación por Demanda
Las paginas son cargadas por demanda [7, Deitel].
No se llevan páginas del almacenamiento secundario al primario
hasta que son referenciadas explícitamente por un proceso en ejecución.
Las razones del atractivo de esta estrategia son:
-
Los resultados de computabilidad, en especial el “problema de parada”,
indican que el camino que tomará la ejecución de un programa
no se puede predecir con exactitud.
-
Garantiza que solo las páginas que necesita el proceso sean traídas
al almacenamiento principal.
-
La sobrecarga de proceso para decidir qué página traer al
almacenamiento principal es mínima.
El principal inconveniente está en los procesos que requieren acumular
sus páginas una por una:
-
Los tiempos de espera de páginas son considerables.
-
Es creciente la cantidad de almacenamiento primario afectada al proceso
que espera páginas, por lo que el “producto espacio - tiempo”
se incrementa.
El “producto espacio - tiempo” indica la cantidad de almacenamiento
que usa un proceso y la cantidad de tiempo que lo usa.
“La reducción del producto espacio - tiempo de las esperas
de páginas de un proceso es una meta importante de las estrategias
de administración del almacenamiento” (ver Figura 3.38 [7,
Deitel]).

Inicio:
Fin:
Paginación Anticipada
El S. O. intenta predecir las páginas que un proceso va a necesitar
y a continuación precarga estas páginas cuando hay espacio
disponible [7, Deitel].
Mientras el proceso ejecuta sus páginas actuales, el sistema
carga páginas nuevas que estarán disponibles cuando el proceso
las pida, debido a ello, el tiempo de ejecución de un proceso se
puede reducir.
Inicio:
Fin:
Liberación
de Página y Tamaño de Página
Liberación de Página
Un proceso usuario puede emitir una “liberación voluntaria
de página” para liberar el marco de página cuando ya
no necesitara esa página [7, Deitel].
Se puede eliminar el “desperdicio” y acelerar la ejecución.
El inconveniente es que la incorporación de mandatos de liberación
de páginas dentro de los programas de usuarios puede ser peligroso
y retrasar el desarrollo de aplicaciones.
“Los compiladores y S. O. deberían detectar automáticamente
situaciones de liberación de página mucho antes de lo que
es posible con estrategias de conjuntos de trabajo”.
Inicio:
Fin:
Tamaño de Página
Generalmente el almacenamiento real se divide en marcos o celdas de
página de tamaño fijo [7, Deitel].
Los interrogantes tienen que ver con el tamaño de las páginas,
si todas las páginas tendrán igual tamaño, si en caso
de utilizar páginas de diferente tamaño las páginas
mayores deben ser o no múltiplos enteros de las menores, etc.
Algunas consideraciones para determinar el tamaño de página
son las siguientes:
-
Cuanto más pequeño sea el tamaño de una página,
más páginas y marcos de páginas habrá y mayores
serán las tablas de páginas:
-
El desperdicio de almacenamiento debido al tamaño excesivo de las
tablas de página se llama “fragmentación de tablas”.
-
Esto indica la necesidad de páginas más grandes.
-
Con páginas grandes, grandes cantidades de información que
nunca llegaría a ser referenciada, se paginarán hacia el
almacenamiento primario:
-
Esto indica la necesidad de páginas más pequeñas.
-
Debido a que las transferencias de e / s del disco (paginación)
consumen bastante tiempo, se debe minimizar la paginación que un
proceso requiera:
-
Esto indica la necesidad de páginas grandes.
-
Los programas tienden a mostrar la propiedad de localidad de referencia
y esta localidad tiende a ser pequeña:
-
Esto indica la necesidad de páginas pequeñas.
-
Los procedimientos y datos rara vez comprenden un número entero
de páginas, por lo que los sistemas de paginación experimentan
una “fragmentación interna”:
-
El desperdicio promedio es de 1 / 2 página no usada por segmento
(grupo) de páginas, que estará en la última página
del segmento.
-
Esto indica la necesidad de páginas pequeñas.
Los tamaños de pagina mas utilizados son: 512 b, 1 kb, 2 kb, 4 kb.
Inicio:
Fin:
Comportamiento
de un Programa en la Paginación
Respecto del porcentaje de las páginas de un proceso típico
referenciadas desde el momento de iniciarse su ejecución [7,
Deitel]:
-
Un proceso tiende a hacer referencia a una parte significativa de sus páginas
inmediatamente después de iniciar su ejecución.
-
El proceso puede concluir sin haber referenciado a algunas de sus páginas,
correspondientes a rutinas que atienden errores que no se produjeron.
Respecto de variar el tamaño de la página manteniendo constante
la cantidad de almacenamiento primario:
-
El número de fallos de páginas experimentados por un proceso
en ejecución tiende a aumentar con el tamaño de la página,
debido a que se traen al almacenamiento primario un mayor número
de procedimientos y datos que no serán referenciados, restando lugar
para los que sí lo serán.
Respecto de cómo el promedio de tiempo interfallos (tiempo entre
fallos de página) varía al aumentar el número
de marcos de página asignados al proceso:
-
Cuanto más marcos de página tenga un proceso, mayor será
el tiempo entre los fallos de páginas.
-
El punto de inflexión se da cuando el proceso tiene todo su conjunto
de trabajo en el almacenamiento primario.
-
Asignar marcos de página adicionales más allá del
punto de inflexión no produce efectos significativos sobre el tiempo
interfallos.
Respecto del porcentaje de instrucciones de una página que son ejecutadas
antes de transferirse el control a otra página, los valores experimentales
obtenidos indican un máximo de 200 instrucciones por página
de 1 kb (ver Figura 3.39 [7, Deitel]).

Inicio:
Fin:

Número de visitas efectuadas desde el 17/12/2001:
Estadísticas diarias desde el 10/07/2002:
Número de visitantes actuales disponible
desde el 14/07/2002:
Autor: lrmdavid@exa.unne.edu.ar
Ó FACENA - http://exa.unne.edu.ar
Servicios WEB: webmaster@exa.unne.edu.ar