8 memoria principal · paginación • es necesario llevar un registro de todos los frames libres....
TRANSCRIPT
Sistemas Operativos8 Memoria Principal
Prof. Javier Cañas R.
Nota
• El texto guía es: Operating System Concepts, Eight Edition, Avi Silberschatz, Peter Baer Galvin, Greg Gagne
• Estas PPT están basadas en las PPT originales que el autor del texto guía mantiene en: http://www.os-book.com/
Copyright Note
The slides below are copyright Silberschatz, Galvin and Gagne, 2008. The slides are authorized for personal use, and for use in conjunction with a course for which Operating System Concepts is the prescribed text. Instructors are free to modify the slides to their taste, as long as the modified slides acknowledge the source and the fact that they have been modified. Paper copies of the slides may be sold strictly at the price of reproduction, to students of courses where the book is the prescribed text. Any use that differs from the above, and any for profit sale of the slides (in any form) requires the consent of the copyright owners; contact Avi Silberschatz ([email protected]) to obtain the copyright owners consent.
Temario
1. Antecedentes
2. Swapping
3. Asignación contigua
4. Paginación
5. La Tabla de Página
... Temario
6. Segmentación
7. Ejemplo: Intel Pentium
Objetivos
• Proporcionar una descripción detallada de las distintas maneras de organizar el hardware de memoria.
• Discutir distintas técnicas de administración de memoria, incluidas la paginación y segmentación.
• Ejemplificar con el Pentium que soporta segmentación pura y segmanteción paginada.
1 Antecedentes• Para poder ser ejecutados, los programas deben
ser traídos del disco a la memoria y ubicados dentro de un proceso.
• La memoria principal y los registros de propósito general son los únicos almacenamientos que la CPU puede accesar directamente.
• El tiempo de acceso a un registro es un pulso de reloj (o menos).
... Antecedentes
• El acceso a la memoria principal puede tomar varios ciclos de reloj.
• La memoria caché se ubica entre la memoria principal y la CPU.
• Se requiere protejer la memoria para asegurar correcta operación.
Registros Base y Límite
• El espacio lógico direccionable por un proceso está definido por el par de registros base y límite.
Hadware de protección
CPU ≥ <si
no
base base+limit
si
no
addressing error
Vinculamiento de instrucciones y datos en memoria
• La vinculación de direcciones de instrucciones y datos a memoria, puede ocurrir en tres etapas distintas:
• En tiempo de compilación: Si la región de memoria se conoce a priori, se puede generar el llamado código absoluto. Si la región cambia, se debe recompilar.
• En tiempo de carga: Se debe generar código relocalizable si la región de memoria no se conoce en tiempo de compilación.
...Vinculamiento de instrucciones
• En tiempo de ejecución: La vinculación se posterga hasta el tiempo de ejecución si el proceso puede moverse de un segmento de memoria a otro. Se necesita soporte de hardware para los mapas de direcciones (registros base y límite)
Procesamiento multietapa de un programa usuario
Espacio de Direcciones Físico y Lógico
• El concepto de un espacio lógico, limitado a un espacio físico separado es central para una gestión apropiada de memoria.
• Direcciones lógicas: son generadas por la CPU. También se denomina espacio virtual de direcciones.
• Direcciones físicas: son las direcciones vistas por la unidad de memoria.
... Espacio
• Las direcciones físicas y lógicas son las mismas en los esquemas de vinculación de tiempo de compilación y tiempo de carga.
• Las direcciones físicas y lógicas difieren en el esquema de vinculación en tiempo de ejecución
Memory-Management Unit (MMU)
• La MMU es un dispositivo de HW que transforma direcciones virtuales en direcciones físicas.
• A cada dirección generada por el proceso usuario se le suma el valor del registro de relocalización.
• Se logra que un programa usuario se relacione siempre sólo con direcciones lógicas.
HW para relocalización Dinámica
Carga Dinámica
• Una rutina no se carga hasta que es invocada.
• Se aprovecha mejor el espacio de memoria. Rutinas no utilizadas nunca se cargan.
• Muy útil cuando grandes cantidades de código se necesitan para manejar situaciones que ocurren en forma poco frecuente
... Carga Dinámica
• No se necesita soporte del SO. Se implementa en el diseño del programa.
Ligado Dinámico (Dynamic Linking)
• Se pospone el ligado hasta tiempo de ejecución.
• Se utiliza una pequeña pieza de código llamada Stub para ubicar la rutina apropiada residente en memoria.
• El SO necesita verificar si la rutina está en el espacio de direcciones del proceso.
• Es muy útil para bibliotecas.
• También se conoce bajo el nombre de “shared libraries” (DLL en Windows)
2 Swapping
• Un proceso puede ser intercambiado desde la memoria principal al disco (backing store), y posteriormente nuevamente ser llevado del disco a la memoria principal. Este proceso se denomina swapping.
• Memoria de apoyo (Backing store): es un disco rápido de tamaño suficiente para almacenar las copias de imágenes de memoria de los procesos usuarios. También debe proporcionar acceso directo a estas imágenes.
.. Swapping
• Roll out, roll in: es una variante de swapping que se utiliza para algoritmos de itineración basados en prioridades. Se sacan de memoria procesos con prioridad baja y se ingresan y ejecutan procesos con prioridad más alta.
• La mayor parte del tiempo de swapping es transferencia. El tiempo de transferencia es proporcional al tamaño de las imágenes de memoria.
... Swapping• Versiones modificadas de swapping se encuentran en la
mayoría de los SO actuales (UNIX, Linux, Windows).
• El sistema mantiene una cola ready de los procesos listos para ser ejecutados cuyas imágenes de memoria están en disco.
• Problema de I/O que genera el Swapping: si el proceso se sacó de memoria, ¿dónde almacenar los bloques transferidos?. Soluciones:
• Si hay I/O, dejar el proceso en memoria• Realizar I/O sólo a buffer del SO
Visión esquemática de Swapping
3 Asignación contigua
• Usualmente la memoria principal se divide en dos partes:
• El SO residente, usualmente en la parte baja que comprende el vector de interrupción.
• Procesos usuarios, en la parte alta de la memoria
... Asignación contigua
• Se utilizan registros de relocalización para proteger a los procesos entre si y proteger el SO.
• El registro Base apunte a la dirección más baja
• El registro Límite contiene el rango de direcciones lógicas. Cada espacio lógico al menos debe tener un registro Límite.
• La MMU dinámicamente realiza la conversión.
Soporte de Hardware
Asignación por múltiples particiones
• Agujeros: Bloques de memoria disponible. Agujeros de varios tamaños están dispersos por toda la memoria.
• Cuando llega un proceso, se le asigna memoria desde un agujero lo suficientemente grande como para contenerlo.
• El SO mantiene información sobre particiones asignadas y particiones libres (agujeros)
Asignación dinámica
OS
process 5
process 8
process 2
OS
process 5
process 2
OS
process 5
process 2
OS
process 5
process 9
process 2
process 9process
10
Problema de la asignación dinámica
• ¿Cómo satisfacer la solicitud de memoria de tamaño n desde la lista de agujeros libres?
• First-fit: Asigna el primer agujero de tamaño suficiente que encuentra.
• Best-fit: Asigna el agujero más pequeño que tiene el tamaño suficiente para contenerlo. Se debe recorrer la lista completa.
• Worst-fit: asigna el agujero más grande. También debe recorrer la lista completa. Deja el agujero más grande.
Discusión
• First-fit y Best-fit tienen un mejor comportamiento que worst-fit en términod de velocidad y utilización de memoria.
Fragmentación
• Fragmentación externa: existe espacio de memoria suficiente para satisfacer una solicitud, pero el espacio no es contiguo.
• Fragmentación interna: la memoria asignada es levemente superior a lo solicitado. La diferencia que se genera es interna a la partición y no puede ser utilizada.
Compactación
• La fragmentación externa se puede reducir por compactación.
• Se mueven bloques para dejar juntos los agujeros libres en un solo gran bloque.
• Sólo es posible si la relocalización es dinámica y se realiza en tiempo de ejecución
• Regla del 50%: Aún optimizando, dado N bloques asignados, se pierden 0.5 N bloques por fragmentación.
4 Paginación• El espacio lógico de un proceso puede ser no
contiguo. Siempre se asigna memoria física a un proceso cuando hay disponibilidad independiente donde esté.
• La memoria física se divide en en bloque de tamaño fijo llamados marcos (frames). El tamaño es potencia de dos y varía entre 512B y 8KB.
• El espacio lógico se divide en bloques de tamaño fijo llamados páginas.
... Paginación
• Es necesario llevar un registro de todos los frames libres.
• Para correr un programa de n páginas, necesitamos encontrar n frames libres y cargar el programa.
• Se inicializa una estructura llamada Tabla de Pagina que ttraslada direcciones lógicas en físicas.
• Se elimina la fragmentación externa, pero se genera fragmentación interna.
Conversión de direcciones
• Una dirección lógica generada por la CPU se divide en:
• Número de página (p): se usa para indexar la tabla de página que contiene la dirección base de cada página en memoria física.
• Offset de página (d): junto con la dirección base, define la dirección física de la unidad de memoria.
... Conversión
• El espacio lógico es de 2m y el tamaño de la página es 2n
page number page offset
p d
m - n n
Hardware de Paginación
Modelos de memoria física y lógica
Ejemplo de Paginación
Memoria de 32-B y Páginas de 4-B
Frames libres
Antes de asignar Después de asignar
Implementación de la Tabla de Página
• La Tabla de Página se guarda en memoria principal. Dos estructuras permiten su acceso:
• Page-table base register (PTBR): apunta a la Tabla de Página.
• Page-table length register (PTLR): indica el tamaño de la Tabla.
• En este esquema cada dirección (dato/instrucción) requiere dos accesos de memoria. Uno para la T. de P. y otro para el dato/instrucción.
... Implementación
• El problema de dos accesos se puede resolver usando un hardware especial llamado memoria (caché) asociativa o translation look-aside buffers (TLBs).
• Algunos TLB almacenan identificadores en cada una de sus entradas llamados address-space identifiers (ASIDs) que identifican unívocamente a cada proceso proporcionando protección de su espacio de direcciones.
Memoria Asociativa
• Permite búsquedas paralelas.
• Convertir (p,d):
• Si p está en un registro asociativo, se obtiene el número de frame.
• En caso contrario se obtiene de la Tabla de Página que está en memoria
Page number Frame number
HW de Paginación usando TLB
Tiempo de acceso efectivo
• Búsqueda asociativa: ε unidades de tiempo
• Ciclo de memoria: 1 μseg
• Razón de éxito: Porcentaje de veces que la página está en los registros asociativos. Esta razón está relacionada con el número de registros asociativos. Razón de éxito= α
• Tiempo de Acceso Efectivo (TAE)TAE = (1 + �)α+ (2 + �)(1− α)
= 2 + �− α
Protección de Memoria
• Es posible proteger la memoria implementando un bit de protección a cada frame.
• Adicionalmente en cada entrada de la Tabla se incorpora un bit Valido-Inválido:
• Válido: indica que la página asociada está en el espacio lógico del proceso y por lo tanto es legal.
• Inválido: la página no está en el espacio lógico del proceso
Bit Válido (v) e Inválido (i) en la Tabla de Página
Páginas compartidas
• Código compartido
• Una copia de código (read-only) (reentrante) compartido entre los procesos.
• El código compartido debe aparecer en alguna localización del espacio lógico de todos los procesos
• Código y datos privados
• Cada proceso mantiene una copia separada de código y datos
• Las paginas de código y datos privados pueden aparecer en cualquier lugar del espacio lógico
Ejemplo de Páginas compartidas
5 Estructura de la Tabla de Página
• La mayoría de los sistemas computacionales actuales soportan un gran espacio lógico de direcciones (de 232B a 264B).
• La consecuencia es una Tabla de Página muy grande. No se podría asignar la Tabla de Página en direcciones contiguas de memoria.
• Las técnicas para soportar grandes T. de P.:
• Paginación Jerárquica• Utilización de Hash
• Tablas de Página Invertidas
Tablas de Páginas jerárquicas
• El espacio lógico se descompone en múltiples tablas de páginas.
• Un esquema simple considera sólo dos niveles.
Esquema con dos niveles
Ejemplo con dos niveles
• El espacio lógico de una máquina de 32b con páginas de 1KB se divide en:
• Un número de página de 20b
• Un offset de 12b
• Como la T. de P. está paginada, el número de página es nuevamente dividido en:
• Un número de página de 10b
• Un offset de 10b
... Ejemplo
• Entonces, la dirección lógica tiene la siguiente estructura:
• Donde p1 es un índice a la página externa, y p2 es el desplazamiento dentro de la página de la tabla externa.
page number page offset
pi p2 d
10 10 12
Esquema de conversión
Esquema de paginación de dos y tres niveles
Dos niveles
Tres niveles
Hash en Tablas de Página
• Para sistemas computacionales con espacios de direcciones de 64b, la paginación con dos niveles, no resulta apropiado.
• Tamaño de página= 4kB (212), ¡T. de P. con 252 entradas!
• ¡Muchos accesos a memoria!
... Hash• Es un método común cuando el espacio de
direcciones es mayor a 32b
• Se aplica una función de hash al número de la página virtual. El resultado del hash indexa una tabla que contiene una lista enlazada de elementos.
• Se busca un calce entre el número de página con entradas de la lista enlazada. Si hay calce, el frame físico se extrae.
Esquema de T. de P. con Hash
Tabla de Página Invertida
• Una entrada para cada página real de memoria.
• Cada entrada consiste en: la dirección virtual de la página junto con la información del proceso (pid) al cual pertenece la página.
• Se disminuye el espacio para almacenar cada T. de P., pero aumenta el tiempo de búsqueda en la tabla.
• Para disminuir este tiempo se utiliza hash.
Esquema de Tabla de Página Invertida
6 Segmentación
• La Segmentación soporta la visión de la memoria que tienen los procesos usuarios.
• La idea principal es que un programa es un conjunto de segmentos.
• Un segmento es una unidad lógica tal como:
main procedure function método objeto
variables locales y globales
bloques stacktabla de símbolos arreglos
Visión de usuarios
Visión lógica de la segmentación
1
3
2
4
1
4
2
3
user space physical memory space
Arquitectura de Segmentación
• La dirección lógica es una 2-tupla:
<Nº segmento, offset>
• Tabla de Segmentos: hace una correspondencia de la dirección física de dos dimensiones. Cada entrada tiene:
• base: dirección inicial del segmento en memoria.
• límite: largo del segmento
... Arquitectura
• Segment-table base register (STBR): apunta a la ubicación de la tabla de segmento en memoria.
• Segment-table length register (STLR): indica el número de segmentos usados por el programa.
• El segmento s es legal si s < STLR
... Arquitectura• Mecanismo de protección: cada entrada de la T. de
S. tiene asociado:
• bit válido: 0 si el segmento es ilegal
• previlegios read, write execute
• Los bits de protección están asociados al segmento. También compartir código ocurre a nivel de segmento.
• Ya que los segmentos son de tamaño variable, la asignación de memoria es un problema de asignación dinámica.
HW de Segmentación
Ejemplo de segmentación
7 Ejemplo: Pentuim Intel
• Soporta segmentación y segmentación con paginación.
• La CPU genera la dirección lógica. Esta dirección se transforma en direcciones lineales en la MMU.
• Las direcciones lineales alimentan la unidad de paginación que a su vez genera direcciones físicas de memoria principal.
Conversión de direcciones lógicas a físicas
• Segmentación
‣ Los segmentos pueden llegar hasta 4GB
‣ El número máximo de segmentos es de 16K
‣ El espacio lógico se divide en dos partes:
- 8K segmentos: privados al proceso (LDT: Local Description Table)
- 8K segmentos: compartidos entre todos los procesos GTD: Global Description Tabla)
MMU
... Conversión The logical address is a pair <selector, offset>
g ps offsetselector
- s: número de segmento- g: indica si el segmento es GTD o LTD- p: protección
Segmentación en Pentium
Paginación en Pentium Los tamaños de página sólo pueden ser de 4KB o 4MB. Para páginas de 4KB el Pentium paginación en dos
niveles dividiendo el espacio lógico de 32b en:
p2 dp1
page number page offset
10 10 12
Arquitectura de Paginación
Linear address
Una entrada en el directorio de páginas indica que el tamaño de la página es de 4KB o 4MB
Sistemas Operativos8 Memoria Principal
Prof. Javier Cañas R.