Lección 6 La gestión de memoria Grupo ARCOS Diseño de Sistemas Operativos Grado en Ingeniería Informática Universidad Carlos III de Madrid Objetivos 2 Conocimiento de los métodos de gestión interna de recursos en un sistema operativo. Usar herramientas de monitorización, gestión y ajuste de sistemas operativos. ARCOS @ UC3M Alejandro Calderón Mateos Lecturas recomendadas Base Recomendada Carretero 2007: 1. 1. Tanenbaum 2006(en): 1. Cap.4 1. Stallings 2005: 2. 1. Parte tres Silberschatz 2006: 3. 1. 3 Cap.4 Cap. 4 ARCOS @ UC3M Alejandro Calderón Mateos ¡ATENCIÓN! 4 Estas transparencias son un guión para la clase. Los libros dados en la bibliografía junto con lo explicado en clase representa el material de estudio para el temario de la asignatura. ARCOS @ UC3M Alejandro Calderón Mateos Contenidos 1. Introducción 2. Arquitectura del subsistema de memoria 1. Objetivos principales 3. Regiones de memoria de un proceso 4. Memoria virtual 5. Gestión a nivel del sistema operativo 5 ARCOS @ UC3M Alejandro Calderón Mateos Contenidos 1. Introducción 2. Arquitectura del subsistema de memoria 1. Objetivos principales 3. Regiones de memoria de un proceso 4. Memoria virtual 5. Gestión a nivel del sistema operativo 6 ARCOS @ UC3M Alejandro Calderón Mateos Introducción 7 Definiciones Entornos ARCOS @ UC3M Alejandro Calderón Mateos Introducción 8 Definiciones Entornos ARCOS @ UC3M Alejandro Calderón Mateos Programa y proceso Programa: conjunto de datos e instrucciones ordenadas que permiten realizar una tarea o trabajo específico. Disco Fichero ejecutable 9 ARCOS @ UC3M Alejandro Calderón Mateos Programa y proceso Programa: conjunto de datos e instrucciones ordenadas que permiten realizar una tarea o trabajo específico. Para su ejecución, ha de estar en memoria Memoria principal Disco Fichero ejecutable Sistema Operativo 10 ARCOS @ UC3M Alejandro Calderón Mateos Programa y proceso Programa: conjunto de datos e instrucciones ordenadas que Interfaz funcional: permiten realizar una tarea o trabajo específico. valor = read (dirección) Para su ejecución, ha de estar en memoria write (dirección, valor) Memoria principal Disco Fichero ejecutable Sistema Operativo 11 ARCOS @ UC3M Alejandro Calderón Mateos Programa y proceso Proceso: programa en ejecución. Memoria principal Disco pila datos instrucciones proceso1 Fichero ejecutable Sistema Operativo 12 ARCOS @ UC3M Alejandro Calderón Mateos Programa y proceso Proceso: programa en ejecución. Es posible un mismo programa ejecutarlo varias veces (lo que da lugar a varios procesos) Memoria principal pila datos proceso2 instrucciones Disco pila datos instrucciones proceso1 Fichero ejecutable Sistema Operativo 13 ARCOS @ UC3M Alejandro Calderón Mateos Imagen de un proceso Imagen de memoria: conjunto de direcciones de memoria asignadas al programa que se está ejecutando (y contenido) Memoria principal pila datos proceso2 instrucciones Disco pila datos instrucciones proceso1 Fichero ejecutable Sistema Operativo 14 ARCOS @ UC3M Alejandro Calderón Mateos Introducción 15 Definiciones Entornos ARCOS @ UC3M Alejandro Calderón Mateos Sistemas monoprogramados memoria Proceso Sistema operativo 16 Ejecución un proceso como máximo Memoria compartida entre el sistema operativo y el proceso Ej.: MS-DOS, DR-DOS, etc. ARCOS @ UC3M Alejandro Calderón Mateos Sistemas multiprogramados memoria Proceso 1 Se mantiene más de un proceso en memoria Se mejorar ocupación de CPU: Proceso 2 La gestión de memoria es una tarea de optimización bajo restricciones Ej.: Unix, Windows NT, etc. Proceso 3 Sistema operativo 17 proceso bloqueado -> ejecuta otro ARCOS @ UC3M Alejandro Calderón Mateos Sistemas multiprogramados memoria Proceso 1 Se mantiene más de un proceso en memoria Se mejorar ocupación de CPU: Proceso 2 La gestión de memoria es una tarea de optimización bajo restricciones Ej.: Unix, Windows NT, etc. Proceso 3 Sistema operativo 18 proceso bloqueado -> ejecuta otro ARCOS @ UC3M Alejandro Calderón Mateos Sistemas multiprogramados ejemplo de cálculo de utilización memoria p = % tiempo un proceso está bloqueado pn = probabilidad de que n procesos independientes estén todos bloqueados 1- pn = probabilidad de que la CPU no esté ociosa (no idle) Proceso 1 Proceso 2 Proceso 3 Sistema operativo 19 n = 5 procesos independientes p = 0,8 del tiempo bloqueado (20% en CPU) utilización = 5*20% → 100% utilización = 1-0,85 → 67% 1-0,810 → 89% http://www.cs.rutgers.edu/~pxk/416/notes/content/09-memory_management-slides-6.pdf ARCOS @ UC3M Alejandro Calderón Mateos Contenidos 1. Introducción 2. Arquitectura del subsistema de memoria 1. Objetivos principales 3. Regiones de memoria de un proceso 4. Memoria virtual 5. Gestión a nivel del sistema operativo 20 ARCOS @ UC3M Alejandro Calderón Mateos Arquitectura de la gestión de memoria antigua arquitectura proceso Interfaz del Sistema Operativo Sistema de ficheros 21 Gestión de memoria Gestión de procesos Red ARCOS @ UC3M Alejandro Calderón Mateos Arquitectura de la gestión de memoria nueva arquitectura proceso Interfaz del Sistema Operativo Sistema de ficheros Gestión de procesos Red Gestión de memoria 22 ARCOS @ UC3M Alejandro Calderón Mateos Ámbito de la gestión de E/S Encargado de la gestión de la memoria entre procesos y el kernel El resto del sistema operativo es su mejor cliente: proceso Interfaz del Sistema Operativo Sistema de ficheros Gestión de procesos Gestión de memoria 23 Red Gestión de procesos Gestión de ficheros Pero es un reflejo de las necesidades de los procesos ARCOS @ UC3M Alejandro Calderón Mateos Objetivos generales de la E/S 1. Localización de referencias a memoria proceso 2. Protección de espacios de memoria Interfaz del Sistema Operativo 3. Gestión de procesos Red 4. 5. los programas se dividen en módulos independientes Organización física (de la memoria) 24 permitir que varios procesos accedan a un espacio de memoria común Organización lógica (de programas) Gestión de memoria prohibir referencias entre procesos distintos Compartición de espacios de memoria Sistema de ficheros ha de traducir las referencias a memoria a direcciones físicas rellenar la memoria con múltiples programas y módulos http://doursat.free.fr/docs/CS446_F05/CS446_F05_3_Memory1.pdf ARCOS @ UC3M Alejandro Calderón Mateos Objetivos generales de la E/S 1.- Localización de referencias a memoria El programador no tiene porque saber dónde se colocará el programa en memoria cuando se ejecute 25 Un programa puede ser ejecutado varias veces (cada una de ellas irá a una parte de memoria diferente) Mientras que el programa sea ejecutado también puede mandarse a disco y volver a memoria en una posición diferente Memoria principal pila proceso2 datos instrucciones pila proceso1 datos instrucciones Sistema Operativo Por tanto, las referencias lógicas (relativas) de memoria han de traducirse a direcciones físicas (absolutas) http://doursat.free.fr/docs/CS446_F05/CS446_F05_3_Memory1.pdf Disco Fichero ejecutable ARCOS @ UC3M Alejandro Calderón Mateos Objetivos generales de la E/S 2.- Protección de espacios de memoria Los procesos no han de usar posiciones de memoria de otros procesos Memoria principal pila Excepción: depurador, … proceso2 datos Las posiciones de memoria tendrían que ser comprobadas en tiempo de ejecución Las posiciones de memoria han de comprobarse por hardware 26 No es posible comprobar los accesos a memoria física en tiempo de compilación instrucciones pila proceso1 datos instrucciones Sistema Operativo El sistema operativo no puede anticipar las referencias de memoria (calculadas) que un proceso va a realizar http://doursat.free.fr/docs/CS446_F05/CS446_F05_3_Memory1.pdf ARCOS @ UC3M Alejandro Calderón Mateos Objetivos generales de la E/S 3.- Compartición de espacios de memoria Opuesto al punto anterior (aparentemente) debe ser posible que varios procesos puedan acceder a la misma porción de memoria: pila proceso2 datos instrucciones pila proceso1 datos instrucciones Sistema Operativo Debe ser solicitado y concedido explícitamente 27 Procesos ejecutando el mismo código podrían compartir la misma copia de código en memoria Procesos que cooperan en la misma tarea pueden necesitar acceder a las mismas estructuras de datos Memoria principal Depurador, etc. http://doursat.free.fr/docs/CS446_F05/CS446_F05_3_Memory1.pdf ARCOS @ UC3M Alejandro Calderón Mateos Objetivos generales de la E/S 4.- Organización lógica (de los programas) Los datos de un proceso no son homogéneos Ej.: código, variables locales, etc. Cada tipo de información tiene distintas necesidades Lectura, escritura, ejecución, etc. Creación estática o dinámica La información de un proceso (su imagen) se divide en diferentes regiones Cada región se adapta a un tipo de datos concreto (código, variable dinámica, etc.) 28 Memoria principal pila proceso2 datos instrucciones pila proceso1 datos instrucciones Sistema Operativo Hay que gestionar las zonas sin asignar (huecos) Gestionar la memoria de un proceso es gestionar cada una de sus regiones ARCOS @ UC3M Alejandro Calderón Mateos Objetivos generales de la E/S 5.- Organización física (de la memoria) Poder ejecutar un proceso cuando su imagen de memoria es más grande que la memoria principal: proceso3 Poder ejecutar un conjunto de procesos cuya ocupación de memoria es mayor que la memoria principal proceso2 Evitar pérdida de memoria por fragmentación: 29 Memoria principal (512 MB) Se guardan en disco las partes del proceso que no se usen en el momento Hay memoria física libre pero está fragmentada en espacios no contiguos que el sistema de gestión no puede aprovechar 32 bits (4 GB) proceso1 Sistema Operativo Disco (1 TB) Fichero ejecutable ARCOS @ UC3M Alejandro Calderón Mateos Contenidos 1. Introducción 2. Arquitectura del subsistema de memoria 1. Objetivos principales 3. Regiones de memoria de un proceso 4. Memoria virtual 5. Gestión a nivel del sistema operativo 30 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de programa int a; int b = 5; void f(int c) { int d; static e = 2; b = d + 5; ....... return; Variable globales • Estáticas • Se crean al iniciar el programa • Existen durante ejecución • Dirección fija en memoria y ejecutable } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) ....... free (p) .... exit (0) } 31 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de programa int a; int b = 5; void f(int c) { int d; static e = 2; b = d + 5; ....... return; Variable locales y parámetros • Dinámicas • Se crean al invocar la función • Se destruyen al retornar • Recursividad: varias instancias de una variable } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) ....... free (p) .... exit (0) } 32 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de programa int a; int b = 5; void f(int c) { int d; static e = 2; b = d + 5; ....... return; Variable dinámicas • Variables locales o globales sin espacio asignado en tiempo de compilación • Se reserva (y libera) espacio en tiempo de ejecución } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) ....... free (p) .... exit (0) } 33 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de programa int a; int b = 5; void f(int c) { int d; static e = 2; b = d + 5; ....... return; Código • Estático • Se conoce en tiempo de compilación • Secuencia de instrucciones a ser ejecutadas } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) ....... free (p) .... exit (0) } 34 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Conjunto de módulos en lenguaje de alto nivel Fases: Compilación Montaje Enlazado dinámico Ejecución Módulo fuente B Compilador Módulo objeto A Módulo objeto B Bibliotecas estáticas Montador Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 35 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Conjunto de módulos en lenguaje de alto nivel Fases: Compilación Montaje Enlazado dinámico Ejecución Módulo fuente B Compilador extern void decir_hola( void ) ; Módulo objeto A Módulo int main (int argc, char *argv[]) Bibliotecas objeto B estáticas { decir_hola() ; return 0; Montador } Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 36 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Conjunto de módulos en lenguaje de alto nivel Fases: Compilación Montaje Enlazado dinámico Ejecución Módulo fuente B Compilador gcc –Wall –g –c a.c –o a.o Módulo objeto A Módulo objeto B Bibliotecas estáticas Montador Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 37 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Compilador #include <stdio.h> Conjunto de módulos en Módulo void decir_hola( void ) lenguaje de alto nivel objeto A { Fases: Compilación Montaje Enlazado dinámico Ejecución Módulo fuente B Módulo objeto B Bibliotecas estáticas printf("Hola mundo...\n") ; } Montador Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 38 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Compilación Montaje Enlazado dinámico Ejecución Compilador gcc –Wall –g –c b.c –o b.o Conjunto de módulos en lenguaje de alto nivel Fases: Módulo fuente B Módulo objeto A Módulo objeto B Bibliotecas estáticas Montador Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 39 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Conjunto de módulos en lenguaje de alto nivel Compilador Módulo objeto A Fases: Módulo fuente B Compilación Montaje gcc –Wall –g –o a.exe a.o b.o -lc Enlazado dinámico Ejecución Módulo objeto B Bibliotecas estáticas Montador Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 40 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Conjunto de módulos en lenguaje de alto nivel Compilador Módulo objeto A Fases: Módulo fuente B Módulo objeto B Bibliotecas estáticas Montador Compilación Montaje Enlazado dinámico Ejecución Ejecutable A Bibliotecas dinámicas Cargador ./a.exe 41 Proceso 1 ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas Módulo fuente A Aplicación Conjunto de módulos en lenguaje de alto nivel Fases: Compilación Montaje Enlazado dinámico Ejecución Módulo fuente B Compilador Módulo objeto A Módulo objeto B Bibliotecas estáticas Montador Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 42 ARCOS @ UC3M Alejandro Calderón Mateos Bibliotecas de objetos Biblioteca Colección de módulos objetos relacionados Biblioteca Módulo objeto X Carga y montaje en tiempo de compilación Biblioteca dinámica 43 … Biblioteca estática Módulo objeto Y Carga y montaje en tiempo de ejecución Se indica al montar qué biblioteca usar, carga y montaje posterior ARCOS @ UC3M Alejandro Calderón Mateos b.c Bibliotecas de objetos #include <stdio.h> void decir ( char * str ) { printf("%s",str) ; } Biblioteca Colección de módulos objetos relacionados a.c Biblioteca Módulo objeto X extern void decir ( char * str ) ; Módulo … objeto Y void decir_hola( void ) { decir("Hola mundo...\n") ; } main.c void decir_hola( void ) ; extern Biblioteca estática Carga y montaje en intmain (int argc, char *argv[]) { decir_hola() ; return 0 ; } Carga y montaje en tiempo de compilación Biblioteca dinámica 44 tiempo de ejecución Se indica al montar qué biblioteca usar, carga y montaje posterior ARCOS @ UC3M Alejandro Calderón Mateos Bibliotecas de objetos Biblioteca Colección de módulos objetos relacionados Módulo objeto X Biblioteca gcc –Wall –g –o a.o –c a.c gcc –Wall –g –o b.o –c b.c Módulo … ar rcs libestatica.a a.o b.o objeto Y gcc -Wall -g -o main.exe main.c -lestatica -L./ ./main.exe Biblioteca estática Biblioteca dinámica 45 Carga y montaje en tiempo de compilación Carga y montaje en tiempo de ejecución Se indica al montar qué biblioteca usar, carga y montaje posterior ARCOS @ UC3M Alejandro Calderón Mateos Bibliotecas de objetos Biblioteca Colección de módulos objetos relacionados Biblioteca Módulo objeto X Biblioteca estática … gcc –Wall –g –fPIC –o a.o –c a.c gcc –Wall –g –fPIC –o b.o –c b.c gcc -shared -Wl,-soname,libdinamica.1 \ -o libdinamica.so.1.0 a.o b.o ln –s libdinamica.so.1.0 libdinamica.so gcc –Wall –g –o main.exe main.c –ldinamica –L./ Carga y montaje en tiempo de compilación env LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. ./main.exe Biblioteca dinámica 46 Módulo objeto Y Carga y montaje en tiempo de ejecución Se indica al montar qué biblioteca usar, carga y montaje posterior ARCOS @ UC3M Alejandro Calderón Mateos Generación y ejecución de programas resumen Módulo fuente A Código: Globales Locales y parámetros Dinámicas Código Módulo fuente B Compilador Módulo objeto A Módulo objeto B Bibliotecas estáticas Montador Compilación: Compilación Montaje Enlazado dinámico Ejecución Ejecutable A Bibliotecas dinámicas Cargador Proceso 1 47 ARCOS @ UC3M Alejandro Calderón Mateos Organización lógica (de los programas) modelo de memoria de un proceso Un proceso está formado por una serie de regiones. Una región es una zona contigua del espacio de direcciones de un proceso con las mismas propiedades. Principales propiedades: 48 Permisos: lectura, escritura y ejecución. Compartición entre hilos: private o shared Tamaño (fijo/variable) Valor inicial (con/sin soporte) Creación estática o dinámica Sentido de crecimiento Sistemas operativos: una visión aplicada 0xFFFF.. pila datos código 0x0000.. ARCOS @ UC3M Alejandro Calderón Mateos Organización lógica (de los programas) modelo de memoria de un proceso Código o Texto Compartida, RX, T. Fijo, soporte en ejecutable 0xFFFF.. pila Datos Con valor inicial Privada, RW, T. Fijo, soporte en ejecutable Sin valor inicial Privada, RW, T. Fijo, sin soporte (rellenar 0) datos Pila 49 Privada, RW, T. Variable, sin soporte (rellenar 0) Crece hacia direcciones más bajas Pila inicial: argumentos del programa Sistemas operativos: una visión aplicada código 0x0000.. ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de programa int a; int b = 5; void f(int c) { int d; static e = 2; 0xFFFF.. pila b = d + 5; ....... return; } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) ....... free (p) .... exit (0) } 50 datos estáticos sin valor inicial datos estáticos con valor inicial código 0x0000.. ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de programa int a; int b = 5; void f(int c) { int d; static e = 2; 0xFFFF.. pila b = d + 5; ....... return; } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) ....... free (p) .... exit (0) } 51 datos estáticos sin valor inicial datos estáticos con valor inicial código 0x0000.. ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de programa int a; int b = 5; void f(int c) { int d; static e = 2; 0xFFFF.. pila b = d + 5; ....... return; } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) ....... free (p) .... exit (0) } 52 datos estáticos sin valor inicial datos estáticos con valor inicial código 0x0000.. ARCOS @ UC3M Alejandro Calderón Mateos Organización lógica (de los programas) modelo de memoria de un proceso 53 Región de Heap Soporte de memoria dinámica (malloc en C) Privada, RW, T. Variable, sin soporte (rellenar 0) Crece hacia direcciones más altas 0xFFFF.. pila … Memoria compartida Región de una zona de memoria compartida Compartida, T. Variable, sin soporte (rellenar 0) Protección especificada por programa Pilas de threads datos código Cada pila de thread corresponde con una región Mismas características que pila del proceso Sistemas operativos: una visión aplicada 0x0000.. ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de programa int a; int b = 5; void f(int c) { int d; static e = 2; 0xFFFF.. pila b = d + 5; ....... return; } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) ....... free (p) .... exit (0) } 54 datos dinámicos datos estáticos código 0x0000.. ARCOS @ UC3M Alejandro Calderón Mateos Organización lógica (de los programas) modelo de memoria de un proceso 0xFFFF.. Ficheros proyectados Región asociada al fichero proyectado Compartida, T. Variable, soporte en fichero Protección especificada en proyección Biblioteca dinámica Regiones asociadas al código y datos de la biblioteca pila … datos código 0x0000.. 55 Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Organización lógica (de los programas) modelo de memoria de un proceso 0xFFFF.. Ficheros proyectados Región asociada al fichero proyectado Compartida, T. Variable, soporte en fichero Protección especificada en proyección Biblioteca dinámica Regiones asociadas al código y datos de la biblioteca pila … datos código 0x0000.. 56 Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Ficheros proyectados en memoria (1/4) Imagen de memoria de un proceso Memoria principal Fichero proyectado en memoria fichero swap 57 Una región de un proceso se asocia a un fichero Habrá páginas del fichero en memoria principal El proceso direcciona dentro del fichero con instrucciones de acceso a memoria (en lugar de read/write) ARCOS @ UC3M Alejandro Calderón Mateos Ficheros proyectados en memoria (2/4) void *mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off); Establece una proyección entre el espacio de direcciones de un proceso y un descriptor de fichero u objeto de memoria compartida. Devuelve la dirección de memoria donde se ha proyectado el fichero. addr dirección donde proyectar. Si NULL el SO elige una. len especifica el número de bytes a proyectar. prot el tipo de acceso (lectura, escritura o ejecución). flags especifica información sobre el manejo de los datos proyectados (compartidos, privado, etc.). fildes representa el descriptor de fichero del fichero o descriptor del objeto de memoria a proyectar. off desplazamiento dentro del fichero a partir del cual se realiza la proyección. void munmap(void *addr, size_t len); Desproyecta parte del espacio de direcciones de un proceso comenzando en la dirección addr. 58 Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Ficheros proyectados en memoria (3/4) Cuántas veces aparece carácter en fichero proyectando en memoria. /* 1) Abrir el fichero */ fd=open(argv[2], O_RDONLY)); /* Abre fichero */ fstat(fd, &fs); /* Averigua long. fichero */ /* 2) Proyectar el fichero */ org=mmap((caddr_t)0, fs.st_size, PROT_READ, MAP_SHARED, fd, 0)); close(fd); /* Se cierra el fichero */ /* 3) Bucle de acceso */ p=org; for (i=0; i<bstat.st_size; i++) if (*p++==caracter) contador++; /* 4) Eliminar la proyección */ munmap(org, bstat.st_size); printf("%d\n", contador); 59 Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Ficheros proyectados en memoria (4/4) Posibilidad de conocer los archivos proyectados del proceso con identificador <PID> # cat /proc/<PID>/maps 08048000-08049000 08049000-0804a000 0804a000-08054000 40000000-4000a000 4000a000-4000b000 40010000-40028000 40028000-40029000 40029000-400ba000 400ba000-400c2000 400c2000-400ce000 bfffc000-c0000000 direccion 60 r-xp rw-p rwxp r-xp rw-p r-xp rw-p r-xp rw-p rw-p rwxp 00000000 00000000 00000000 00000000 00009000 00000000 00017000 00000000 00090000 00000000 ffffd000 08:11 08:11 00:00 08:01 08:01 08:01 08:01 08:01 08:01 00:00 00:00 perms offset dev 630795 630795 0 30602 30602 30614 30614 30606 30606 0 0 nodo-i <ruta de ejecución> <ruta de ejecución> ld.so libm.so libc.so nombre ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de mapa de memoria 0xFFFF.. pila del proceso pila del hilo 1 biblioteca dinámica B zona de memoria compartida fichero proyectado F datos dinámicos (heap) datos estáticos sin valor inicial datos estáticos con valor inicial código 0x0000.. 61 Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de formato de ejecutable Cabecera Número mágico 0 Despl. PC inicial … Tabla de secciones 1000 Código Secciones Datos con valor inicial Tam. Código 1000 4000 Datos con v.i. 5000 1000 Datos sin v.i. --- … … … T. Símbolos 8000 1000 500 5000 Datos sin valor inicial ... 8000 Tabla de símbolos 62 Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Memoria Crear mapa desde ejecutable Disco P1 S.O. Fichero ejecutable 0 Ejecutable Número mágico PC inicial … Tabla de secciones 1000 Código 5000 Mapa de memoria 0 Código Datos con valor inicial 4000 Datos sin valor inicial 5000 Datos con valor inicial Datos sin valor inicial ... 8000 Tabla de símbolos Pila Argumentos del programa 63 Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Memoria Inspeccionar un ejecutable Disco P1 S.O. Ejecutable Dependencias de un ejecutable (lib. dinámicas): acaldero@phoenix:~/infodso/$ ldd main.exe linux-gate.so.1 => (0xb7797000) libdinamica.so.1 => not found libc.so.6 => /lib/libc.so.6 (0xb761c000) /lib/ld-linux.so.2 (0xb7798000) Símbolos de un ejecutable: acaldero@phoenix:~/infodso/$ nm main.exe 08049f20 d _DYNAMIC 08049ff4 d _GLOBAL_OFFSET_TABLE_ 0804856c R _IO_stdin_used w _Jv_RegisterClasses 08049f10 d __CTOR_END__ 08049f0c d __CTOR_LIST__ ... 64 ARCOS @ UC3M Alejandro Calderón Mateos Memoria Inspeccionar un ejecutable Disco P1 S.O. Ejecutable Detalles de las secciones de un ejecutable: acaldero@phoenix:~/infodso/$ objdump –x main.exe ... Program Header: ... DYNAMIC off filesz ... STACK off filesz ... Dynamic Section: NEEDED NEEDED INIT ... 65 0x00000f20 vaddr 0x08049f20 paddr 0x08049f20 align 2**2 0x000000d0 memsz 0x000000d0 flags rw0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2 0x00000000 memsz 0x00000000 flags rw- libdinamica.so libc.so.6 0x08048368 ARCOS @ UC3M Alejandro Calderón Mateos Memoria Inspeccionar un ejecutable Disco P1 S.O. Ejecutable (continuación) Sections: Idx Name 0 .interp ... 12 .text ... 23 .bss Size VMA LMA File off 00000013 08048134 08048134 00000134 CONTENTS, ALLOC, LOAD, READONLY, DATA Algn 2**0 0000016c 080483e0 080483e0 000003e0 CONTENTS, ALLOC, LOAD, READONLY, CODE 2**4 00000008 ALLOC 2**2 0804a014 0804a014 00001014 ... SYMBOL TABLE: 08048134 l d .interp 08048148 l d .note.ABI-tag 08048168 l d .note.gnu.build-id ... 0804851a g F .text 00000000 08048494 g F .text 00000014 08048368 g F .init 00000000 66 00000000 00000000 00000000 .interp .note.ABI-tag .note.gnu.build-id .hidden __i686.get_pc_thunk.bx main _init ARCOS @ UC3M Alejandro Calderón Mateos Memoria Inspeccionar un proceso Disco P1 S.O. Ejecutable Detalles de las secciones de un proceso: acaldero@phoenix:~/infodso/$ cat /proc/1/maps b7688000-b7692000 b7692000-b7693000 b7693000-b7694000 b7694000-b769d000 b769d000-b769e000 b769e000-b769f000 b769f000-b76b2000 b76b2000-b76b3000 b76b3000-b76b4000 b76b4000-b76b6000 .. b78b7000-b78b8000 b78b8000-b78d4000 b78d4000-b78d5000 b78d5000-b78d6000 b78d6000-b78ef000 b78ef000-b78f0000 b78f0000-b78f1000 b81e5000-b8247000 bf851000-bf872000 67 r-xp r--p rw-p r-xp r--p rw-p r-xp r--p rw-p rw-p 00000000 00009000 0000a000 00000000 00008000 00009000 00000000 00012000 00013000 00000000 08:02 08:02 08:02 08:02 08:02 08:02 08:02 08:02 08:02 00:00 1491 1491 1491 3380 3380 3380 1414 1414 1414 0 /lib/libnss_files-2.12.1.so /lib/libnss_files-2.12.1.so /lib/libnss_files-2.12.1.so /lib/libnss_nis-2.12.1.so /lib/libnss_nis-2.12.1.so /lib/libnss_nis-2.12.1.so /lib/libnsl-2.12.1.so /lib/libnsl-2.12.1.so /lib/libnsl-2.12.1.so r-xp r-xp r--p rw-p r-xp r--p rw-p rw-p rw-p 00000000 00000000 0001b000 0001c000 00000000 00019000 0001a000 00000000 00000000 00:00 08:02 08:02 08:02 08:02 08:02 08:02 00:00 00:00 0 811 811 811 1699 1699 1699 0 0 [vdso] /lib/ld-2.12.1.so /lib/ld-2.12.1.so /lib/ld-2.12.1.so /sbin/init /sbin/init /sbin/init [heap] [stack] ARCOS @ UC3M Alejandro Calderón Mateos Ejercicio completar características de regiones Región Soporte Protección Comp./Priv. Tamaño Código Fichero RX Compartida Fijo … … … … … 68 ARCOS @ UC3M Alejandro Calderón Mateos Contenidos 1. Introducción 2. Arquitectura del subsistema de memoria 1. Objetivos principales 3. Regiones de memoria de un proceso 4. Memoria virtual 5. Gestión a nivel del sistema operativo 69 ARCOS @ UC3M Alejandro Calderón Mateos Sistemas sin memoria virtual asignación continua memoria Proceso 1 Proceso 2 Mapa de proceso en zona contigua de memoria Referencias relativas + overlays (en desuso) Protección mediante registros valla Compartición no posible Problemas de fragmentación externa S.O. mantiene información en cada BCP sobre el comienzo y el final de: Proceso 3 Sistema operativo El bloque de direcciones asignado al proceso Regiones dentro del bloque asignado S.O. mantiene información global de: La gestión de espacio libre 70 compactación –› costoso Primer ajuste, mejor ajuste, peor ajuste, etc. ARCOS @ UC3M Alejandro Calderón Mateos Localización de referencias en memoria reubicación int vector[1024]; .data vector: .space 4*1024 int main ( void ) { int i; for (i = 0; i<1024; i++) vector[i] = i; } .text .globl main main: li $t0 0 la $t1 vector b2: bge $t0 1024 finb2 mult $t2 $t0 4 add $t2 $t1 $t2 sw $t0 ($t2) add $t0 $t0 1 b b2 finb2: jr $ra 71 ARCOS @ UC3M Alejandro Calderón Mateos Localización de referencias en memoria reubicación .data vector: .space 4*1024 .text .globl main main: li $t0 0 la $t1 vector b2: bge $t0 1024 finb2 mult $t2 $t0 4 add $t2 $t1 $t2 sw $t0 ($t2) add $t0 $t0 1 b b2 finb2: jr $ra 72 • • • • • Cabecera Tipo de ejecutable Tamaño inicial de pila Tamaño inicial de datos Tamaño inicial de código Etc. 00: 04: 08: 12: 16: 20: 24: 28: 32: li $t0 0 la $t1 ini_datos+0 b2: bge $t0 1024 ini_codigo+32 mult $t2 $t0 4 add $t2 $t1 $t2 sw $t0 ($t2) add $t0 $t0 1 b ini_codigo+8 jr $ra Disco Fichero ejecutable ARCOS @ UC3M Alejandro Calderón Mateos Localización de referencias en memoria reubicación Memoria principal . . 10000 10004 10008 10012 10016 10020 10024 10028 10032 . . li $t0 0 la $t1 20000+0 bge $t0 1024 10000+32 mult $t2 $t0 4 add $t2 $t1 $t2 sw $t0 ($t2) add $t0 $t0 1 b 10000+8 jr $ra • • • • • Cabecera Tipo de ejecutable Tamaño inicial de pila Tamaño inicial de datos Tamaño inicial de código Etc. 00: 04: 08: 12: 16: 20: 24: 28: 32: li $t0 0 la $t1 ini_datos+0 b2: bge $t0 1024 ini_codigo+32 mult $t2 $t0 4 add $t2 $t1 $t2 sw $t0 ($t2) add $t0 $t0 1 b ini_codigo+8 jr $ra Disco Fichero ejecutable 73 ARCOS @ UC3M Alejandro Calderón Mateos Protección de espacios de memoria registros valla Si hay varios procesos en memoria, es necesario asegurar que un programa no accede a la zona de memoria que otro tiene asignado. CPU Memoria principal proceso2 MAR proceso1 MBR Sistema Operativo 74 ARCOS @ UC3M Alejandro Calderón Mateos Protección de espacios de memoria registros valla Si hay varios procesos en memoria, es necesario asegurar que un programa no accede a la zona de memoria que otro tiene asignado. CPU Memoria principal Lsup proceso2 MAR Linf proceso1 MBR Sistema Operativo 75 ARCOS @ UC3M Alejandro Calderón Mateos Protección de espacios de memoria registros valla Si hay varios procesos en memoria, es necesario asegurar que un programa no accede a la zona de memoria que otro tiene asignado. CPU Memoria principal Lsup • ok • excepción proceso2 MAR Linf proceso1 MBR Sistema Operativo 76 ARCOS @ UC3M Alejandro Calderón Mateos Sistemas con memoria virtual 1 Dirección virtual 2 MMU 3b 3a M. virtual 77 M. principal M. secundaria ARCOS @ UC3M Alejandro Calderón Mateos Sistemas con memoria virtual 1 Dirección virtual 2 MMU 3b 3a M. virtual 78 Los programas manejan un espacio virtual de direcciones principalvirtual M. El espacio M. secundaria (y real) se divide en bloques (tamaño potencia de 2) siendo este bloque la unidad de asignación ARCOS @ UC3M Alejandro Calderón Mateos Sistemas con memoria virtual 1 Dirección virtual 2 MMU 3a La 3b de MMU (unidad de gestión memoria) se encarga de traducir la dirección virtual a la dirección física M. virtual 79 M. principal M. secundaria ARCOS @ UC3M Alejandro Calderón Mateos Sistemas con memoria virtual 1 Dirección virtual 2 MMU 3a Para la traducción el S.O.3btiene una tabla de bloques con la traducción en el formato que usa la MMU M. virtual 80 Hay tabla por proceso M. secundaria M.una principal Adicionalmente el S.O. tiene: Tabla de marcos Tabla de regiones de cada proceso ARCOS @ UC3M Alejandro Calderón Mateos Introducción a memoria virtual M. virtual 81 M. principal M. secundaria ARCOS @ UC3M Alejandro Calderón Mateos Introducción a memoria virtual … lw $t0 vector … M. virtual 82 M. principal M. secundaria ARCOS @ UC3M Alejandro Calderón Mateos Introducción a memoria virtual … lw $t0 vector … M. virtual 83 M. principal M. secundaria ARCOS @ UC3M Alejandro Calderón Mateos Introducción a memoria virtual … lw $t0 vector … M. virtual 84 M. principal M. secundaria ARCOS @ UC3M Alejandro Calderón Mateos Introducción a memoria virtual Fallo de página M. virtual M. principal M. secundaria El fallo de página es una excepción que provoca que el procesador ejecute la rutina de tratamiento asociada. Está implementada en el sistema operativo. 85 ARCOS @ UC3M Alejandro Calderón Mateos Introducción a memoria virtual M. virtual M. principal M. secundaria El sistema operativo transfiere el ‘bloque’ solicitado a memoria principal y actualiza la tabla de ‘bloques’ 86 ARCOS @ UC3M Alejandro Calderón Mateos Introducción a memoria virtual M. virtual M. principal M. secundaria El sistema operativo transfiere el ‘bloque’ solicitado a memoria principal y actualiza la tabla de ‘bloques’ 87 ARCOS @ UC3M Alejandro Calderón Mateos Introducción a memoria virtual Acierto … lw $t0 vector … M. virtual M. principal M. secundaria Se reanuda la ejecución de la instrucción que provocó el fallo. 88 ARCOS @ UC3M Alejandro Calderón Mateos Introducción a memoria virtual Acierto … lw $t0 vector+4 … M. virtual M. principal M. secundaria La siguiente instrucción del mismo bloque no provoca fallo. 89 ARCOS @ UC3M Alejandro Calderón Mateos Memoria virtual: Windows 90 ARCOS @ UC3M Alejandro Calderón Mateos Memoria virtual: Linux 91 ARCOS @ UC3M Alejandro Calderón Mateos Memoria virtual Dirección virtual Dirección real Desplazamiento Desplazamiento N.º marco Registro Puntero a tabla de páginas N.º página Tabla de páginas + Programa Segmentación N.º marco Mecanismo de paginación Dirección virtual Dirección real Desplazamiento (d) N.º seg. Memoria principal base + d + Programa Segmentación paginada long. base Mecanismo de segmentación Dirección virtual N . º s e g . N . º p a g . Memoria principal Dirección real Desplazamiento N.º marco Desplazamiento Puntero a tabla de segmentos Programa 92 Tabla de segmentos Mecanismo de segmentación Tabla de página + N.º pág. + N.º segmento + Tabla de segmentos d N.º segmento Puntero a tabla de segmentos Mecanismo de paginación Marco de página Marco de página segmento N.º pág. Desplazamiento Paginación desp. Memoria principal ARCOS @ UC3M Alejandro Calderón Mateos Memoria virtual Dirección virtual Dirección real Desplazamiento Desplazamiento N.º marco Registro Puntero a tabla de páginas N.º página Tabla de páginas + Programa Segmentación N.º marco Mecanismo de paginación Dirección virtual Dirección real Desplazamiento (d) N.º seg. Memoria principal base + d + Programa Segmentación paginada long. base Mecanismo de segmentación Dirección virtual N . º s e g . N . º p a g . Memoria principal Dirección real Desplazamiento N.º marco Desplazamiento Puntero a tabla de segmentos Programa 93 Tabla de segmentos Mecanismo de segmentación Tabla de página + N.º pág. + N.º segmento + Tabla de segmentos d N.º segmento Puntero a tabla de segmentos Mecanismo de paginación Marco de página Marco de página segmento N.º pág. Desplazamiento Paginación desp. Memoria principal ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo 32 bits 011010001001010 22 bits Dirección virtual 1111100100000 Dirección física Memoria secundaria 94 ARCOS @ UC3M Ejemplo 32 bits 011010001001010 22 bits Dirección virtual 1111100100000 Dirección física Memoria secundaria División en bloques del mismo tamaño -> páginas 95 ARCOS @ UC3M Ejemplo 20 bits Id. página 12 bits Desplazamiento Dirección virtual 22 bits 1111100100000 Dirección física Id. página División en bloques del mismo tamaño -> páginas 96 ARCOS @ UC3M Ejemplo 20 bits Id. página 12 bits Desplazamiento Dirección virtual 10 bits Marco 12 bits Desplazamiento Dirección física Marco Id. página División en bloques del mismo tamaño -> páginas 97 ARCOS @ UC3M Ejemplo 20 bits Id. página 12 bits Desplazamiento Dirección virtual 10 bits Marco 12 bits Desplazamiento Dirección física Marco Tabla de páginas Id. página Correspondencia entre Id. página y marco -> T. páginas 98 ARCOS @ UC3M Ejemplo 20 bits Id. página 12 bits Desplazamiento 10 bits Dirección virtual Marco 12 bits Desplazamiento Dirección física Marco Tabla de páginas Id. página PM + bits de control Id. marco … … Correspondencia entre Id. página y marco -> T. páginas 99 ARCOS @ UC3M Ejemplo 20 bits Id. página 12 bits Desplazamiento 10 bits Dirección virtual Marco 12 bits Desplazamiento Dirección física Marco Tabla de páginas 09 Id. página 10 10 11 100 1M + bits de control Id. marco … … ARCOS @ UC3M Ejemplo 20 bits Id. página 12 bits Desplazamiento 10 bits Dirección virtual Marco 12 bits Desplazamiento Dirección física Marco Tabla de páginas 09 Id. página 10 10 0M 11 + bits de control Id. marco … … Intercambio o swap Memoria secundaria 101 ARCOS @ UC3M Tratamiento (general) del fallo de página Si dirección inválida –› aborta proceso o le manda señal Si no hay ningún marco libre (consulta T. marcos) Selección de víctima (alg. de reemplazo): página P marco M Marca P como inválida Si P modificada (bit Mod de P activo) Inicia escritura P en memoria secundaria Hay marco libre (se ha liberado o lo había previamente): Inicia lectura de página en marco M Marca entrada de página válida referenciando a M Pone M como ocupado en T. marcos (si no lo estaba) 102 Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Ejercicio Sea un computador con direcciones virtuales de 32 bits y una memoria principal de 512 MB, que emplea páginas de 4 KB. Se pide: a) Indique el formato de la dirección virtual y el número de marcos de página. 103 ARCOS @ UC3M Alejandro Calderón Mateos Ejercicio (sol.) Formato de la dirección virtual: 1 Id. de página 3 desplazamiento 2 log2(4KB) = 12 bits Número de marcos de página: Tamaño de M.P. Tamaño de página 104 32-12 = 20 bits 32 bits 512 MB 4 KB 512 * 220 4 * 210 128 * 210 ARCOS @ UC3M Alejandro Calderón Mateos Entradas de la tabla de páginas (formato típico) Dirección virtual 20 bits Número de página 12 bits Desplazamiento Entrada de la tabla de páginas P M Otros bits de control Número de marco • Bit P: indica si está presente la página en M.P. • Bit M: indica si ha sido modificada la página en M.P. • Otros bits: protección (lectura, escritura, ejecución, etc.), gestión (cow, etc.) 105 ARCOS @ UC3M Alejandro Calderón Mateos Gestión de la tabla de páginas Inicialmente: Uso: La crea el sistema operativo cuando se va a ejecutar el programa. La consulta la MMU en la traducción. Actualización: 106 La modifica el sistema operativo en los fallos de página. ARCOS @ UC3M Alejandro Calderón Mateos Traducción de direcciones (paginación) N.º pág. Dirección real Desplazamiento N.º marco Registro Puntero a tabla de páginas + Programa 107 N.º página Tabla de páginas Desplazamiento Desplazamiento Dirección virtual Marco de página N.º marco Mecanismo de paginación Memoria principal ARCOS @ UC3M Alejandro Calderón Mateos Movimiento de las páginas Inicialmente: De M. secundaria a M. principal (por demanda): Página no residente se marca ausente Se guarda dirección del bloque de swap que la contiene Acceso a pág. no residente: Fallo de página S.O. lee página de M. secundaria y la lleva a M. principal De M. principal a M. secundaria (por expulsión): 108 No hay espacio en M. principal para traer página Se expulsa (reemplaza) una página residente S.O. escribe página expulsada a M. secundaria (si bit M=1) ARCOS @ UC3M Alejandro Calderón Mateos Movimiento de las páginas Inicialmente: De M. secundaria a M. principal (por demanda): Página no residente se marca ausente Se guarda dirección del bloque de swap que la contiene Acceso a pág. no residente: Fallo de página S.O. lee página de M. secundaria y la lleva a M. principal De M. principal a M. secundaria (por expulsión): 109 No hay espacio en M. principal para traer página Se necesita Se expulsa (reemplaza) una página residente soporte en S.O. escribe página expulsada a M. secundaria (si bit M=1) hardware ARCOS @ UC3M Alejandro Calderón Mateos Políticas de administración Política de reemplazo: Algoritmos de reemplazo: validos para local y global Reemplazo local: dentro del proceso Reemplazo global Óptimo FIFO Reloj (o segunda oportunidad) LRU Política de asignación de marcos a los procesos: Asignación fija (siempre con reemplazo local): Asignación dinámica (reemplazo local o global): 110 conjunto residente del proceso es constante conjunto residente del proceso es variable ARCOS @ UC3M Alejandro Calderón Mateos Algoritmos de no reemplazo Bloqueo de marcos: Ejemplos de cuándo se bloquea un marco: Cuando un marco está bloqueado, la página cargada en ese marco no puede ser reemplazada. La mayoría del núcleo del sistema operativo. Estructuras de control. Buffers de E/S (Ej.: los usados con DMA). El bloqueo se consigue asociando un bit de bloqueo a cada marco. B P M 111 Otros bits de control Número de marco ARCOS @ UC3M Alejandro Calderón Mateos Algoritmos de reemplazo Qué página se va a reemplazar. La página que se va a reemplazar tiene que ser la que tenga una menor posibilidad de ser referenciada en un futuro cercano. La mayoría de las políticas intentan predecir el comportamiento futuro en función del comportamiento pasado. Ejemplo de políticas: LRU, FIFO, etc. 112 ARCOS @ UC3M Alejandro Calderón Mateos Algoritmos básicos de reemplazo Política óptima: Selecciona para reemplazar la página que tiene que esperar una mayor cantidad de tiempo hasta que se produzca la referencia siguiente. Es imposible de implementar porque requiere que el sistema operativo tenga un conocimiento exacto de los sucesos futuros. 113 ARCOS @ UC3M Alejandro Calderón Mateos Algoritmos básicos de reemplazo Política ‘la usada menos recientemente’ (LRU): Reemplaza la página de memoria que no ha sido referenciada desde hace más tiempo. Debido al principio de cercanía, ésta sería la página con menor probabilidad de ser referenciada en un futuro cercano. Una solución sería etiquetar cada página con el momento de su última referencia. 114 ARCOS @ UC3M Alejandro Calderón Mateos Algoritmos básicos de reemplazo Política ‘primera en entrar, primera en salir’ (FIFO): Reemplazar la página en memoria que primero se cargo (que ha estado más tiempo en memoria) Estas páginas pueden necesitarse de nuevo y en un plazo de tiempo corto. Es una de las políticas de reemplazo más sencillas de implementar: 115 Trata los marcos asignados a un proceso como un buffer circular. Las páginas se suprimen de la memoria según la técnica de turno rotatorio (round-robin). ARCOS @ UC3M Alejandro Calderón Mateos Memoria virtual Dirección virtual Dirección real Desplazamiento Desplazamiento N.º marco Registro Puntero a tabla de páginas N.º página Tabla de páginas + Programa Segmentación N.º marco Mecanismo de paginación Dirección virtual Dirección real Desplazamiento (d) N.º seg. Memoria principal base + d + Programa Segmentación paginada long. base Mecanismo de segmentación Dirección virtual N . º s e g . N . º p a g . Memoria principal Dirección real Desplazamiento N.º marco Desplazamiento Puntero a tabla de segmentos Programa 116 Tabla de segmentos Mecanismo de segmentación Tabla de página + N.º pág. + N.º segmento + Tabla de segmentos d N.º segmento Puntero a tabla de segmentos Mecanismo de paginación Marco de página Marco de página segmento N.º pág. Desplazamiento Paginación desp. Memoria principal ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo 32 bits 011010001001010 32 bits Dirección virtual 1111100100000 Dirección física 117 ARCOS @ UC3M Ejemplo 32 bits 011010001001010 32 bits Dirección virtual 1111100100000 Dirección física La paginación usa zonas de tamaño fijo (paginas) División en zonas de tamaño variable -> segmentos 118 ARCOS @ UC3M Ejemplo 8 bits Id. segmento 16 bits Desplazamiento Dirección virtual 32 bits 1111100100000 Dirección física División en zonas de tamaño variable -> segmentos 119 ARCOS @ UC3M Ejemplo 8 bits Id. segmento 16 bits Desplazamiento Dirección virtual 8 bits Base 16 bits Desplazamiento Dirección física División en zonas de tamaño variable -> segmentos 120 ARCOS @ UC3M Ejemplo 8 bits Id. segmento 16 bits Desplazamiento Dirección virtual 8 bits Base 16 bits Desplazamiento Dirección física Base Id. segmento Tabla de segmentos Correspondencia M.V. y M.F. -> tabla de segmentos 121 ARCOS @ UC3M Ejemplo 8 bits Id. segmento 16 bits Desplazamiento Dirección virtual 8 bits Base 16 bits Desplazamiento Dirección física Base Id. segmento Tabla de segmentos P M + bits Long. Base … … Correspondencia M.V. y M.F. -> tabla de segmentos 122 ARCOS @ UC3M Ejemplo 8 bits Id. segmento 16 bits Desplazamiento Dirección virtual 8 bits Base 16 bits Desplazamiento Dirección física Base Id. segmento Tabla de segmentos P M + bits Long. Base … … Correspondencia M.V. y M.F. -> tabla de segmentos 123 ARCOS @ UC3M Entradas de la tabla de segmentos formato típico Dirección virtual Número de segmento Desplazamiento Entrada de la tabla de segmentos P M Otros bits de control Longitud Base del segmento • Bit P: presente • Bit M: modificado • Otros bits de control: R,W,X,COW,… 124 ARCOS @ UC3M Alejandro Calderón Mateos Traducción de direcciones (segmentación) Dirección virtual Desplazamiento (d) base + d + Programa 125 N.º segmento Tabla de segmentos segmento + Puntero a tabla de segmentos d N.º seg. Dirección real long. base Mecanismo de segmentación Memoria principal ARCOS @ UC3M Alejandro Calderón Mateos Movimiento de los segmentos Inicialmente: De M. secundaria a M. principal (por demanda): Se configuran desde el ejecutable de una aplicación Código se carga, pila se inicializa, etc. Acceso a seg. no residente: Fallo de segmento S.O. lee el segmento de M. secundaria y la lleva a MP De M. principal a M. secundaria (por expulsión): 126 No hay espacio en M. principal para traer un segmento Se expulsa (reemplaza) un segmento residente S.O. escribe segmento expulsado a M. secundaria (si bit M=1) ARCOS @ UC3M Alejandro Calderón Mateos Memoria virtual Dirección virtual Dirección real Desplazamiento Desplazamiento N.º marco Registro Puntero a tabla de páginas N.º página Tabla de páginas + Programa Segmentación N.º marco Mecanismo de paginación Dirección virtual Dirección real Desplazamiento (d) N.º seg. Memoria principal base + d + Programa Segmentación paginada long. base Mecanismo de segmentación Dirección virtual N . º s e g . N . º p a g . Memoria principal Dirección real Desplazamiento N.º marco Desplazamiento Puntero a tabla de segmentos Programa 127 Tabla de segmentos Mecanismo de segmentación Tabla de página + N.º pág. + N.º segmento + Tabla de segmentos d N.º segmento Puntero a tabla de segmentos Mecanismo de paginación Marco de página Marco de página segmento N.º pág. Desplazamiento Paginación desp. Memoria principal ARCOS @ UC3M Alejandro Calderón Mateos Memoria virtual: segmentación y paginación Lo mejor de las dos soluciones: Segmentación: Paginación: Facilita operaciones con regiones de memoria Evita la fragmentación interna (tiene externa) Optimiza el acceso a la M. secundaria Evita la fragmentación externa (tiene interna) Entrada en la tabla de segmentos ‘apunta’ a una tabla de páginas asociada al segmento 128 Los segmentos de tamaño variable se fragmentan en páginas de tamaño fijo ARCOS @ UC3M Alejandro Calderón Mateos Traducción de direcciones (segmentación paginada) Dirección virtual N.º seg. N.º pag. Dirección real Desplazamiento N.º marco Desplazamiento Programa 129 Mecanismo de segmentación + Mecanismo de paginación Marco de página Tabla de página N.º pág. + N.º segmento Tabla de segmentos desp. Puntero a tabla de segmentos Memoria principal ARCOS @ UC3M Alejandro Calderón Mateos Segmentación Paginada: Esquema de traducción 1. 2. 3. 4. La MMU toma la parte asociada al número de segmento y lo busca en la TS. dirección lógica s p d tabla de segmentos 3 1 dir. T. Pág. límite Se verifica si el desplazamiento está dentro de los límites Se obtiene la tabla de páginas de la TS y se determina el MP. tabla de páginas para segmento s > 2 NO SI Excepción p m m memoria d dirección física 4 Indexa el byte dentro del MP de la memoria física. 130 ARCOS @ UC3M Alejandro Calderón Mateos Entradas de la tablas formato típico Dirección virtual Número de segmento Número de página Desplazamiento Tabla de segmentos P M Otros bits de control Longitud Base del segmento Entrada de la T.S. Tabla de páginas (del segmento) P M Otros bits de control Número de marco Entrada de la T.P. 131 ARCOS @ UC3M Alejandro Calderón Mateos Memoria virtual resumen Dirección virtual Dirección real Desplazamiento Desplazamiento N.º marco Registro Puntero a tabla de páginas N.º página Tabla de páginas + Programa Segmentación N.º marco Mecanismo de paginación Dirección virtual Dirección real Desplazamiento (d) N.º seg. Memoria principal base + d + Programa Segmentación paginada long. base Mecanismo de segmentación Dirección virtual N . º s e g . N . º p a g . Memoria principal Dirección real Desplazamiento N.º marco Desplazamiento Puntero a tabla de segmentos Programa 132 Tabla de segmentos Mecanismo de segmentación Tabla de página + N.º pág. + N.º segmento + Tabla de segmentos d N.º segmento Puntero a tabla de segmentos Mecanismo de paginación Marco de página Marco de página segmento N.º pág. Desplazamiento Paginación desp. Memoria principal ARCOS @ UC3M Alejandro Calderón Mateos Objetivos generales de la E/S usando memoria virtual 1. Localización de referencias a memoria proceso 2. Protección de espacios de memoria Interfaz del Sistema Operativo 3. Gestión de procesos Red 4. Gestión de memoria 133 Entradas de tabla de página que apuntan a los mismos marcos de páginas Organización lógica (de programas) 5. Cada proceso ve su propio espacio Compartición de espacios de memoria Sistema de ficheros La MMU se encarga de traducir un espacio virtual al real Uso de segmentación Organización física (de la memoria) Segmentación paginada ofrecen mayor flexibilidad en la organización ARCOS @ UC3M Alejandro Calderón Mateos Sistemas con memoria virtual aspectos avanzados 1 Dirección virtual 2 MMU 3b 3a M. virtual M. secundaria Optimizaciones: 134 M. principal TLB (eficiencia) Tablas multinivel (espacio) ARCOS @ UC3M Alejandro Calderón Mateos Cache de traducciones Memoria virtual basado en tablas de páginas: Problema: sobrecarga de acceso a memoria (2 accesos) Solución: TLB A la tabla de páginas/segmentos + al propio dato o instrucción Caché de traducciones TLB (buffer de traducción adelantada) 135 Memoria caché asociativa que almacena las entradas de la tabla de página usadas más recientemente Permite acelerar el proceso de búsqueda del marco ARCOS @ UC3M Alejandro Calderón Mateos Traducción de direcciones (con TLB) Memoria principal Dirección virtual N.º pág. Memoria secundaria Desplazamiento Acierto de TLB Desplazamiento Cargar página Tabla de páginas Fallo de TLB N.º marco Desplazamiento Dirección real Fallo de página 136 ARCOS @ UC3M Alejandro Calderón Mateos Tablas multinivel Memoria virtual basado en tablas de páginas: Problema: consumo de memoria para las tablas Ej.: páginas 4KB, dir. lógica 32 bits y 4 bytes por entrada: 220 *4 = 4MB/proceso Solución: tablas multinivel Tabla multinivel Esquema de traducción en dos niveles: 137 En memoria la tabla de primer nivel Solo en memoria las tablas de segundo nivel que se necesiten Tablas de cada nivel mucho más compactas: 210 *4 = 4KB/tabla ARCOS @ UC3M Alejandro Calderón Mateos Tablas multinivel Dirección virtual 1 nivel 2 nivel Dirección real Desplazamiento N.º marco Desplazamiento Programa 138 + Mecanismo de paginación multinivel Marco de página Tabla de página (2 nivel) N.º pág. + N.º T.P. Tabla de páginas (1 nivel) desp. Registro base de la TP Memoria principal ARCOS @ UC3M Alejandro Calderón Mateos Contenidos 1. Introducción 2. Arquitectura del subsistema de memoria 1. Objetivos principales 3. Regiones de memoria de un proceso 4. Memoria virtual 5. Gestión a nivel del sistema operativo 139 ARCOS @ UC3M Alejandro Calderón Mateos Gestión de memoria aspectos gestionados por el sistema operativo 1 Dirección virtual 2 MMU 3b 3a Principales parámetros: 140 M. virtual M. principal M. secundaria Tamaño de página Conjunto residente Grado de multiprogramación Operaciones sobre regiones Visión desde el kernel Memoria dinámica ARCOS @ UC3M Alejandro Calderón Mateos Grado de multiprogramación (1/4) Hay una tabla de página por proceso Un registro apunta a la T.P. del proceso en ejecución en un instante dado. Grado de multiprogramación: número de procesos en memoria en un instante dado Conjunto residente: número de páginas que tiene un proceso en M.P. en un instante dado 141 p T.P. 1 p (RAM) T.P. 2 … (HDisk) ARCOS @ UC3M Alejandro Calderón Mateos Grado de multiprogramación (2/4) Hay que equilibrar: El número de procesos en memoria (grado de multiprogramación) El número de páginas que tiene cada proceso en M.P. (conjunto residente) con el mínimo que necesita para trabajar (conjunto de trabajo) El tamaño de la página. 142 Comportamiento típico de la paginación en un programa. Tamaño de T.P., transferencia con M.S., número de fallos, etc. P = Tamaño del proceso completo W = Tamaño del conjunto de trabajo N = Número total de páginas del proceso ARCOS @ UC3M Alejandro Calderón Mateos Grado de multiprogramación (3/4) Comportamiento típico de la paginación en un programa. Hay que equilibrar: 143 El número de procesos en memoria (grado de multiprogramación) El número de páginas que tiene cada proceso en M.P. (conjunto residente) con el mínimo que necesita para trabajar (conjunto de trabajo) El tamaño de la página. P = Tamaño del proceso completo W = Tamaño del conjunto de trabajo N = Número total de páginas del proceso ARCOS @ UC3M Alejandro Calderón Mateos Grado de multiprogramación (4/4) Hay que equilibrar: Comportamiento típico de la paginación con varios programas. El número de procesos en memoria (grado de multiprogramación) % Utilización de UCP 100 % Limitado por el dispositivo de paginación Trasiego de información entre M. Principal y M. secundaria. Hiperpaginación: Nivel de Multiprogramación MEMORIA GRANDE 144 Swaping: Se produce cuando el número de fallos es muy elevado El sistema está más tiempo intercambiando fragmentos que ejecutando instrucciones de usuario. … ARCOS @ UC3M Alejandro Calderón Mateos Soluciones a la hiperpaginación (1/2) Soluciones con reemplazo local Estrategia del conjunto de trabajo Intentar conocer el conjunto de trabajo de cada proceso Si conjunto de trabajo decrece se liberan marcos Si conjunto de trabajo crece se asignan nuevos marcos Estrategia basada en frecuencia de fallos Si tasa < límite inferior se liberan marcos Si tasa > límite superior se asignan nuevos marcos 145 si no hay disponibles: suspender proceso(s) se reactivan cuando hay marcos suficientes para el conjunto de trabajo Si no marcos libres se suspende algún proceso Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Soluciones a la hiperpaginación (2/2) Soluciones con reemplazo global No existe soluciones adecuadas BSD: Uso de buffering activando el demonio con un umbral. Si se activa frecuentemente -> suspender algún proceso. Idea general: mantener una reserva de marcos libres Si número de marcos libres < umbral 146 “demonio de paginación” aplica repetidamente el algoritmo de reemplazo: páginas no modificadas pasan a lista de marcos libres páginas modificadas pasan a lista de marcos modificados Si se referencia una página de las listas se usa sin más. Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Gestión de memoria aspectos gestionados por el sistema operativo 1 Dirección virtual 2 MMU 3b 3a Principales parámetros: 147 M. virtual M. principal M. secundaria Tamaño de página Conjunto residente Grado de multiprogramación Operaciones sobre regiones Visión desde el kernel Memoria dinámica ARCOS @ UC3M Alejandro Calderón Mateos Operaciones sobre regiones creación de región Nueva región no se le asigna m. principal (carga por demanda) Págs. de región se marcan como inválidas Dependiendo del tipo de soporte: Soporte en archivo Sin soporte Por seguridad, las páginas se marcan como Rellenar con ceros (RC) Fallo de página no implica lectura de dispositivo Una vez creada región, cuando se expulsa página modificada Páginas se marcan como Cargar de archivo (CA) Se almacena dirección del bloque del archivo correspondiente Si la región es privada se escribe página en swap Si la región es compartida se escribe página en soporte Pila es “especial”: debe contener argumentos del programa 148 Típicamente se copian los argumentos en bloque(s) de swap Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Operaciones sobre regiones liberación de región Actualizar tabla de regiones para eliminar región Marcar como inválidas páginas asociadas Si región privada, se libera espacio de swap La liberación puede deberse a: 149 Solicitud explícita (Ej.: desproyección de región) Finalización del proceso (EXIT en POSIX) EXEC de POSIX libera mapa actual del proceso antes de construir nuevo mapa vinculado al ejecutable Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Operaciones sobre regiones cambio de tamaño de una región Si disminuye, similar a liberación pero sólo parte afectada Si aumenta tamaño: Comprobar no solapamiento Si preasignación: reserva espacio en swap para nuevas páginas Casos especiales: Expansión del heap y archivos proyectados Solicitada por programa mediante servicio de S.O. Expansión de pila más compleja: es “automática” Programa disminuye valor de SP y accede a zona expandida Fallo de página Tratamiento de fallo de página: Si dirección realmente inválida 150 Si dirección < SP –› Aborta proceso o le manda señal Si no –› Expansión de pila Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Operaciones sobre regiones duplicación de una región Necesario para FORK de UNIX Operación costosa e ineficiente: se debe copiar contenido Optimización: copy-on-write (COW) Se comparten páginas de regiones duplicadas pero: Puede haber varios procesos con misma región duplicada 151 se marcan de sólo lectura y con bit de COW primera escritura –› Fallo de protección –› copia privada Existe un contador de uso por página Cada vez que se crea copia privada se decrementa contador Si llega a 1, se desactiva COW ya que no hay duplicados El FORK no duplicar espacio de memoria, sólo duplica la TP Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Operaciones sobre regiones archivos proyectados en memoria Programa solicita proyección de archivo (o parte) en su mapa S.O. rellena entradas correspondientes con: Puede especificar protección y si privada o compartida No residente, CA Privada/Compartida y Protección según especifica la llamada Entradas de TP referencian a un archivo de usuario Se usa como: 152 Forma alternativa de acceso a archivos frente a read/write Carga de bibliotecas dinámicas Globalmente: generalización de memoria virtual Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Gestión de memoria aspectos gestionados por el sistema operativo 1 Dirección virtual 2 MMU 3b 3a Principales parámetros: 153 M. virtual M. principal M. secundaria Tamaño de página Conjunto residente Grado de multiprogramación Operaciones sobre regiones Visión desde el kernel Memoria dinámica ARCOS @ UC3M Alejandro Calderón Mateos Vista desde el kernel Un proceso ve un espacio de direcciones lineal y plano Acceder a regiones de memoria proyectadas en el kernel provocan un fallo de página Punto de vista del kernel: El espacio de direcciones está dividido en dos partes Usuario: cambia con los cambios de contexto Kernel: permanece constante División configurable Ej.: x86 32-bit, PAGE_OFFSET: 3GB proceso + 1 GB kernel Kernel (1 GB) 0xffffffff 0xc0000000 Kernel (1 GB) 0x80000000 Proceso (3 GB) 0x00000000 154 0xffffffff Proceso (2 GB) 0x00000000 http://www.cs.rutgers.edu/~pxk/416/notes/content/09-memory_management-slides-6.pdf ARCOS @ UC3M Alejandro Calderón Mateos Vista desde el kernel El espacio usado por el kernel es compartido por todos los procesos La mayoría del espacio del kernel no puede leerse ni escribirse, pero si ejecutarse Llamadas al sistema más rápidas Kernel (1 GB) 0xffffffff 0xffffffff Proceso (3 GB) Proceso (3 GB) 0x00000000 155 Kernel (1 GB) 0x00000000 ARCOS @ UC3M Alejandro Calderón Mateos Gestión de memoria aspectos gestionados por el sistema operativo 1 Dirección virtual 2 MMU 3b 3a Principales parámetros: 156 M. virtual M. principal M. secundaria Tamaño de página Conjunto residente Grado de multiprogramación Operaciones sobre regiones Visión desde el kernel Memoria dinámica ARCOS @ UC3M Alejandro Calderón Mateos Gestión de memoria dinámica ¿Por qué es tan ‘delicado’ el uso de memoria dinámica? 157 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator Header freep ptr size 0x05 0x00 0 static Header base : typedef long Align; /* for alignment to long boundary */ union header { /* block header */ struct { Primer elemento de la lista Con tamaño 0 (cabeceras) union header *ptr; /* next block if on free list */ unsigned size; /* size of this block */ } s; Align x; /* force alignment of blocks */ }; typedef union header Header; 158 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator morecore freep 0 size size 0x10 ptr ptr 0x05 0x00 18 freep->ptr morecore (int n_cab) 159 SI (n_cab < min_ncab) n_cab = min_ncab; // 144 bytes = 18 cabeceras freep->ptr = sbrk(n_cab*2*sizeof(int)) freep->ptr->ptr=null; freep->ptr->size=n_cab; ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator malloc freep 0x00 13 ‘lo que queda del bloque de morecore’ int *v1; char *v2 ; v1 = malloc(8*sizeof(int)) ; 160 size ptr 0 size size 0x10 ptr ptr 0x05 0x00 5 ‘lo que pide malloc’ ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator malloc freep 0x00 13 size ptr 0 size size 0x10 ptr ptr 0x05 0x00 5 v1 int *v1; char *v2 ; v1 = malloc(8*sizeof(int)) ; 161 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator malloc freep ptr size ptr size 0 0x00 7 0x00 6 size size 0x10 ptr ptr 0x05 0x00 5 v2 int *v1; char *v2 ; v1 = malloc(8*sizeof(int)) ; v2 = malloc(41 ) ; 162 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator problema de fragmentación interna freep ptr size ptr size 0 0x00 7 0x00 6 size size 0x10 ptr ptr 0x05 0x00 5 6*8=48 v2 int *v1; char *v2 ; v1 = malloc(8*sizeof(int)) ; v2 = malloc(41 ) ; 163 • Unidad de asignación es 8 bytes (1 cabecera de 2 enteros) • Se redondea a múltiplo de la unidad de asignación ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator problema de sobreescritura freep ptr size ptr size 0 0x00 7 0x00 6 v2 0x00 5 v1 // se ha reservado solo 41 caracteres para v2 for (int i=0; i<64; i++) size size 0x10 ptr ptr 0x05 v2[i] = ‘x’ ; free(v1) ; 164 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator problema de sobreescritura freep ptr size ptr size ptr size ptr size 0x05 0x10 0 0x00 7 0x00 6 ? ? v2 // se ha reservado solo 41 caracteres para v2 for (int i=0; i<64; i++) v1 v2[i] = ‘x’ ; free(v1) ; 165 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator problema de sobreescritura freep ptr size ptr size ptr size ptr size 0x05 0x10 0 0x00 7 0x00 6 ? ? v2 // se ha reservado solo 41 caracteres para v2 for (int i=0; i<64; i++) v1 v2[i] = ‘x’ ; free(v1) ; <- incapaz de recuperar la cabecera válida… SIGSEV 166 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator otros problemas típicos freep ptr size ptr size ptr size ptr size 0x05 0x10 0 0x00 7 0x00 6 ? ? v2 Liberar una zona de memoria no gestionada: v1 int i; free(&i); Liberar dos veces una misma zona de memoria Acceder a memoria no pedida anteriormente 167 char *pchar; printf("%s",pchar); ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator free freep ptr size ptr size 0 0x00 7 0x00 6 v2 size size 0x10 ptr ptr 0x05 0x00 5 v1 free(v1) ; 168 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator free freep ptr size ptr size 0 0x78 7 0x00 6 size size 0x10 ptr ptr 0x05 0x00 5 v2 free(v1) ; 169 ARCOS @ UC3M Alejandro Calderón Mateos Ejemplo de libc storage allocator problema de fragmentación externa freep ptr size ptr size 0 0x78 7 0x00 6 7*8=56 size size 0x10 ptr ptr 0x05 0x00 5 5*8=40 v2 v1 = malloc(20*sizeof(int)) ; // 20*4 = 80 bytes Con el paso del tiempo, secuencias de llamadas a malloc+free que dejan muchos huecos entre bloques usados Búsquedas lentas en listas enlazadas Espacio libre hay para satisfacer la petición, pero no hueco de ese tamaño 170 ARCOS @ UC3M Alejandro Calderón Mateos Gestión de la memoria en el kernel Con menor fragmentación externa y menor sobrecarga en la compactación: buddy memory allocator 171 https://secure.wikimedia.org/wikipedia/en/wiki/Buddy_memory_allocation ARCOS @ UC3M Alejandro Calderón Mateos Gestión de la memoria en el kernel En muchos kernels se utiliza el slab allocation Basado en el Mach’s zone allocator Tiene preasignado porciones de memoria del tamaño de los tipos de datos (objetos) más frecuentemente usados Ej.: Solaris, FreeBSD, Linux, etc. De esta manera se elimina la búsqueda de hueco y la compactación después de la liberación En estas condiciones, más eficiente y elimina fragmentación Es posible ver el uso en el kernel de dicho gestor mediante: 172 cat /proc/slabinfo • • http://www.ibm.com/developerworks/linux/library/l-linux-slab-allocator/ http://www.arl.wustl.edu/~fredk/Courses/cse522/fall03/Lectures/kmem.ppt ARCOS @ UC3M Alejandro Calderón Mateos Gestión de memoria Linux Incluye todas características habituales en sistemas modernos: Memoria virtual Mapa del proceso dinámico Bibliotecas dinámicas Archivos proyectados Modelo de memoria independiente del procesador Paginación con tres niveles Capa inferior adapta hardware real a este modelo Dispositivos y archivos como soporte de memoria secundaria Algoritmo de reemplazo: versión modificada del reloj 173 Sistemas operativos: una visión aplicada ARCOS @ UC3M Alejandro Calderón Mateos Modelo de memoria Windows 00000000 Programas de usuario Único por proceso Modo usuario 7FFFFFFF 80000000 Memoria compartida Único por sistema C0000000 FFFFFFFF 174 Sistema operativo Sistemas operativos: una visión aplicada Modo kernel ARCOS @ UC3M Alejandro Calderón Mateos Lección 6 La gestión de memoria Grupo ARCOS Diseño de Sistemas Operativos Grado en Ingeniería Informática Universidad Carlos III de Madrid