Download - SO - Administración de Memoria
Administración de Memoria
Luis A. Eraso
1GB SDRAM. Wikimedia Commons
Resumen del móduloObjetivo del módulo:
• Entender como los sistemas operativos crean abstracciones de la memoria y como las administran.
Contenido:
• Jerarquía de memoria
• El administrador de memoria
• Esquemas para la administración de la memoria• Sin abstracciones• Espacios de direcciones• Memoria Virtual• Algoritmos de remplazo de páginas• Cuestiones de implementación
Recursos:
• TANENBAUM, Andrew S. Sistemas operativos modernos. Pearson Educación, 2003. Capitulo 3. Administración de memoria.
• tutorialspoint.com. Operating System Tutorial. Cap. 9 Memory Management, Cap. 10 Virtual Memory. [En línea: 18-09-2014 http://www.tutorialspoint.com/operating_system/index.htm]
Evaluación:
• Examen 60%. Se realiza en la semana definida para parciales, 6-10 Octubre.
• Talleres 30%. Fecha de entrega máxima un día antes del parcial, entregas posteriores se califican sobre 4.
• Quiz 10%. Fecha: a mitad del corte, 25-30 Septiembre. Temas: los vistos hasta el día del quiz.
Jerarquía de memoria
• Características ideales• Memoria privada• De tamaño y rapidez infinitos• No volátil• Económica
• Lo que se tiene• Memoria caché
• Pocos MB, rápida , volátil, costosa
• Memoria principal• 1~8GB, mediana velocidad, volátil,
mediano precio
• Almacenamiento en Disco • ~1TB, lento, no volátil, económico
• Almacenamiento removible• CDs, DVDs, Memorias USB-Flash
El trabajo del sistema operativo es abstraer esta jerarquía en un modelo útil y después administrarla
Esto seria lo ideal para cada programa en ejecución
Administrador de memoria
• Administrador de memoria: parte del sistema operativo que administra (pate de) la jerarquía de memoria. • Su trabajo es administrar la memoria con eficiencia
• Llevar el registro de cuales partes de la memoria están en uso
• Asignar memoria a los procesos cuando la necesiten
• Desasignar la memoria cuando los procesos terminen
Administrador de memoria
• Varios esquemas de administración de memoria• Muy simples muy sofisticados• Memoria caché: es administrada desde el hardware• Memoria principal: lo que corresponde a este capitulo• Memoria permanente: Próximo modulo
• Esquemas• Sin abstracción de memoria• Espacios de direcciones• Memoria virtual• Algoritmos de remplazo de páginas• Cuestiones de implementación
Sin abstracción de memoria
• La abstracción mas simple de memoria es ninguna abstracción• Usada por:
• Los primeras computadores mainframe (1960)• Los primeras minicomputadores (antes 1970)• Las primeros computadores personales (antes de 1980)
• Cada programa veía simplemente la memoria física.• Ejemplo: Mover el contenido de la ubicación de memoria física 1000 al
REGISTRO1. Instrucción ejecutada por el programa:
MOV REGITRO1,1000
• Bajo estas condiciones en principio, no es posible tener dos programas ejecutándose en memoria al mismo tiempo.
• Si un programa escribe un valor en la ubicación 2000, se borra cualquier valor que el segundo programa haya tenido almacenado allí
• Ambos programas fallarían de inmediato
Cada dirección correspondía a una celda que contenía cierto numero de bits
Sin abstracción de memoria• Opciones posibles de organización
a. El S.O. puede estar en la parate inferior de la RAMb. El S.O. puede estar en la ROMc. Controladores en ROM y S.O en RAM
• Los modelos a y c tienen la desventaja que un error en el programa de usuario puede borrar el sistema operativo
• En estos modelos solo se puede ejecutar un proceso a la vez• Se ejecuta un comando, el S.O. copia el programa del disco a memoria y lo ejecuta• Devuelve resultado y espera nuevo comando
Tanenbaum, 2009
Se utilizó en mainframes pero actualmente no
se emplea
Antiguas computadoras de bolsillo y sistemas integrados
Primeros computadores
personales. ROM: BIOS.
S.O.: MS-DOS
Sin abstracción de memoria• Ejecución múltiple de programas sin abstracción
de memoria:• Con la adición de cierto hardware es posible ejecutar
varios programas concurrentemente.
• Lo que se necesita:• Memoria dividida en bloques, cada bloque con una llave de
acceso.
• Cada llave es guardada en registros espaciales de la CPU.
• Cada programa en ejecución guarda en su palabra de estado (PSW) la llave correspondiente a su sector.
• Mediante Hardware se controlaba cualquier intento de acceder a una dirección de memoria sin la llave correspondiente.
Sin abstracción de memoriaEjemplo a. Programa 1 se ejecuta en memoria
• Un programa utiliza las direcciones de memoria desde la posición 0 a la posición 16380
Posición de memoria: 0Instrucción: Saltar a la posición 24
Posición de memoria: 24Instrucción: Instrucción MOV (Mover un registro a una dirección de memoria.Posición de memoria: 28Instrucción: Instrucción ADD (Suma)
Posición de memoria: 16380Instrucción: Fin de programa
Tanenbaum, 2009
Sin abstracción de memoriaEjemplo b. Programa 2 se ejecuta en memoria
• Un programa utiliza las direcciones de memoria desde la posición 0 a la posición 16380
Posición de memoria: 0Instrucción: Saltar a la posición 28
Posición de memoria: 28Instrucción: Instrucción CMP
Posición de memoria: 16380Instrucción: Fin de programa
Tanenbaum, 2009
Sin abstracción de memoriaEjemplo c. Los programas 1 y 2 se ejecuta en memoria al mismo tiempo:
Sin reubicación estática: ERRORLa posición 28 esta en el Programa 1
Sin reubicación estática:Posición de memoria: 16384Instrucción: Saltar a la posición 28
Reubicación estática: cuando se cargaba un programa en la dirección 16.384, se sumaba el valor constante 16.384 a todas las direcciones del programa durante el proceso de carga.
Con reubicación estática:Posición de memoria: 16384Instrucción: Saltar a la posición 28 + 16384 = 16412
Tanenbaum, 2009
Sin abstracción de memoria• Problemas del modelo sin abstracción de memoria
• Los programas de usuario pueden dañar el SO con facilidad al acceder voluntaria o involuntariamente a direcciones de memoria incorrectas.
• Es difícil tener varios programas en ejecución a la vez. Se tiene un modelo que lo permite, pero es muy complejo.
• Para tener varios programas en ejecución se necesita• Protección
• Reubicación
Se puede concluir con base al modelo de ejecución de varios procesos sin abstracción de memoria
ESQUEMA ADMON MEMORIA:Espacio de direccionesEspacio de direcciones
• Una abstracción de la memoria
• Es el conjunto de direcciones que puede utilizar un proceso para direccionar la memoria
• Cada proceso tiene su propio espacio de direcciones, independiente de los que pertenecen a otros procesos
Así como el concepto del proceso crea un tipo de CPU abstracta para ejecutar programas, elespacio de direcciones crea un tipo de memoria abstracta para que los programas vivan ahí
Una abstracción de memoriaEspacio de direcciones• Ejemplos de espacio de direcciones en otros
contextos• Números de teléfono:
• Números del 0 000 000 al 9 999 999
• Puertos de E/S en un PC• Puertos del 0 al 16383
• Direcciones IP: • Direcciones de 0 a 2^23 -1
• Dominios en internet: Ejemplo dominio “.com” • Todas las direcciones que finalicen con “.com”
Una abstracción de memoriaEspacio de direcciones
• Registros base y limite• Versión muy simple de la ubicación dinámica
• Consiste en asociar el espacio de direcciones de cada proceso sobre una parte distinta de la memoria física.
• Incluir en la CPU dos registros de hardware especiales• Registros base y limite
• Los programas se cargan en ubicaciones consecutivas de memoria en donde haya espacio y sin reubicación durante la carga
Espacio de direcciones• Modelo de registros base y limite
Espacio de direcciones del
Proceso 1251.000 – 300.000
Espacio de direcciones del
Proceso 3420.000 – 650.000
Incluir en la CPU dos registros de hardware especiales
Proceso 2: Base = 300.000, Limite = 120.000
Los programas se cargan en ubicaciones consecutivas de
memoria en donde haya espacio y sin reubicación durante la carga
Fuente: http://www.tutorialspoint.com/operating_system/os_memory_management.htm
1. Cuando se ejecuta un proceso:el registro base se carga con la dirección física donde empieza el programa en memoriael registro límite se carga con la longitud del programa
2. Para el programa 1:Registro base = 0Registro límite = 16384
Cada vez que un proceso hace
referencia a la memoria:
• Obtener una instrucción de memoria
• Leer o escribir una palabra de datos
Ejecución de una instrucción:
El hardware de la CPU suma el valor
base a la dirección generada por el
proceso antes de enviar la dirección al
bus de memoria
JMP 28 JMP 28+16384 JMP 16412
Tanenbaum, 2009
Espacio de direcciones• La cantidad total de RAM que requieren todos los
procesos es a menudo mucho mayor de lo que puede acomodarse en memoria.
• En los S.O. se crean entre 40 y 60 procesos o más cada vez que se inicia la computadora.• Buscar actualizaciones (5 a 10 MB de memoria)• Comprobar el correo entrante• Conexiones de red entrantes• Programas de aplicaciones de usuario (50 a 200 MB)
• Esquemas para lidiar con este problema• Intercambio• Memoria virtual
Problema: La cantidad de memoria no es suficiente para contener todos los programas en ejecución.
Intercambio
A esta en memoria
B se crea o intercambia desde disco
C se crea o intercambia desde disco
A se intercambia desde disco
Llega D Sale B
Entra A de nuevo en
una ubicación distinta
Tanenbaum, 2009
Intercambio
Entra A de nuevo en
una ubicación distinta
Como A está ahora en una ubicación distinta las direcciones que contiene se deben reubicar• Mediante software cuando se intercambia • Mediante hardware durante la ejecución del programaSe pueden utilizar• Los registros base y límite
Tanenbaum, 2009
Intercambio• ¿Qué cantidad de memoria se debe asignar a un
proceso cuando este se crea o se intercambia?
Asignación dinámicaa. Asignación de espacio para un segmento de datos en crecimiento.b. Asignación de espacio para una pila en crecimiento y un segmento de datos en crecimiento.
Tanenbaum, 2009
Asignación estáticaSe crea con un tamaño fijo que nunca cambia. El sistema operativo asigna exactamente lo necesario, ni más ni menos.