El reparto de la memoria introduce dos nuevos problemas a resolver.
o Cómo asegurar la independencia de ambas zonas (protección)
o Cómo asegurar que los programas de usuario no se vean afectados por esta nueva división de la memoria.
· Protección de memoria. Se establece una “dirección frontera” que limita la zona dónde está cargado el sistema operativo.
· Registro frontera. El sistema lo carga durante su inicialización. Se usa para evitar que la dirección frontera sea inamovible.
· Reasignación de direcciones.
o Estática. Durante la compilación
o Dinámica. Durante la ejecución
§ Espacio lógico entre direcciones
§ Espacio físico de direcciones
III. Multiprogramacion.
La memoria se divide en particiones o regiones
· Protección de la memoria. Se trata de proteger las particiones de accesos indeseados
o Se usan dos registros hardware como registros límite
o Se carga un registro con la disección de comienzo de la partición, tamaño de la misma... ( registros base y límite)
· Particiones contiguas de tamaño fija (cola de espera)
· Intercambio. Los programas pendientes de un evento o interrupción (E/S, tiempo, etc...) se pueden llevar a almacenamiento secundario, cargando en su lugar otro programa disponible.
· Memoria virtual. Técnica de gestión que combina hardware y software, permite la ejecución de programas parcialmente cargados en memoria virtual. El usuario piensa que todo el programa está en memoria pero sólo lo están algunas de sus partes.
o Si los programas se pueden ejecutar “por partes” la memoria lógica” puede ser mayor que la real disponible.
o Puesto que cada programa ocupa menos memoria real, se puede elevar el índice de multiprogramación y por lo tanto la eficiencia del sistema.
o Al cargar menos cantidad de cada programa se necesitan menos operaciones de E/S para las operaciones de carga e intercambio de los mismos.
o Tipos de memoria virtual:
§ Paginación. El programa se divide en bloques del mismo tamaño llamados páginas. Se divide la memoria física en trozos de tamaño fijo llamados marcos o “frames” y la memoria lógica en bloques del mismo tamaño llamados páginas. El SO mantiene una TPG (tabla de páginas) donde relaciona cada página cargada en memoria principal con el marco que la contenga. (Su dirección inicial en memoria real). Cada dirección que genere el procesador será interceptada y dividida en:
· Número de página
· Desplazamiento de página
§ Segmentación. El programa se divide en elementos afines de distinto tamaño.
o Gestión de la memoria: El sistema construirá la correspondiente “tabla de páginas” con cada nuevo programa. Cuando necesite cargar las páginas en memoria buscará en su lista de marcas libres.
o Memoria caché. Registros asociativos. Registro base de tabla de páginas que indica la dirección de la TPG del proceso en ejecución en ese momento. La memoria caché es una memoria muy pequeña y de muy alta velocidad donde se mantienen las entradas de la TPG más utilizadas.
o Ejecución de los programas:
1. Carga las posiciones del programa. Se cargarán:
· Cuando se necesiten (petición de página)
· Adelantado (anticipación o prepaginación)
2. Colocación. Gestión de la memoria virtual.
3. Sustitución. Toda la memoria real ocupada y cuando se necesite cargar una nueva parte del programa habrá que reemplazar alguna de las existentes.
o Carga por petición de páginas (Técnica de la memoria virtual) Sólo se cargarán aquellas páginas que se le pidan)
o Asignación de la memoria (¿Cuántas marcas debe asignar a cada proceso activo?). El sistema deberá asegurar a todo proceso un número mínimo de páginas de memoria (mínimo estructural).