La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Contenido Requisitos de la gestión de memoria

Presentaciones similares


Presentación del tema: "Contenido Requisitos de la gestión de memoria"— Transcripción de la presentación:

0 Tema 4 Gestión de memoria
El gestor de memoria es un componente básico del sistema operativo. Puente entre lo que piden las aplicaciones y el Hw de memoria. Es una parte del SO muy ligada al Hw y han evolucionado en paralelo. La frontera entre lo que hace el Hw y el Sw es muy difusa y por tanto muy buena para ser preguntada en test o en problemas.

1 Contenido Requisitos de la gestión de memoria
Modelo de memoria de un proceso Fases en la generación de un ejecutable Ficheros proyectados en memoria Servicios de gestión de memoria Evolución de los sistemas de gestión de memoria Memoria virtual Lo que vamos a ver a lo largo de este capítulo se puede resumir en las siguientes secciones, Primero veremos los objetivos que tenemos que perseguir con la gestión de memoria y las funciones que por tanto debemos esperar del gestor de memoria. Después pasaremos a ver el modelo de memoria de un proceso y ahondaremos en los objetivos del Gestor de Memoria. En la siguiente sección analizaremos cómo se crea un fichero ejecutable, el formato de un fichero ejecutable y cómo a partir del ejecutable conseguimos el mapa de memoria de un proceso. Hablaremos más delante de los ficheros proyectados en memoria. Una técnica muy utilizada en los sistemas operativos actuales. Hablaremos como siempre de los servicios del sistema operativo para la gestión de memoria. Y como parte yo diría más importante entraremos en el tema de la Evolución de la gestión de memoria y de cómo se ha llegado hasta el modelo de Memoria Virtual. Sistemas operativos Gestión de Memoria 2001

2 Requisitos de gestión de memoria
S.O. multiplexa recursos entre procesos Cada proceso cree que tiene una máquina para él solo Gestión de procesos: Reparto de procesador Gestión de memoria: Reparto de memoria Propiedades deseables: Ofrecer a cada proceso un espacio lógico propio Proporcionar protección entre procesos Permitir que procesos compartan memoria Dar soporte a regiones del proceso Maximizar rendimiento del sistema Es función del SO realizar un reparto transparente, eficiente y seguro de los recursos del sistema de tal forma q cada proceso crea que tiene la máquina para él solo. Es decir, tenemos que poder desarrollar cosas sin vernos afectados con la existencia de otros programas. Como me imagino habréis visto, el procesador se reparte en el tiempo. Cada determinado periodo de tiempo un proceso entra en ejecución. Gracias al bloque de control de cada proceso, que contiene sus registros de procesador correspondientes, podemos realizar los cambios de contexto. En el caso de la memoria tenemos que realizar una multiplexación del espacio. El espacio disponible ,o sea, la memoria principal, la tenemos que repartir entre todos los procesos que la requieran. Sin embargo esto depende del nivel de la jerarquía de memoria del que estemos hablando. Este nos sirve para la MP pero no para los registros, que necesitan una multiplexación en el tiempo. PROPIEDADES Espacios lógicos independientes: en sistemas monoprogramados no hay problema, podemos saber a partir de qué dirección va a estar nuestro código. Pero en sistemas multiprogramados no se puede conocer a priori la posición que ocupará un programa. Por lo que se necesita reubicación. Protección: A los procesos entre sí y del SO. Y mapa de E/S común entonces tb entonces tampoco los procesos accederán a los dispositivos. Compartir memoria: Direcciones lógicas se corresponden con la misma dirección física. Así, la memoria asignada a un proceso no es contigua. Se puede compartir código o bien para intercambiar información. Soporte regiones: Gestor + Hw soporte a las características específicas de cada región. Ej: código de prog no debe modificarse. SO debe saber qué regiones y de qué tamaño existen. Zonas del mapa de memoria que no pertenecen a ninguna región y por tanto los accesos implican errores. El SO almacena para cada proceso una tabla de regiones. Max rendimiento: política de asignación adecuada. Saber donde están las cosas ocupa espacio de memoria, luego hay que minimizarlo. Sistemas operativos Gestión de Memoria 2001

3 Funciones del gestor de memoria
Saber qué partes de la memoria están siendo utilizadas. Cargar programas en MP para su ejecución. Proporcionar memoria a los procesos cuando la soliciten. Liberarla cuando se requiera. Gestionar el intercambio (swapping). Protección. Entre procesos. Entre el SO y los procesos Memoria compartida. Procesos que ejecutan el mismo código. Como mecanismo de comunicación. Sistemas operativos Gestión de Memoria 2001

4 Modelo de memoria de un proceso
Un proceso está formado por una serie de regiones. Región: zona contigua del espacio de direcciones de un proceso con las mismas propiedades. Tipos de regiones básicos: Texto: código Datos Pila Sistemas operativos Gestión de Memoria 2001

5 Programa ejemplo Tipos de memoria 1.- Código 2.- Datos declarados
int a; int b = 5; void f(int c) { int d; static e = 2; b = d + 5; return; } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) free (p) .... exit (0) Tipos de memoria 1.- Código 2.- Datos declarados Globales Con valor inicial Sin valor inicial Locales Sistemas operativos Gestión de Memoria 2001

6 Programa ejemplo: Fichero ejecutable
int a; int b = 5; void f(int c) { int d; static e = 2; b = d + 5; return; } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) free (p) .... exit (0) Sistemas operativos Gestión de Memoria 2001

7 Programa ejemplo: Exec
int a; int b = 5; void f(int c) { int d; static e = 2; b = d + 5; return; } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) free (p) .... exit (0) Sistemas operativos Gestión de Memoria 2001

8 Programa ejemplo: malloc
int a; int b = 5; void f(int c) { int d; static e = 2; b = d + 5; return; } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) free (p) .... exit (0) Sistemas operativos Gestión de Memoria 2001

9 Programa ejemplo: Llamada a f
int a; int b = 5; void f(int c) { int d; static e = 2; b = d + 5; return; } main (int argc, char **argv) { char *p; p = (char *) malloc (1024) f(b) free (p) .... exit (0) Sistemas operativos Gestión de Memoria 2001

10 Gestión de memoria en sistemas monoprogramados
Modelo de memoria SO Usuario Usuario SO FFF... Sistemas operativos Gestión de Memoria 2001

11 Gestión de memoria en sistemas monoprogramados II
Overlays SO Zona común Zona de solapamiento Mod 1 Mod 2 Mod 3 FFF... Sistemas operativos Gestión de Memoria 2001

12 Multiprogramación Ventajas:
Facilita la programación, dividiendo los programas en procesos. Permite el servicio interactivo simultáneo a varios usuarios de forma eficiente. Aprovecha los tiempos que los procesos pasan esperando a que se completen sus operaciones de E/S. Aumenta el uso de la CPU. Grado de multiprogramación: número de procesos en memoria. Sistemas operativos Gestión de Memoria 2001

13 Modelo de multiprogramación
Un proceso gasta p % de tiempo por E/S. Si el grado de multiprogramación es n => La probabilidad de que todos estén esperando es pn . Utilización de la CPU: 1 - pn. Este modelo es sólo una aproximación (supone que los n procesos son independientes). En un sistema monoprocesador esto no es cierto (un proceso ha de esperar cuando la CPU está ocupada). Este modelo puede proporcionar predicciones aproximadas sobre el rendimiento de la CPU. Sistemas operativos Gestión de Memoria 2001

14 Modelo de multiprogramación II
Sistemas operativos Gestión de Memoria 2001

15 Reubicación En un sistema multiprogramado es imposible conocer en tiempo de compilación y montaje qué direcciones ocupará un proceso en memoria => reubicación Solución: emplear direcciones lógicas Tres alternativas: Reubicación hardware Reubicación software Programa reubicable (no tiene direcciones absolutas) Sistemas operativos Gestión de Memoria 2001

16 Reubicación hardware Hardware encargado de traducción
El S.O. se encarga de: Almacena por cada proceso su función de traducción Especifica al hardware qué función aplicar para cada proceso Programa se carga en memoria sin modificar Para el ejemplo anterior: El código incluye referencias a memoria o dentro de los propios datos con punteros entre sí. Hay que poder realizar Reubicación del código. Esto nos obligará también a un proceso de traducción. Creamos un espacio lógico o mapa independiente para cada proceso y que es proyectado sobre memoria principal de acuerdo a una función de traducción. La traducción se lleva a cabo por un módulo específico del procesador llamado MMU (Memory Management Unit). El SO proporciona la función de traducción a la MMU. Alternativa Sw: reubicar en el momento de carga. Pero luego no se puede mover en T de ejecución, por lo que no es válido para la Memoria Virtual. Sistemas operativos Gestión de Memoria 2001

17 Reubicación software Traducción de direcciones durante carga del programa Programa en memoria distinto del ejecutable Desventajas: No asegura protección No permite mover programa en tiempo de ejecución Para el ejemplo anterior: Sistemas operativos Gestión de Memoria 2001

18 Protección Monoprogramación: Protección del SO
Multiprogramación: Además procesos entre sí Traducción debe crear espacios disjuntos Necesario validar todas las direcciones que genera el programa La detección debe realizarla el hardware del procesador El tratamiento lo hace el SO (envía KILL al proceso) Sistemas operativos Gestión de Memoria 2001

19 Reubicación y protección
Sistemas operativos Gestión de Memoria 2001

20 Compartir memoria Direcciones lógicas de 2 o más procesos se corresponden con misma dirección física Bajo control del S.O. Beneficios: Procesos ejecutando mismo programa comparten su código Mecanismo de comunicación entre procesos muy rápido Requiere asignación no contigua: Sistemas operativos Gestión de Memoria 2001

21 Maximizar rendimiento
Reparto de memoria maximizando grado de multiprogramación Aprovechamiento de memoria óptimo e irrealizable: Paginación: solución factible con aprovechamiento aceptable Uso de memoria virtual para aumentar grado de multiprogramación Sistemas operativos Gestión de Memoria 2001

22 Fases en generación de ejecutable
Aplicación: conjunto de módulos en lenguaje de alto nivel Procesado en dos fases: Compilación y Montaje Compilación: Resuelve referencias dentro cada módulo fuente Genera módulo objeto Montaje (o enlace): Resuelve referencias entre módulos objeto Resuelve referencias a símbolos de bibliotecas Genera fichero ejecutable Carga en memoria Añade rutinas de biblioteca Sistemas operativos Gestión de Memoria 2001

23 Bibliotecas estáticas
Biblioteca: colección de módulos objeto relacionados Bibliotecas del sistema o creadas por el usuario Bibliotecas Estáticas: Montaje: enlaza los módulos objeto del programa y de las bibliotecas Ejecutable autocontenido Desventajas del montaje estático: Ejecutables grandes Código de función de biblioteca repetido en muchos ejecutables Múltiples copias en memoria del código de función de biblioteca Actualización de biblioteca implica volver a montar Sistemas operativos Gestión de Memoria 2001

24 Bibliotecas dinámicas
Carga y montaje de biblioteca en tiempo de ejecución Ejecutable contiene: Nombre de la biblioteca Rutina encargada de carga y montaje en tiempo de ejecución ante primera referencia Ventajas del montaje dinámico: Menor tamaño ejecutables Código de rutinas de biblioteca sólo en fichero de biblioteca Procesos pueden compartir código de biblioteca Actualización automática de bibliotecas: Uso de versiones Sistemas operativos Gestión de Memoria 2001

25 Bibliotecas dinámicas
Sistemas operativos Gestión de Memoria 2001

26 Bibliotecas dinámicas
Proceso: El programa principal llama a la pseudo función XX Esta función contacta con el SO y le pide la función XX El SO comprueba que la función XX está definida en una biblioteca dinámica. El SO operativo comprueba si XX ya está cargada en memoria por algún proceso En caso negativo la carga En caso positivo comparte esa zona de memoria con este proceso El SO devuelve un puntero a la Pseudo XX para que pase la llamada a XX Sistemas operativos Gestión de Memoria 2001

27 Formato del ejecutable
Distintos fabricantes usan diferentes formatos Ejemplo: Executable and Linkable Format (ELF) Estructura: Cabecera y conjunto de secciones Cabecera: Número mágico Punto de entrada del programa Tabla de secciones Sistemas operativos Gestión de Memoria 2001

28 Formato del ejecutable
Sistemas operativos Gestión de Memoria 2001

29 Secciones del ejecutable
Variedad de tipos de secciones. Ejemplo: Tabla de símbolos para depuración Lista de bibliotecas dinámicas usadas Más relevantes en mapa de memoria del proceso: Código, Datos con valor inicial y Datos sin valor inicial Código (texto) Contiene código del programa Datos con valor inicial Variables globales inicializadas Datos sin valor inicial Variables globales no inicializadas Aparece en tabla de secciones pero no se almacena en ejecutable ¿Por qué no hay sección vinculada a variables locales? Sistemas operativos Gestión de Memoria 2001

30 Variables globales versus locales
Estáticas Se crean al iniciarse programa Existen durante ejecución del mismo Dirección fija en memoria y en ejecutable Variables locales y parámetros Dinámicas Se crean al invocar función Se destruyen al retornar La dirección se calcula en tiempo de ejecución Recursividad: varias instancias de una variable Sistemas operativos Gestión de Memoria 2001

31 Variables globales versus locales
Ejemplo: int x=8; /* Variable global con valor inicial */ int y; /* Variable global sin valor inicial */ f(){ int z; /* Variable local */ } main(){ Sistemas operativos Gestión de Memoria 2001

32 Crear mapa de memoria desde ejecutable
Código Compartida, RX, T. Fijo, Soporte en Ejecutable Datos con valor inicial Privada, RW, T. Fijo, Soporte en Ejecutable Datos sin valor inicial Privada, RW, T. Fijo, Sin Soporte (rellenar 0) Pila Privada, RW, T. Variable, Sin Soporte (rellenar 0) Crece hacia direcciones más bajas Pila inicial: argumentos del programa Sistemas operativos Gestión de Memoria 2001

33 Crear mapa desde ejecutable
Sistemas operativos Gestión de Memoria 2001

34 Otras regiones del mapa creadas durante ejecución
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 Fichero proyectado Región asociada al fichero proyectado Compartida, T. Variable, Soporte en Fichero Protección especificada en proyección Memoria compartida Región asociada a la zona de memoria compartida Compartida, T. Variable, Sin Soporte (rellenar 0) Pilas de threads Cada pila de thread corresponde con una región Mismas características que pila del proceso Biblioteca dinámica Regiones asociadas al código y datos de la biblioteca Sistemas operativos Gestión de Memoria 2001

35 Mapa de memoria de un proceso hipotético
Sistemas operativos Gestión de Memoria 2001

36 Servicios de gestión de memoria
Gestor de memoria realiza funciones internas Ofrece pocos servicios directos a aplicaciones Servicios POSIX de gestión de memoria más usados: Uso de memoria compartida (shm_open) Proyección de ficheros y m. compartida (mmap) Bloqueo de páginas en memoria principal Asignación de memoria Ya han sido estudiados Presentamos ejemplos de proyección de ficheros Sistemas operativos Gestión de Memoria 2001

37 Ficheros proyectados en memoria
Sistemas operativos Gestión de Memoria 2001

38 Ficheros proyectados en memoria II
Una región del proceso recibe el fichero. Fichero como extensión del swap. Habrá páginas del fichero en memoria principal. El proceso direcciona dentro del fichero (región) con las instrucciones de acceso a memoria. Sistemas operativos Gestión de Memoria 2001

39 Ficheros proyectados: Servicios
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. Sistemas operativos Gestión de Memoria 2001

40 Ejemplo: copia de ficheros
#include <sys/types.h> #include <sys/stat.h> #include <sys/mman.h> #include <fcntl.h> #include <stdio.h> #include <unistd.h> main(int argc, char **argv) { int i, fdo, fdd; char *org, *dst, *p, *q; struct stat bstat; /* Abre el fichero origen para lectura */ fdo=open(argv[1], O_RDONLY); fdd=open(argv[2], O_CREAT|O_TRUNC|O_RDWR, 0640); Sistemas operativos Gestión de Memoria 2001

41 Ejemplo: copia de ficheros
/* Averigua la longitud del fichero origen */ fstat(fdo, &bstat) /* Asigna tamaño al fichero destino */ ftruncate(fdd, bstat.st_size); /* Se proyecta todo el fichero origen (ver "man mmap") */ org=mmap(NULL, bstat.st_size, PROT_READ, MAP_SHARED, fdo, 0); /* Se proyecta todo el fichero destino (ver "man mmap" */ dst=mmap(NULL, bstat.st_size, PROT_WRITE, MAP_SHARED, fdd, 0); if (org == MAP_FAILED || dst == MAP_FAILED) perror("Error en mmap"); /* Se cierran los ficheros */ close(fdo); close(fdd); Sistemas operativos Gestión de Memoria 2001

42 Ejemplo: copia de ficheros
/* Bucle de copia */ p=org; q=dst; for (i=0; i<bstat.st_size; i++) *q++= *p++; /* Se eliminan las proyecciones */ munmap(org, bstat.st_size); munmap(dst, bstat.st_size); } Sistemas operativos Gestión de Memoria 2001

43 Ejemplo II Ejemplo: Cuántas veces aparece carácter en fichero
int main(int argc, char **argv) { fd=open(argv[2], O_RDONLY)); /* Abre fichero */ fstat(fd, &bstat); /* Averigua long. fichero */ /* Se proyecta el fichero */ org=mmap((caddr_t) 0, bstat.st_size, PROT_READ, MAP_SHARED, fd, 0)); close(fd); /* Se cierra el fichero */ Sistemas operativos Gestión de Memoria 2001

44 Ejemplo II /* Bucle de acceso */ p=org;
for (i=0; i<bstat.st_size; i++) if (*p++==caracter) contador++; /* Se elimina la proyeccion */ munmap(org, bstat.st_size); printf("%d\n", contador); } Sistemas operativos Gestión de Memoria 2001

45 Memoria compartida La región puede proyectarse en cada proceso sobre direcciones virtuales diferentes. Sistemas operativos Gestión de Memoria 2001

46 Memoria compartida: Servicios
int shm_open(char *name, int oflag, mode_t mode); Crea un objeto de memoria a compartir entre procesos int shm_unlink(const char *name); Borra una zona de memoria compartida. 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. void munmap(void *addr, size_t len); Desproyecta parte del espacio de direcciones de un proceso comenzando en la dirección addr. int close(int fd); Cierra el descriptor de objeto de memoria compartida int ftruncate(int fd); Asigna espacio a un fichero u objeto de memoria compartida. Sistemas operativos Gestión de Memoria 2001

47 Memoria compartida: Ejemplo (I)
Creación de un segmento de memoria compartida (proceso A): char *buffer; /* buffer a compartir */ int shd; /* se crea el objeto en un proceso */ shd = shm_open("BUFFER", O_CREAT|O_RDWR, 0777); /* se asigna espacio al segmento */ ftruncate(shd, MAX_BUFFER * sizeof(char)); /* se proyecta */ buffer = (char *) mmap(NULL, MAX_BUFFER * sizeof(char), PROT_READ | PROT_WRITE, MAP_SHARED, shd, 0); Sistemas operativos Gestión de Memoria 2001

48 Memoria compartida: Ejemplo (II)
Acceso a un segmento de memoria compartida (proceso B): char *buffer; /* buffer a compartir */ int shd; /* se crea el objeto en un proceso */ /* debe existir */ shd = shm_open("BUFFER"", O_RDWR); /* se proyecta */ buffer = (char *) mmap(NULL, MAX_BUFFER * sizeof(char), PROT_READ | PROT_WRITE, MAP_SHARED, shd, 0); Sistemas operativos Gestión de Memoria 2001

49 Utilización de memoria asignada
Se proyecta sobre la zona asignada una estructura Se utiliza la estructura mediante un manejador (puntero) Errores típicos de utilización: Utilizar el manejador (puntero) después de haber liberado la memoria. Se utiliza una memoria que ya no está asignada No liberar la memoria una vez terminado su uso. El sistema se puede quedar sin memoria Para memoria compartida Proyectar la misma estructura en todos los programas. ¿Compartir la definición de la estructura? Sistemas operativos Gestión de Memoria 2001

50 Utilización de memoria asignada
struct datos { int a; char b; float c; inte v[10]; } main () { struct datos *p; /* Se reserva memoria y se proyecta la estructura de datos */ p = malloc (sizeof (struct datos)); /* se utiliza la memoria asignada a través de p */ p->a = 5; p->b = 'a'; p->c = 2.5; p-> v[3] = 25; .... Sistemas operativos Gestión de Memoria 2001

51 Reserva de memoria malloc: es una función de librería del lenguaje C
UNIX El malloc se puede construir con el servicio brk tamaño = brk (addr) Coloca , si es posible, el fin del heap en la dirección addr Supone que aumenta o disminuye el heap del segmento de datos Wn 32 Un proceso puede crear varios heaps mediante: HeapCreate Se puede asignar memoria a cada heap mediante: HeapAlloc Sistemas operativos Gestión de Memoria 2001

52 Liberar memoria free: es una función de librería del lenguaje C
UNIX El free se puede construir con el servicio brk tamaño = brk (addr) Coloca , si es posible, el fin del heap en la dirección addr Supone que aumenta o disminuye el heap del segmento de datos Wn 32 Un proceso puede crear destruir un heap mediante: HeapDestroy Se puede liberar memoria de un heap mediante: HeapFree Sistemas operativos Gestión de Memoria 2001

53 Bloquear páginas en marcos de memoria principal
mlockall Bloquea todo el espacio de direcciones de un proceso en memoria mlockall (MCL_CURRENT) Bloquea todas las páginas actuales del proceso mlockall (MCL_FUTURE) Bloquea todas las páginas del proceso, tanto las actuales como las futuras El mandato está reservado al superusuario munlockall Desbloquea el espacio de direcciones del proceso Sistemas operativos Gestión de Memoria 2001

54 Bloquear páginas en marcos de memoria principal
int mlock (void *addr, int len); Bloquea todas las páginas que contengan posiciones contenidas entre addr y addr + len Está reservado al superusuario int munlock (void *addr, int len); Restablece las páginas que contengan parte del espacio de direcciones comprendido entre addr y addr + len Sistemas operativos Gestión de Memoria 2001

55 Evolución de gestión de memoria
Muy ligada al desarrollo del hardware HW más sofisticado permite estrategias más efectivas Por simplicidad, sólo dos etapas: Asignación contigua Paginación ¿Cumplen estos esquemas los requisitos planteados? Sistemas operativos Gestión de Memoria 2001

56 Asignación contigua (1/2)
Zona contigua de memoria contiene mapa del proceso Entre diversas alternativas, nos centramos en: Esquema basado en particiones dinámicas Hardware requerido: registros valla Registro límite Registro base Sistemas operativos Gestión de Memoria 2001

57 Asignación contigua (2/2)
S.O. almacena en BCP valor de R. valla del proceso En cambio de proceso S.O. carga R. valla de BCP a procesador Fragmentación externa Quedan pequeños fragmentos no utilizables ¿Cumple requisitos? Espacios independientes: Mediante R. valla Protección: Mediante R. valla Compartir memoria: No posible Soporte de regiones: No hay Se reserva espacio para huecos Maximizar rendimiento Mal aprovechamiento (f. externa) No permite memoria virtual Sistemas operativos Gestión de Memoria 2001

58 Paginación (1/2) Hardware más sofisticado Unidad de asignación: Página
Mapa de memoria dividido en páginas Memoria física dividida en marcos de página Tabla de páginas (T.P.) por proceso: Relaciona cada página con el marco que la contiene MMU usa T.P. para traducir direcciones lógicas S.O. mantiene T.P. de procesos y notifica a MMU cuál debe usar Sistemas operativos Gestión de Memoria 2001

59 Paginación (2/2) Entrada de la T.P. Fragmentación interna
Número de marco asociado Protección (RWX) Página presente (P) o ausente (A) Fragmentación interna Puede desperdiciarse parte de último marco asignado a proceso ¿Cumple requisitos? Espacios independientes: Mediante T.P. Protección: Mediante T.P. Compartir memoria: Páginas asociadas a mismo marco Soporte de regiones: se usa información de la T.P. Tipo de acceso no permitido: Protección Accesos a huecos: Página presente No se reserva espacio para huecos Maximizar rendimiento Buen aprovechamiento Permite memoria virtual Sistemas operativos Gestión de Memoria 2001

60 Memoria virtual Gestión automática de la parte de la jerarquía de memoria formada por los dos niveles de memoria principal y de disco. Sistemas operativos Gestión de Memoria 2001

61 Memoria virtual Jerarquía de memoria: Niveles de almacenamiento
Procesos exhiben proximidad de referencias Memoria virtual Transferencias M. principal y M. secundaria (swap) Basada en paginación: Página no residente se marca ausente Se guarda dir. de bloque de swap que la contiene De M. secundaria a M. principal (por demanda): Acceso a pág. no residente: Fallo de página S.O. lee página de M. secundaria De M. principal a M. secundaria (por expulsión): 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 Beneficios: Aumento grado de multiprogramación ¡¡Cuidado con Hiperpaginación!! Ejecución de programas que no caben en M. ppal. Sistemas operativos Gestión de Memoria 2001

62 Gestión de espacio de swap
Asignación de espacio de swap cuando se crea región Dos alternativas: Con y sin preasignación Creación de región con preasignación Se asigna espacio de swap Se copia en él contenido inicial desde soporte Páginas se traen por demanda desde swap En expulsión ya tiene espacio reservado Creación de región sin preasignación No se asigna espacio de swap Páginas se traen por demanda desde su soporte En expulsión se reserva espacio de swap (si pág. modificada) Sin preasignación más usada actualmente Región compartida con soporte no usa swap Sistemas operativos Gestión de Memoria 2001

63 Ejecución de programas
Creación de regiones iniciales desde ejecutable No se asigna espacio en M. principal No se carga nada en M. principal Se traerá bajo demanda Se rellena cada entrada de T.P.: Protección: Depende de tipo de región Ausente Dir. en M. secundaria donde está almacenada Último valor depende del tipo de gestión de swap Sistemas operativos Gestión de Memoria 2001

64 Con preasignación de swap
S.O. reserva espacio en swap para regiones Copia del soporte al swap: Código: De ejecutable Datos con v.i.: De ejecutable Datos sin v.i.: Rellenar a 0 Pila: Argumentos del programa Entradas T.P referencian a bloques del swap Sistemas operativos Gestión de Memoria 2001

65 Sin preasignación de código
Región de código: compartida con soporte No es necesario usar swap Se usa directamente ejecutable Sistemas operativos Gestión de Memoria 2001

66 Sin preasignación de swap
Entradas T.P. referencian a bloques del soporte (si hay): Código: Bloques del ejecutable Datos con v.i.: Bloques del ejecutable Datos sin v.i.: Valor que indica rellenar a 0 Pila: Bloque del swap con argumentos del programa Al expulsar por primera vez una página modificada se reserva espacio de swap Excepto si compartida y con soporte -> se actualiza soporte Sistemas operativos Gestión de Memoria 2001

67 Ficheros proyectados en memoria
Generalización de M. Virtual Entradas de T.P. referencian a fichero de usuario Programa solicita proyección de fichero en su mapa Forma alternativa de acceso al fichero: En vez de read y write Acceso directo a memoria Ventajas Menos llamadas al sistema Menos copias intermedias Más fácil programación Sistemas operativos Gestión de Memoria 2001

68 Ficheros proyectados en memoria
Sistemas operativos Gestión de Memoria 2001

69 Memoria virtual II El proceso sólo ve direcciones virtuales.
El mapa virtual de un proceso está soportado en memoria secundaria (swap). No es necesario que todo el proceso esté cargado en memoria => Más procesos en MP, uso más eficiente del procesador. Un proceso puede ser mayor que la MP. Arranque más rápido. Conjunto residente: parte del proceso cargado en MP. Sistemas operativos Gestión de Memoria 2001

70 Requisitos de la memoria virtual
Soporte en almacenamiento secundario. Espacio virtual mayor que la memoria física => fallos en los accesos a memoria. Cuando se produce un fallo de acceso => trap al SO. Hay que continuar o reiniciar la instrucción en la que se produjo el fallo de acceso. MOV (R1), (R2) => tres fallos de página. Esquemas HW de memoria virtual: Paginación. Segmentación. Segmentación paginada. Sistemas operativos Gestión de Memoria 2001

71 Paginación I Sistemas operativos Gestión de Memoria 2001

72 Mecanismo de traducción
Necesario una tabla de páginas. Sistemas operativos Gestión de Memoria 2001

73 Tabla de páginas I La información de traducción se organiza en tablas de páginas. La tabla de páginas está formada por entradas de tablas de página (ETP). Cada entrada permite traducir una página virtual. Permite saber si una página: Está en MP => marco de página. Está en almacenamiento secundario => página en disco. Sistemas operativos Gestión de Memoria 2001

74 Tabla de páginas II Si la página no se encuentra en MP => fallo de página (trap al SO). Sistemas operativos Gestión de Memoria 2001

75 Información de una ETP I
Sistemas operativos Gestión de Memoria 2001

76 Información de una ETP II
Otra información: Copy-on-write No paginada (fija en memoria física). Cache desactivada. Rellenar a ceros. Rellenar de fichero. Sistemas operativos Gestión de Memoria 2001

77 Paginación por demanda
Los procesos residen en memoria secundaria y no se carga inicialmente ninguna página en MP. El SO ha creado previamente la TP y las entradas están marcadas como no presentes. A medida que se referencian direcciones se producen fallos de página que trata el SO. Ventajas: Sólo se cargan en MP las páginas que se referencian. Acelera la carga de un proceso (no se cargan páginas que no se referencian). Mejor uso de la MP. Esquema implementado en los SO actuales. UNIX. LINUX. Windows NT. Sistemas operativos Gestión de Memoria 2001

78 Manejo del fallo de página
El HW genera un trap de fallo de página. Se salva el estado del proceso actual y se bifurca a la rutina de gestión del fallo de página. El SO debe conocer qué página hace falta => el HW lo da en un registro. El SO comprueba si el acceso está permitido (búsqueda en la TP). Si no está permitido se mata al proceso o se envía una señal. El SO busca un marco de página libre. Si no hay se ejecuta el algoritmo de reemplazo. Si el marco de página esta sucio se escribe a disco y se lanza otro proceso. Cuando el marco de página queda libre se bloquea el marco en MP, se manda leer y se lanza otro proceso. Cuando llega la interrupción de E/S de la lectura se actualiza la ETP correspondiente y se marca el marco de página como normal. El proceso se marca como ejecutable. Se continua o se reinicia la instrucción que produjo el fallo. Sistemas operativos Gestión de Memoria 2001

79 Soporte de la imagen de memoria
Regiones con soporte propio Regiones sin soporte propio => swap. Sistemas operativos Gestión de Memoria 2001

80 Creación de la imagen a partir de un fichero ejecutable
Inicialmente ninguna página cargada en MP a excepción de la pila inicial. Uso más eficiente de los recursos. Sólo se cargan las páginas que realmente se usan. Sólo se reserva espacio de swap cuando se necesita. Sistemas operativos Gestión de Memoria 2001

81 Ejecución de un programa en LINUX
Ejemplo de código. #include <math.h> #include <stdio.h> main() { double x = 30; double res; void *p; p= sbrk(40000); res = sin(x); printf("res = %f \n", res); } Bibliotecas: libc.so libm.so Sistemas operativos Gestión de Memoria 2001

82 Ejecución de un programa en LINUX II
Mandato strace open("/lib/libm.so", O_RDONLY) mmap() => se proyecta el código. open("/lib/libc.so", O_RDONLY) Comienza a ejecutar el proceso Fichero /proc/PID/maps direccion perms offset dev nodo-i r-xp : Código a000 rw-p : Datos sin VI 0804a rwxp : Datos dinámicos a000 r-xp : ld.so 4000a b000 rw-p : r-xp : libm.so rw-p : ba000 r-xp : libc.so 400ba c2000 rw-p : 400c ce000 rw-p :00 0 bfffc000-c rwxp ffffd : Pila Sistemas operativos Gestión de Memoria 2001

83 Reemplazo de páginas Objetivo: reducir la tasa de fallos. Algoritmos:
Óptimo. FIFO. NRU. Segunda oportunidad. Algoritmo del reloj. LRU. Buffering de páginas. Demonio de paginación. Se activa cuando se necesitan páginas. Objetivo: disponer de páginas libres. Sistemas operativos Gestión de Memoria 2001

84 Hiperpaginación Solución: reducir el grado de multiprogramación, suspendiendo uno o más procesos Sistemas operativos Gestión de Memoria 2001


Descargar ppt "Contenido Requisitos de la gestión de memoria"

Presentaciones similares


Anuncios Google