Administración de memoria Sistemas Operativos Memoria en un sistema multiprogramado Memoria Mario Medina (mariomedina@udec.cl) Memoria para el sistema operativo Memoria para los procesos Administración de memoria Reubicación An interface is what gets in between you and what you want to do. Protección Una interfaz es lo que está entre tú y lo que quieres hacer. Acesso compartido Organización lógica Carl Havermiste Sistemas Operativos, 2008-1 Organización fı́sica Sistemas Operativos, 2008-1 1 Reubicación Process control information Entry point to program Process Control Block Memoria compartida entre varios procesos Program Branch instruction Increasing address values Reference to data Data Current top of stack Stack Figure 7.1 Addressing Requirements for a Process Procesos son cargados y descargados de memoria • Programador no sabe por adelantado dónde residirán sus programas • Programas deben ser ejecutables en cualquier posición de memoria ◦ Direccionamiento relativo Carga de programas (Loading ) Absoluta Programa se carga siempre en misma posición de memoria Poco flexible Inadecuado para sistemas multiprogramados Reubicable Programa puede ser reubicado en memoria Compilador genera direcciones relativas Programa cargador suma dirección base X a toda referencia a memoria Sistemas Operativos, 2008-1 2 Carga dinámica de programas Process Control Block Program Carga reubicable ineficiente para sistemas multiprogramados • Necesario recalcular direcciones cada vez que se recarga un proceso Program Data Carga dinámica: direcciones son calculadas al ejecutar el programa • Requiere soporte en hardware via registro del procesador ◦ Registros base y lı́mite • Dirección relativa ◦ Se suma a registro base ◦ Se compara con registro lı́mite para obtener dirección absoluta Data Object Code Mayor flexibilidad Stack Process image in main memory Figure 7.13 The Loading Function Sistemas Operativos, 2008-1 3 Montaje de módulos (Linking) Relative address Process Control Block Base Register Recibe módulos objetos Adder Program Absolute address Bounds Register Comparator Data Interrupt to operating system Stack Process image in main memory Genera un conjunto integrado de módulos de programa y de datos Programa Cargador toma este módulo de carga y lo carga en memoria Cada módulo puede contener referencias a direcciones en • Otros módulos del programa • Otros módulos externos Montaje reubicable • Módulo objeto contiene referencias al comienzo del módulo • Programa de montaje reemplaza referencias por referencias al comienzo del módulo de carga • Módulo de carga puede ser cargado dinámicamente Figure 7.8 Hardware Support for Relocation Sistemas Operativos, 2008-1 4 Symbolic Addresses Library Absolute Addresses 1024 PROGRAM x JUMP X Relative Addresses 0 PROGRAM JUMP 1424 X PROGRAM JUMP 400 1424 400 Module 1 LOAD Y Module 2 Linker Load Module LOAD 2224 LOAD 1200 Loader DATA • DATA Y DATA 2224 1200 • • (a) Object module Module n (b) Absolute load module (c) Relative load module Main Memory Figure 7.15 Absolute and Relocatable Load Modules Figure 7.14 A Loading Scenario Montaje dinámico Relative Addresses 0 Module A Retrasar montaje de módulos externos hasta haber creado el módulo de carga Montaje dinámico al tiempo de carga • Módulo de carga se lee a memoria principal • Referencia a módulo externo ◦ Cargador trae módulo externo a memoria ◦ Cargador modifica direcciones relativas para apuntar a módulo externo Compartir código • Módulos externos compartidos entre aplicaciones • Una sola copia en memoria Montaje dinámico al tiempo de ejecución • Parte del montaje se pospone hasta el momento de ejecución • Referencias externas permanecen en el módulo de carga • Sistema Operativo ubica módulos ausentes y los carga en memoria External Reference to Module B CALL B; JSR "L" Length L Return Module A L–1 L Return Module B Module B JSR "L + M" CALL C; Length M L+M–1 Return L+M Return Module C Module C Length N Return L+M+N–1 Return (b) Load module (a) Object modules Figure 7.16 The Linking Function Sistemas Operativos, 2008-1 5 Protección y acceso compartido Organización de memoria Procesos deben ser protegidos contra interferencias de otros procesos Organización lógica Programador ve memoria como un vector de palabras o bytes. Proceso no debe hacer referencia a posiciones de memoria de otro proceso sin autorización No se conoce a priori la ubicación de un programa en memoria principal Cálculo dinámico de direcciones al tiempo de ejecución via punteros • Referencias a memoria deben ser comprobadas al tiempo de ejecución • Por hardware (software es muy lento!) Soporte hardware a la reubicación de procesos ayuda a asegurar protección Acceso a áreas compartidas Tanto código como datos pueden ser compartidos Soporte hardware a la reubicación de procesos ayuda a asegurar acceso compartido Sistemas Operativos, 2008-1 6 Programas están organizados en módulos • Módulos de código, datos, pila • Módulos de sólo lectura, sólo ejecución, lectura/escritura Módulos son escritos y compilados independientemente Módulos pueden tener distintos grados de protección Módulos pueden ser compartidos entre procesos Organización fı́sica Memoria fı́sica es jerárquica • Memoria principal (RAM) ◦ Rápida, volátil y cara • Memoria secundaria (magnética) ◦ Lenta, persistente y barata Sistema Operativo debe administrar tráfico entre niveles • Programador no tiene control sobre dónde reside un programa Sistemas Operativos, 2008-1 7