1 / 42

Teoría de Sistemas Operativos Memoria

Teoría de Sistemas Operativos Memoria. Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz http://www.elo.utfsm.cl/~elo321. Técnicas de Administración de Memoria.

muriel
Download Presentation

Teoría de Sistemas Operativos Memoria

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Teoría de Sistemas OperativosMemoria Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz http://www.elo.utfsm.cl/~elo321

  2. Técnicas de Administración de Memoria

  3. Al administrar la memoria física, ocurren ciertos problemas que son inherentes a los esquemas y algoritmos vistos. • No se pueden ejecutar programas que necesitan más memoria que la disponible físicamente. • Puede existir la posibilidad que no se pueda dejar segmentos de memoria contiguos.

  4. Idea básica: • Ocultar los detalles de la memoria física. Esto es: • MV disfraza el hecho que la memoria real no está asignada a un programa como una región continua, y • MV oculta el tamaño actual de la memoria física disponible.  Cada programa tiene un bloque de memoria (espacio de direcciones) continuo y que comienza por la dirección 0. El tamaño puede ser considerado como infinito.

  5. Memoria Virtual Memoria Física MMU (address_map)

  6. Memoria Virtual Memoria Física MMU Direcciones generadas por la CPU

  7. Existen al menos dos formas de implementación de MV, según el punto de vista del usuario • Espacio de direcciones de segmento único • (paginación) • Espacio de direcciones de segmento múltiple • (Segmentación)

  8. Espacio de direcciones de segmento único • MV como un espacio lineal continuo (esquema tradicional de memoria) de n celdas (n=2k). • MV es dividida en trozos de igual tamaños  pages, las que pueden ser cargadas en memoria en trozos no contigüos de memoria física, denominados pages frames.

  9. Espacio de direcciones de segmento múltiple • Divide el espacio de direcciones virtuales en un conjunto de segmentos, donde cada segmento es un espacio lineal y puede variar de tamaño. • Un segmento puede ser tratado como una unidad lógica independiente, por ejemplo, una función. • Cada segmento puede ser cargado como una unidad dentro de un trozo contigüo de memoria o ser dividido en páginas de igual tamaño.

  10. Ambas técnicas deben poseer como mínimo las siguientes funciones: • Mecanismos de mapeo de direcciones. • Implementación address_map(). • Estrategias de asignación de memoria: • Determina donde cargar los trozos necesarios de MV. • Estrategias de reemplazo: • Cuando una porción de MV necesita ser cargado en Mem. Real y no hay espacio disponible, el sistema debe crear un espacio (Swaping, pages o frames)

  11. El espacio de direcciones virtuales es dividido en una secuencia de bloques contigüos de igual tamaña  PAGES. • Páginas Pm son de 1Kb -> 16Kb • Análogamente, la memoria física es dividida en bloques denominados PAGES FRAMES, cuyo tamaño es idéntico al tamaño de las páginas. Cada dirección generada (va) por la CPU es dividida en 2 partes: numero de página (p) y offset dentro de la página (w)

  12. Cada dirección física (pa) también es dividida en 2 partes: numero de frame (f) y offset dentro del frame (w). • ¿Cómo la MMU (address_map) convierte direcciones (p,w) en (f,w) y mantiene un historial de esta conversión? Tablas de frames. Tablas de páginas.

  13. Tabla de frames. • Implementa un tabla de tamaño F, donde cada entrada corresponde a un frame y contiene el número de la página que se encuentra en él. • Situación complicada en multiprogramación: • Muchos procesos pueden utilizar el mismo número de página, cada uno apuntando a un diferente frame. •  Se necesita almacenar el ID del proceso como parte de cada entrada

  14. Tablas de frames. • Sea un arreglo FT[F] de punteros a la siguiente estructura: Struct { int pid; int page; } • donde: • pid almacena el ID del proceso dueño de la página almacenada en el frame f ,y • page contiene el número de la página almacenada en dicho frame

  15. Tablas de frames. • La función address_map puede ser escrita como: • Address_map(id,p,w){ • pa = NULL; • for(f=0;f < F; f++) • if(FT[f].pid == id && • FT[f].page == p) pa = f+w; • return(pa); • } • Este algoritmo se puede implementar en Memorias Asociativas.

  16. Tabla de frames.

  17. Tablas de frames. • Ventajas: • Sólo una tabla debe ser mantenida para todos los procesos. • Desventajas: • Mayor tamaño de memoria, la tabla no se puede almacenar en memorias asociativas.

  18. Tablas de páginas. • Mantiene un historial de las páginas que está utilizando un proceso. La n-ésima entrada identifica el frame que contiene dicha página. • La función address_map queda como: Address_map(p,w){ pa = *(PTR+p)+w; return(pa); } • PTR : dirección de la tabla de páginas del proceso en RUNNING.

  19. Tablas de páginas. • Si las direcciones son de m bits y el tamaño de página es 2n, la tabla de páginas puede llegar a contener 2m-n entradas. Para m=32 y n=12 No se puede ocupar memorias asociativas ni registros de CPU. • Solución: manejar la tabla de páginas de cada proceso completamente en memoria, y usar sólo un registro que apunte a la ubicación de la tabla. (PTR)

  20. Tablas de páginas

  21. Tablas de páginas. • Desventaja: • costo de cada acceso a memoria se duplica, porque primero hay que accesar la tabla de páginas (se encuentra en memoria física). • Solución: usar un pequeño y rápido caché especial de memoria asociativa, llamado translation look-aside buffer (TLB).

  22. Tablas de páginas. • Translation look-aside buffer (TLB). • El TLB forma parte de la MMU, y contiene los pares (page, frame) de las páginas más recientemente accesadas. El número de entradas es 26 a 210 • Aunque el TLB sea pequeño, la probabilidad de que la página esté en el TLB (tasa de aciertos) es alta, porque los programas suelen hacer muchas referencias a unas pocas páginas.

  23. Tablas de páginas /TLB p

  24. Protección

  25. Paginación en dos niveles • Espacio de direcciones virtuales ~ 232 ó 264. •  ~ 1e6 de entradas para páginas de 4Kb. •  4 Bytes por cada entrada •  Tamaño de la tabla de páginas: 4MB/proc. •  Díficil asignar 4MB contigüos en memoria • principal. • Dividir la tabla de páginas : paginación en dos niveles (o en general, paginación jerárquica)

  26. Paginación en dos niveles • Supongamos direccionamiento de 32[bits] y páginas de 4[Kb]. La dirección virtual queda como:

  27. Paginación en dos niveles • Finalmente, la tabla de páginas quedaría como:

  28. Páginas compartidas (memoria compartida)

  29. La segmentación es un esquema de administración de memoria que implementa la visión del usuario de la memoria. • La memoria lógica es un conjunto de segmentos, c/u representando un sección conceptual del programa

  30. Cada segmento tiene un nombre (número) y un largo. • La dirección especifica el segmento y el offset dentro del segmento. • En contraste con la paginación donde el usuario maneja la dirección lógica y el hardware se encarga de pasarla a dirección física • <número de segmento, offset>

  31. Para mapear la direcciones bidimensionales en una dimensión (dirección física) se utiliza la tabla de segmentos. • Cada entrada en la tabla tiene una basey un límitedel segmento. • La base indica donde comienza el segmento en la memoria física.

  32. Ejemplo de segmentación:

  33. Compartir código mediante segmentación

  34. Páginación con segmentación. • Combina las ventajas de ambos sistemas. • Los segmentos tienen en general un tamaño múltiplo del tamaño de página. • Las direcciones son tridimensionales, esto es: • v = (s,p,w) Donde s es el segmento, p la página dentro del segmento y w el desplazamiento dentro de la página

  35. Páginación con segmentación. • Ejemplo: Organización de memoria en Pentium

  36. Paginación bajo demanda. • Parecido a sistemas paginados con swapping. • En vez de “swapear” todo el proceso a memoria principal, lo hacemos sólo con las páginas que realmente se necesiten. •  Lazy swapper o pager

  37. Paginación bajo demanda. • Presencia de páginas en memoria principal

  38. Pasos en caso de fallo de página. • Paginación bajo demanda.

  39. Necesidad de reemplazo de página. • Paginación bajo demanda.

  40. Pasos en el reemplazo de una página • Paginación bajo demanda.

  41. Pasos en el reemplazo de una página • Encontrar la página solicitada en el disco. • Encontrar un frame libre: • Si no hay uno, utilizar un algoritmo para seleccionar un frame “victima”. • Salvar la página víctima en disco; actualizar la tablas de páginas y frames. • Leer la página solicitada dentro del nuevo frame liberado; cambiar las tablas de páginas y frames. • Reanudar el proceso. • Paginación bajo demanda.

  42. Performance de pág. bajo demanda. • Tasa de Falla de Pagina p donde 0  p  1 • if p = 0 no hay fallo de página • if p = 1, toda referencia es un fallp • Tiempo de Acceso Efectivo (EAT) • EAT = (1 – p) x ma + p x tiempo_fallo_pagina • Por ejemplo: tfp=25[ms], ma=100[ns] • EAT = 100 + 24999900p • Si EAT:=110[ns]  p < 4x10-7 !! • Paginación bajo demanda.

More Related