memoria virtual
TRANSCRIPT
JORGE EDUARDO RODRIGUEZ CORTES
SISTEMAS OPERATIVOS
ANA GARZON
(docente)
FUNDACION UNIVERSITARIA SAN MATEO
FUS
2010
MEMORIA VIRTUAL
La memoria virtual es una técnica de
administración de la memoria real que
permite al sistema operativo brindarle al
software de usuario y a sí mismo un
espacio de direcciones mayor que la
memoria real o física.
TIPOS DE MEMORIA
La mayoría de los ordenadores tienen
cuatro tipos de memoria: registros en la
CPU, la memoria caché (tanto dentro como
fuera del CPU), la memoria física
(generalmente en forma de RAM, donde la
CPU puede escribir y leer directa y
razonablemente rápido) y el disco duro que
es mucho más lento, pero también más
grande.
cuando el sistema operativo permite múltiples procesos y
aplicaciones corriendo simultáneamente el sistema requiere el
acceso a más información que la que puede ser mantenida en
memoria física.
La solución al problema de necesitar mayor
cantidad de memoria de la que se
posee, consiste en que las aplicaciones
mantengan parte de su información en
disco, moviéndola a la memoria principal
cuando sea necesario.
Una opción es que la aplicación misma
sea responsable de decidir qué
información será guardada en cada
sitio (segmentación), y de traerla y
llevarla.
Cuando se usa Memoria Virtual, o cuando
una dirección es leída o escrita por la
CPU, una parte del hardware dentro de la
computadora traduce las direcciones de
memoria generadas por el software
(direcciones virtuales) en: La dirección real
de memoria (la dirección de memoria
física), o una indicación de que la
dirección de memoria deseada no se
encuentra en memoria principal (llamado
excepción de memoria virtual).
FRAGMENTACION
La fragmentación es la memoria que queda
desperdiciada al usar los métodos de
gestión de memoria que se vieron en los
métodos anteriores. Tanto el primer ajuste,
cómo el mejor y el peor producen
fragmentación externa.
La fragmentación es generada cuando
durante el reemplazo de procesos quedan
huecos entre dos o más procesos de
manera no contigua y cada hueco no es
capaz de soportar ningún proceso de la lista
de espera.
La fragmentación puede
ser:
Fragmentación Externa: existe el espacio
total de memoria para satisfacer un
requerimiento, pero no es contigua.
Fragmentación Interna: la memoria
asignada puede ser ligeramente mayor
que la requerida; esta referencia es interna
a la partición, pero no se utiliza.
PAGINACION
En sistemas operativos de computadoras, los
sistemas de paginación de memoria dividen
los programas en pequeñas partes o páginas.
Del mismo modo, la memoria es dividida en
trozos del mismo tamaño que las páginas
llamados marcos de página.
Tablas de páginas
Son usadas para realizar las traducciones de
direcciones de memoria virtual (o lógica) a
memoria real (o física) y en general el sistema
operativo mantiene una por cada proceso
corriendo en el sistema.
En cada entrada de la tabla de paginación (en
inglés PTE, Page Table Entry) existe un bit de
presencia, que está activado cuando la página
se encuentra en memoria principal.
Ventajas de la paginación
Es posible comenzar a ejecutar un programa, cargando
solo una parte del mismo en memoria, y el resto se
cargara bajo la solicitud.
No es necesario que las paginas estén contiguas en
memoria, por lo que no se necesitan procesos de
compactación cuando existen marcos de paginas libres
dispersos en la memoria.
Es fácil controlar todas las páginas, ya que tienen el
mismo tamaño.
El mecanismo de traducción de direcciones (DAT) permite
separar los conceptos de espacio de direcciones y
espacios de memoria. Todo el mecanismo es transparente
al usuario.
Se libera al programador de la restricción de programar
para un tamaño físico de memoria, con lo que s e aumenta
su productividad. Se puede programar en función de una
memoria mucho más grande a la existente.
Al no necesitarse cargar un programa completo en
memoria para su ejecución, se puede aumentar el número
de programas multiprogramándose.
Se elimina el problema de fragmentación externa.
Desventajas de la paginación
El costo de hardware y software se incrementa, por
la nueva información que debe manejarse y el
mecanismo de traducción de direcciones
necesario. Se consume mucho más recursos de
memoria, tiempo en el CPU para su implantación.
Se deben reservar áreas de memoria para las PMT
de los procesos. Al no ser fija el tamaño de estas,
se crea un problema semejante al de los
programas (como asignar un tamaño óptimo sin
desperdicio de memoria, u "ovearhead" del
procesador).
Aparece el problema de fragmentación interna. Así, si se
requieren 5K para un programa, pero las paginas son
de 4K, deberán asignárseles 2 páginas (8k), con lo que
quedan 3K sin utilizar. La suma de los espacios libres
dejados de esta forma puede ser mayor que el de varias
páginas, pero no podrá ser utilizados.
Debe asignarse un tamaño promedio a las
páginas, evitando que si son muy pequeñas, se
necesiten TABLAS BMT y PMT muy grandes, y si son
muy grandes, se incremente el grado de fragmentación
interna.
SEGMENTACION
Es un método por el cual se consigue aumentar el
rendimiento de algunos sistemas electrónicos digitales. Es
aplicado, sobre todo, en microprocesadores.
El nombre viene de que para impulsar el gas en un
oleoducto a la máxima velocidad es necesario dividir el
oleoducto en tramos y colocar una bomba que dé un nuevo
impulse al gas. El símil con la programación existe en que
los cálculos deben ser registrados o sincronizados con el
reloj cada cierto tiempo para que la ruta crítica (tramo con
más carga o retardo computacional entre dos registros de
reloj) se reduzca.
Desventajas de la segmentación
El programador puede conocer las unidades lógicas de su
programa, dándoles un tratamiento particular.
Es posible compilar módulos separados como segmentos el
enlace entre los segmentos puede suponer hasta tanto se
haga una referencia entre segmentos.
Debido a que es posible separar los módulos se hace más
fácil la modificación de los mismos. Cambios dentro de un
modulo no afecta al resto de los módulos.
Es fácil el compartir segmentos.
Es posible que los segmentos crezcan dinámicamente según
las necesidades del programa en ejecución.
Desventajas de la segmentación
Hay un incremento en los costos de hardware y de software
para llevar a cabo la implantación, así como un mayor
consumo de recursos: memoria, tiempo de CPU, etc.
Debido a que los segmentos tienen un tamaño variable se
pueden presentar problemas de fragmentación externas, lo
que puede ameritar un plan de reubicación de segmentos en
memoria principal.
Se complica el manejo de memoria virtual, ya que los discos
almacenan la información en bloques de tamaños fijos,
mientras los segmentos son de tamaño variable. Esto hace
necesaria la existencia de mecanismos más costosos que los
existentes para paginación.
Al permitir que los segmentos varíen de tamaño, puede ser necesarios
planes de reubicación a nivel de los discos, si los segmentos son
devueltos a dicho dispositivo; lo que conlleva a nuevos costos.
No se puede garantizar, que al salir un segmento de la memoria, este
pueda ser traído fácilmente de nuevo, ya que será necesario encontrar
nuevamente un área de memoria libre ajustada a su tamaño.
SEGMENTACION PAGINADA
Tanto la paginación como la segmentación tienen sus
ventajas y desventajas. También es posible combinar
estos dos esquemas para mejorar ambos. Veamos
como ejemplo el esquema del ordenador GE 645 con el
sistema operativo Multics.
Las direcciones lógicas estaban formadas a partir de un
número de segmento de 18 bits y un desplazamiento
de 16 bits.
unque este esquema crea un espacio de direcciones
correspondiente a una dirección de 34 bits, la tabla de
segmentos tiene un tamaño tolerable, puesto que el
número variable de segmentos conduce naturalmente
al uso de un Registro de Longitud de Tabla de
Segmentos.
Necesitamos tan solo el mismo número de entradas
en la tabla de segmentos que segmentos; no tenemos
por qué tener entradas vacías en la tabla de
segmentos.
ALGORITMOS DE REEMPLAZO DE PÁGINA
Existen diferentes algoritmos, entre ellos:
Algoritmo óptimo
Algoritmo FIFO
Algoritmo LRU
Algoritmos de aproximación al LRU
ALGORITMO OPTICO
Se reemplaza la página que va a tardar más
tiempo en ser usada
La tasa de fallos es la más baja posible
Algoritmo imposible de realizar
Criterio comparativo
ALGORITMO FIFO
Algoritmo FIFO muy sencillo de implementar
Inconvenientes:
Rendimiento del algoritmo pobre, paginas
frecuentemente usadas pueden ser sustituidas
Se puede presentar anomalía de belady:
aumento del número de fallos de pagina al
aumentar el número de marcos
ALGORITMO LRU (LEAST RECENTLY USED)
Si el bit de referencia está desactivado, se sustituye la página
Algoritmo de aproximación al reemplazo óptimo
Basado en utilizar el pasado reciente como una predicción del futuro más próximo
Sustituye la página menos usada en el pasado inmediato
Carece de la anomalía de Belady
La implementación requiere de hardware adicional:
Campo en las entradas de la tabla de páginas
Pila de las páginas en memoria
ALGORITMO DE RELOJ GLOBAL
Se colocan todas las páginas que pueden ser
sustituidas en una lista circular
Un proceso de sistema borra los bits de referencia
cada cierto tiempo utilizando un puntero giratorio
Si en la siguiente vuelta el bit sigue desactivado, la
página en cuestión es una buena candidata a ser
sustituida
ALGORITMO DE NFU (Not frecuently used)
Algoritmo que simula por software el algoritmo
LRU
Utiliza un contador asociado a cada página que
se incrementa en cada interrupción de reloj de
acuerdo con el valor del bit de referencia
En cada pulso de reloj se borra el valor del bit de
referencia
Si hay un fallo de página se elige la página con
el valor mínimo del contador para su sustitución