SISTEMAS OPERATIVOS
ING. JAVIER RUIZ
I Lo que todo programador quisiera: estudiaremos la forma en que los sistemas
D • Tamaño operativos crean abstracciones de la memoria
E • Rapidez infinitas y cómo las administran.
A • No volátil
L • Económica
¿Cuál es la segunda opción? A través de los años se ha elaborado el concepto de jerarquía de
memoria,
Su trabajo es administrar la memoria con eficiencia: llevar el registro de cuáles
partes de la memoria están en uso, asignar memoria a los procesos cuando la
necesiten y desasignarla cuando terminen.
LA ABSTRACCIÓN MÁS SIMPLE DE MEMORIA ES NINGUNA ABSTRACCIÓN.
Las primeras computadoras mainframe (antes de 1960),
las primeras minicomputadoras (antes de 1970)
las primeras computadoras personales (antes de 1980) no tenían abstracción de
memoria.
Cada programa veía simplemente la memoria física.
Cuando un programa ejecutaba una instrucción como
MOV REGISTRO1, 1000
Tres formas simples de organizar la memoria con un sistema
operativo y un proceso de usuario
COMPUTADORAS
PERSONALES
ROM: BIOS
OS: MS -DOS
EJECUTAR VARIOS
PROGRAMAS
El registro PSW (Program Status Word, Palabra de estado del
programa)
también contenía una llave de 4 bits
a. Un programa de 16 KB
b. Otro programa de 16 KB
c. Los dos programas cargados
consecutivamente en la
memoria
Exponer la memoria física a los procesos tiene varias desventajas.
En primer lugar, si los programas de usuario pueden direccionar
cada byte de memoria, pueden estropear el sistema operativo con
facilidad, ya sea intencional o accidentalmente
Problema: protección y reubicación
Opciones de solución:
2.1. La noción de un espacio de direcciones
Una mejor solución es inventar una nueva abstracción para la
memoria: el espacio de direcciones.
Un espacio de direcciones (address space)
2.2. Intercambio
consiste en llevar cada proceso completo a memoria, ejecutarlo
durante cierto tiempo y después regresarlo al disco.
Los procesos inactivos mayormente son almacenados en disco, de
tal manera que no ocupan memoria cuando no se están ejecutando
(aunque algunos de ellos se despiertan periódicamente para
realizar su trabajo y después vuelven a quedar inactivos).
La asignación de la memoria cambia a medida que llegan procesos a la
memoria y salen de ésta. Las regiones sombreadas son la memoria sin
usar
COMPACTACIÓN DE MEMORIA
Cuando el intercambio crea varios huecos en la memoria,
es posible combinarlos todos en uno grande desplazando
los procesos lo más hacia abajo que sea posible.
Asignación de espacio
para un segmento de datos
en crecimiento.
Asignación de espacio para
una pila en crecimiento y un
segmento de datos en
crecimiento.
2.3. Administración de memoria libre
Cuando la memoria se asigna en forma dinámica, el sistema operativo
debe administrarla. En términos generales, hay dos formas de llevar el
registro del uso de la memoria: mapas de bits y listas libres.
2 métodos:
2.3.1. Administración de memoria con mapas de bits
Con un mapa de bits, la memoria se divide en unidades de asignación
tan pequeñas como unas cuantas palabras y tan grandes como varios
kilobytes. Para cada unidad de asignación hay un bit correspondiente
en el mapa de bits, que es 0 si la unidad está libre y 1 si está ocupada (o
viceversa).
2.3.2. Administración de memoria con listas ligadas
Otra manera de llevar el registro de la memoria es mantener una
lista ligada de segmentos de memoria asignados y libres, en
donde un segmento contiene un proceso o es un hueco vacío entre
dos procesos.
Cuatro combinaciones de los vecinos para el proceso en
terminación, X.
la memoria virtual es que cada programa tiene su propio espacio de
direcciones, el cual se divide en trozos llamados páginas. Cada página es
un rango contiguo de direcciones. Estas páginas se asocian a la memoria
física, pero no todas tienen que estar en la memoria física para poder
ejecutar el programa.
3.1 PAGINACIÓN
sistemas de memoria virtual utilizan una técnica llamada paginación
La posición y función de la MMU. Aquí la MMU se muestra como parte del chip
de CPU, debido a que es común esta configuración en la actualidad. Sin
embargo, lógicamente podría ser un chip separado y lo era hace años
Estas direcciones generadas por el programa se conocen como
direcciones virtuales y forman el espacio de direcciones
virtuales. En las computadoras sin memoria virtual, la dirección
física se coloca directamente en el bus de memoria y hace que
se lea o escriba la palabra de memoria física con la misma
dirección. Cuando se utiliza memoria virtual, las direcciones
virtuales no van directamente al bus de memoria.
OPERACIÓN MMU
3.2 TABLAS DE PÁGINAS
la tabla de páginas es asociar páginas virtuales a los marcos de página.
Hablando en sentido matemático, la tabla de páginas es una función
donde el número de página virtual es un argumento y el número de
marco físico es un resultado. Este resultado el campo de la página virtual
en una dirección virtual se puede reemplazar por un campo de marco de
página, formando así una dirección de memoria física.
Una típica entrada en la tabla de páginas.
3.3 ACELERACIÓN DE LA PAGINACIÓN
Acabamos de ver los fundamentos de la memoria virtual y la
paginación. Ahora es tiempo de entrar en más detalle acerca de
las posibles implementaciones. En cualquier sistema de
paginación hay que abordar dos cuestiones principales:
1. La asociación de una dirección virtual a una dirección física
debe ser rápida.
2. Si el espacio de direcciones virtuales es grande, la tabla de
páginas será grande
Cuando ocurre un fallo de página, el sistema operativo
tiene que elegir una página para desalojarla (eliminarla
de memoria) y hacer espacio para la página entrante. Si
la página a eliminar se modificó
1. El algoritmo de reemplazo de páginas óptimo
2.El algoritmo de reemplazo de páginas: no usadas recientemente
3. El algoritmo de reemplazo de páginas: Primera en entrar, primera
en salir (FIFO)
4. El algoritmo de reemplazo de páginas: segunda oportunidad
5. El algoritmo de reemplazo de páginas: reloj
6. El algoritmo de reemplazo de páginas: menos usadas recientemente
(LRU)
7. El algoritmo de reemplazo de páginas WSClock
Algoritmos de reemplazo de páginas
descritos
“liberar al programador de tener que
administrar las tablas en expansión y
contracción”
Una solución simple
proporcionar la máquina con muchos espacios de direcciones por
completo independientes, llamados segmentos.
Cada segmento consiste en una secuencia lineal de direcciones,
desde 0 hasta cierto valor máximo. La longitud de cada segmento
puede ser cualquier valor desde 0 hasta el máximo permitido.
Los distintos segmentos pueden tener distintas longitudes (y por
lo general así es). Además las longitudes de los segmentos
pueden cambiar durante la ejecución.
La longitud de un segmento de pila puede incrementarse cada
vez que se meta algo a la pila y decrementarse cada vez que se
saque algo.
Memoria segmentada o bidimensional, el programa
debe suministrar una dirección en dos partes, un
número de segmento y una dirección dentro del
segmento.
Una memoria segmentada permite que cada tabla crezca o
se reduzca de manera independiente a las otras tablas.
Si los segmentos son extensos, puede ser inconveniente (o incluso
imposible) mantenerlos completos en memoria principal. Esto nos
lleva a la idea de paginarlos, de manera que sólo las páginas que
realmente se necesiten tengan que estar presentes.
Segmentación con paginación: MULTICS
GRACIAS…