• No se han encontrado resultados

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
76
0
0

Texto completo

(1)

Sistemas Operativos

8 Memoria Principal

(2)

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.

(3)

Temario

1. Antecedentes 2. Swapping 3. Asignación contigua 4. Paginación 5. La Tabla de Página

(4)

... Temario

6. Segmentación

(5)

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

(6)

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

(7)

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

(8)

Registros Base y Límite

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

(9)

Hadware de protección

CPU ≥ < si no base base+limit si no addressing error

(10)

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.

(11)

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

(12)

Procesamiento multietapa

de un programa usuario

(13)

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.

(14)

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

(15)

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.

(16)

HW para relocalización

Dinámica

(17)

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

(18)

... Carga Dinámica

No se necesita soporte del SO. Se

(19)

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)

(20)

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

(21)

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

(22)

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

(23)

Visión esquemática de

Swapping

(24)

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

(25)

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

(26)
(27)

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)

(28)

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 9 process 10

(29)

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.

(30)

Discusión

First-fit y Best-fit tienen un mejor

comportamiento que worst-fit en términod de velocidad y utilización de memoria.

(31)

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.

(32)

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.

(33)

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.

(34)

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

(35)

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.

(36)

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

(37)

Hardware de

Paginación

(38)

Modelos de memoria

física y lógica

(39)

Ejemplo de Paginación

(40)

Frames libres

(41)

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.

(42)

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

(43)

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

(44)

HW de Paginación

usando TLB

(45)

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)

T AE = (1 + �)α + (2 + �)(1 − α) = 2 + � − α

(46)

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

(47)

Bit Válido (v) e Inválido (i)

en la Tabla de Página

(48)

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

(49)

Ejemplo de Páginas

compartidas

(50)

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

(51)

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

(52)

Esquema con dos

niveles

(53)

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

(54)

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

(55)
(56)

Esquema de paginación

de dos y tres niveles

Dos niveles

(57)

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!

(58)

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

(59)

Esquema de T. de P. con

Hash

(60)

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.

(61)

Esquema de Tabla de

Página Invertida

(62)

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

(63)
(64)

Visión lógica de la

segmentación

1 3 2 4 1 4 2 3

(65)

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.

(66)

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

(67)

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

(68)
(69)

Ejemplo de

segmentación

(70)

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

(71)

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)

(72)

... Conversión

 The logical address is a pair <selector, offset>

g p s offset selector - s: número de segmento - g: indica si el segmento es GTD o LTD - p: protección

(73)

Segmentación en

Pentium

(74)

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 d

p1

page number page offset

(75)

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

(76)

Sistemas Operativos

8 Memoria Principal

Referencias

Documento similar