8 memoria principal · paginación • es necesario llevar un registro de todos los frames libres....

76
Sistemas Operativos 8 Memoria Principal Prof. Javier Cañas R.

Upload: others

Post on 24-Feb-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 8 Memoria Principal · 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

Sistemas Operativos8 Memoria Principal

Prof. Javier Cañas R.

Page 2: 8 Memoria Principal · 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

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.

Page 3: 8 Memoria Principal · 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

Temario

1. Antecedentes

2. Swapping

3. Asignación contigua

4. Paginación

5. La Tabla de Página

Page 4: 8 Memoria Principal · 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

... Temario

6. Segmentación

7. Ejemplo: Intel Pentium

Page 5: 8 Memoria Principal · 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

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.

Page 6: 8 Memoria Principal · 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

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).

Page 7: 8 Memoria Principal · 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

... 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.

Page 8: 8 Memoria Principal · 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

Registros Base y Límite

• El espacio lógico direccionable por un proceso está definido por el par de registros base y límite.

Page 9: 8 Memoria Principal · 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

Hadware de protección

CPU ≥ <si

no

base base+limit

si

no

addressing error

Page 10: 8 Memoria Principal · 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

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.

Page 11: 8 Memoria Principal · 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

...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)

Page 12: 8 Memoria Principal · 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

Procesamiento multietapa de un programa usuario

Page 13: 8 Memoria Principal · 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

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.

Page 14: 8 Memoria Principal · 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

... 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

Page 15: 8 Memoria Principal · 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

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.

Page 16: 8 Memoria Principal · 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

HW para relocalización Dinámica

Page 17: 8 Memoria Principal · 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

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

Page 18: 8 Memoria Principal · 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

... Carga Dinámica

• No se necesita soporte del SO. Se implementa en el diseño del programa.

Page 19: 8 Memoria Principal · 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

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)

Page 20: 8 Memoria Principal · 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

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.

Page 21: 8 Memoria Principal · 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

.. 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.

Page 22: 8 Memoria Principal · 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

... 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

Page 23: 8 Memoria Principal · 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

Visión esquemática de Swapping

Page 24: 8 Memoria Principal · 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

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

Page 25: 8 Memoria Principal · 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

... 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.

Page 26: 8 Memoria Principal · 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

Soporte de Hardware

Page 27: 8 Memoria Principal · 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

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)

Page 28: 8 Memoria Principal · 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

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

Page 29: 8 Memoria Principal · 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

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.

Page 30: 8 Memoria Principal · 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

Discusión

• First-fit y Best-fit tienen un mejor comportamiento que worst-fit en términod de velocidad y utilización de memoria.

Page 31: 8 Memoria Principal · 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

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.

Page 32: 8 Memoria Principal · 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

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.

Page 33: 8 Memoria Principal · 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

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.

Page 34: 8 Memoria Principal · 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

... 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.

Page 35: 8 Memoria Principal · 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

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.

Page 36: 8 Memoria Principal · 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

... 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

Page 37: 8 Memoria Principal · 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

Hardware de Paginación

Page 38: 8 Memoria Principal · 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

Modelos de memoria física y lógica

Page 39: 8 Memoria Principal · 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

Ejemplo de Paginación

Memoria de 32-B y Páginas de 4-B

Page 40: 8 Memoria Principal · 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

Frames libres

Antes de asignar Después de asignar

Page 41: 8 Memoria Principal · 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

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.

Page 42: 8 Memoria Principal · 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

... 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.

Page 43: 8 Memoria Principal · 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

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

Page 44: 8 Memoria Principal · 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

HW de Paginación usando TLB

Page 45: 8 Memoria Principal · 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

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 + �− α

Page 46: 8 Memoria Principal · 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

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

Page 47: 8 Memoria Principal · 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

Bit Válido (v) e Inválido (i) en la Tabla de Página

Page 48: 8 Memoria Principal · 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

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

Page 49: 8 Memoria Principal · 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

Ejemplo de Páginas compartidas

Page 50: 8 Memoria Principal · 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

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

Page 51: 8 Memoria Principal · 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

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.

Page 52: 8 Memoria Principal · 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

Esquema con dos niveles

Page 53: 8 Memoria Principal · 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

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

Page 54: 8 Memoria Principal · 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

... 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

Page 55: 8 Memoria Principal · 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

Esquema de conversión

Page 56: 8 Memoria Principal · 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

Esquema de paginación de dos y tres niveles

Dos niveles

Tres niveles

Page 57: 8 Memoria Principal · 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

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!

Page 58: 8 Memoria Principal · 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

... 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.

Page 59: 8 Memoria Principal · 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

Esquema de T. de P. con Hash

Page 60: 8 Memoria Principal · 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

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.

Page 61: 8 Memoria Principal · 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

Esquema de Tabla de Página Invertida

Page 62: 8 Memoria Principal · 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

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

Page 63: 8 Memoria Principal · 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

Visión de usuarios

Page 64: 8 Memoria Principal · 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

Visión lógica de la segmentación

1

3

2

4

1

4

2

3

user space physical memory space

Page 65: 8 Memoria Principal · 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

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

Page 66: 8 Memoria Principal · 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

... 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

Page 67: 8 Memoria Principal · 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

... 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.

Page 68: 8 Memoria Principal · 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

HW de Segmentación

Page 69: 8 Memoria Principal · 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

Ejemplo de segmentación

Page 70: 8 Memoria Principal · 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

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.

Page 71: 8 Memoria Principal · 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

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

Page 72: 8 Memoria Principal · 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

... 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

Page 73: 8 Memoria Principal · 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

Segmentación en Pentium

Page 74: 8 Memoria Principal · 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

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

Page 75: 8 Memoria Principal · 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

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

Page 76: 8 Memoria Principal · 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

Sistemas Operativos8 Memoria Principal

Prof. Javier Cañas R.