Embed
Email

memoria

Document Sample
memoria
Shared by: HC120115143239
Categories
Tags
Stats
views:
1
posted:
1/15/2012
language:
pages:
102
Gestión de memoria









Recinto Universitario Augusto C. Sandino 0

Sistemas Operativos

Índice





1. Objetivos del sistema de gestión de memoria

2. Modelo de memoria de un proceso

3. Esquemas de memoria basados en asignación

contigua

4. Memoria virtual

5. Archivos proyectados en memoria

6. Servicios de gestión de memoria









Recinto Universitario Augusto C. Sandino 1

Sistemas Operativos

1. Objetivos del sistema de

gestión de memoria









Recinto Universitario Augusto C. Sandino 2

Sistemas Operativos

1. Objetivos del sistema de gestión de memoria



• En sistemas con multiproceso, el S.O. debe ―repartir‖ los

recursos entre los procesos existentes:

– Reparto de procesador: Gestión de procesos

– Reparto de memoria: Gestión de memoria



• Objetivos del Gestor de Memoria

A. Espacios lógicos independientes

B. Protección entre procesos

C. Compartición de Memoria (procesos ligeros)

D.Soporte a las regiones del proceso

E. Maximizar el grado de multiprogramación

F. Mapas de memoria de un tamaño adecuado

(normalmente grandes)







Recinto Universitario Augusto C. Sandino 3

Sistemas Operativos

1. Objetivos del sistema de gestión de memoria



A. Espacios lógicos independientes

• A priori no se conoce la posición de memoria que ocupará un

programa cuando vaya a ejecutarse (estado de ocupación de la

memoria)

• Código en ejecutable genera referencias entre 0 y N

• Ejemplo: Programa que copia un vector



Fichero Ejecutable –Vector destino a partir de

0

4

dirección 2000

.... Cabecera

96 –Tamaño del vector en dirección

100

104

LOAD R1, #1000

LOAD R2, #2000

1500

108 LOAD R3, /1500

112 LOAD R4, [R1] –Vector origen a partir de dirección

1000

116 STORE R4, [R2]

120 INC R1

124 INC R2

128 DEC R3

132 JNZ /12

136 .................









Recinto Universitario Augusto C. Sandino 4

Sistemas Operativos

1. Objetivos del sistema de gestión de memoria



Se supone que el código del SO reside en

las posiciones más altas.

El programa se carga en la posición 0 y para

que se ejecute ha de pasársele el control Memoria



(es decir, que el contador del programa 0

4

LOAD R1, #1000

LOAD R2, #2000

apunte a esta posición). 8 LOAD R3, /1500

12 LOAD R4, [R1]

• Problema:Como se ve, no coinciden las 16 STORE R4, [R2]

direcciones usadas en el programa con la 20

24

INC R1

INC R2

posición a partir de la cual se carga el 28 DEC R3

32 JNZ /12

programa. Suponer por ejemplo, que el 36 .................

programa se cargara a partir de la ....



posición 10000....

• Solución: Reubicación de direcciones Sistema Operativo

lógicas a físicas









Recinto Universitario Augusto C. Sandino 5

Sistemas Operativos

1. Objetivos del sistema de gestión de memoria

• Reubicación: Traducir direcciones lógicas a direcciones físicas

dependientes del hardware mediante una función de traducción. La

reubicación permite crear un espacio lógico independiente para cada

proceso y el S.O. debe poder acceder a los espacios lógicos para realizar

la traducción.

– Direcciones lógicas: direcciones de memoria generadas por el

programa

– Direcciones físicas: direcciones de memoria principal asignadas

• Función de traducción:

Traducción(IdProc, dir_lógica)  dir_física

– Ejemplo:

El programa tiene asignada memoria a partir de la dirección 10000

Reubicación: sumar 10000 a direcciones lógicas

– Implementación:

o Hardware

o Software



Recinto Universitario Augusto C. Sandino 6

Sistemas Operativos

1. Objetivos del sistema de gestión de memoria



• Reubicación Hardware: la MMU (memory management unit) se

encarga de la traducción

• Proceso:

– Programa se carga en memoria sin modificar

– El S.O. almacena por cada proceso su función de traducción

– El S.O. especifica a la MMU qué función aplicar para cada proceso

Memoria







Procesador 10000 LOAD R1, #1000

10004 LOAD R2, #2000

HW traducción 10008 LOAD R3, /1500

PC 10012 LOAD R4, [R1]

8 10000 10016 STORE R4, [R2]

11500

R. Instrucción 1500 10020 INC R1

+ 10024 INC R2

LOAD R3, /1500

10028 DEC R3

10032 JNZ /12

10036 .................

..........









Recinto Universitario Augusto C. Sandino 7

Sistemas Operativos

1. Objetivos del sistema de gestión de memoria



• Reubicación software: traducción de

direcciones durante carga del programa.

Esta solución se usa en sistemas sin el

hardware específico de traducción Memoria

(MMU).

• Proceso:

– El programa se carga con las 10000 LOAD R1, #11000

direcciones ya traducidas 10004 LOAD R2, #12000

10008 LOAD R3, /11500

– Se genera un código diferente del 10012 LOAD R4, [R1]

programa ejecutable 10016 STORE R4, [R2]

10020 INC R1

• Desventajas: 10024 INC R2

– No asegura protección (no se 10028 DEC R3

verifica cada dirección a usar, sino 10032

10036

JNZ /10012

.................

que se usan las direcciones ..........

generadas tras el proceso de carga)

– No permite mover programa en

tiempo de ejecución (suponer que

es necesaria la reubicación del

espacio asignado al proceso, por

necesitar más espacio.....)





Recinto Universitario Augusto C. Sandino 8

Sistemas Operativos

1. Objetivos del sistema de gestión de memoria



B. Protección entre procesos

La protección es diferente según sea un sistema Mono o Multi programado:

Sistema MonoProgramado: La intrusión se dará solamente entre el

programa y el S.O.

Sistema MultiProgramado: La intrusión puede venir tanto de otros

procesos como de otros usuarios además del riesgo del sistema

Monoprogramado.

• Acciones

– La traducción de direcciones debe crear espacios disjuntos

– Es necesario validar todas las direcciones que genera el programa

• La detección de alguna intrusión debe realizarla el hardware del

procesador (MMU), ya que hay que realizarla en tiempo de

ejecución

• El tratamiento de alguna intrusión lo hace el SO

– En sistemas con mapa de E/S y memoria común:

– Traducción permite impedir que los procesos accedan directamente

a dispositivos de E/S







Recinto Universitario Augusto C. Sandino 9

Sistemas Operativos

1. Objetivos del sistema de gestión de memoria



C. Compartición de Memoria (procesos ligeros)

La compartición de memoria entre procesos da soporte a la creación de

procesos ligeros y está controlado por el S.O.

• Acciones:

– Las direcciones lógicas de 2 o más procesos se corresponderán con

una misma dirección física.

– La memoria asignada a cada proceso no puede ser ya contigua.

– La función de traducción en estos casos se va haciendo más

compleja. Mapa proceso 1

Memoria

• Ventajas: zona privada 1



– Procesos ejecutando mismo zona compartida zona priv. 1 (P1)

programa comparten su zona priv. 1 (P2)

código

zona privada 2





– Mecanismo de comunicación

zona compartida

Mapa proceso 2

entre procesos muy rápido zona privada 1

zona priv. 2 (P2)



zona priv. 2 (P1)

zona compartida





zona privada 2





Recinto Universitario Augusto C. Sandino 10

Sistemas Operativos

1. Objetivos del sistema de gestión de memoria



• Problemas:

– Requiere asignación no

contigua Mapa proceso 1

Memoria

– Si la posición de zona

compartida contiene 2000

referencia a otra posición de zona compartida

la zona compartida, no se

puede saber a qué dirección zona compartida

10000 ¿1100 ó 2100?

se refiere puesto que cada 10100

proceso ligero verá esa Mapa proceso 2

dirección de forma diferente

Ejemplo: Si el código, que es común, 1000

contiene una bifurcación, no se zona compartida

podrá determinar a qué dirección

se debe saltar, dependiendo del

proceso que esté ejecutando el

código

lógico físico



Recinto Universitario Augusto C. Sandino 11

Sistemas Operativos

1. Objetivos del sistema de gestión de memoria



D. Soporte de las regiones del proceso

El mapa de memoria de un proceso no es homogéneo, ya que las regiones

contienen diferentes tipos de información (código, datos y pila

normalmente) y poseen diferentes características

• Acciones:

– Hacer mapa de memoria dinámico:

• Regiones cambian de tamaño (p.ej. pila)

• Se crean y destruyen regiones (el sistema de memoria debe

controlar qué regiones están presentes, así como su tamaño)

• Existen zonas sin asignar (huecos, con carácter dinámico)

– Detectar accesos no permitidos a una región ( de sólo lectura por

ej)

– Detectar accesos a huecos

– Evitar reservar espacio para huecos

– Guardar y gestionar una tabla de regiones para cada proceso









Recinto Universitario Augusto C. Sandino 12

Sistemas Operativos

1. Objetivos del sistema de gestión de memoria

E. Maximizar el grado de multiprogramación

El reparto de memoria debe ser tal que Aprovechamiento de memoria

maximize el grado de multiprogramación óptimo es irrealizable!!!!

para evitar el desperdicio de memoria Tablas de gestión demasiado

• Memoria desperdiciada grandes

– Restos (huecos) inutilizables

(fragmentación) Memoria

– Tablas requeridas por gestor de 0 Dirección 50 del proceso 4

memoria 1 Dirección 10 del proceso 6

• Acciones 2 Dirección 95 del proceso 7

– Crear bloques de asignación de 3 Dirección 56 del proceso 8

menor tamaño 4 Dirección 0 del proceso 12

– Gestionar las tablas de asignación Dirección 5 del proceso 20

5

más eficientemente

6 Dirección 0 del proceso 1

– Se opta por la paginación

– Uso de memoria virtual para .........................................

.........................................

aumentar grado de

multiprogramación N-1 Dirección 88 del proceso 9

N Dirección 51 del proceso 4



Recinto Universitario Augusto C. Sandino 13

Sistemas Operativos

1. Objetivos del sistema de gestión de memoria



F. Mapas de memoria de un tamaño adecuado

(normalmente grandes)

Los procesos necesitan cada vez mapas más grandes: aplicaciones más

novedosas, más recursos gráficos, más carga computacional....

• Acciones

– Utilizar Memoria Virtual

– Hacer que el usuario disponga virtualmente de una enorme cantidad

de memoria física

• Otras opciones (antigua)

– Overlays

• Programa dividido en fases que se ejecutan sucesivamente

• En cada momento sólo hay una fase residente en memoria

• Cada fase realiza su labor y carga la siguiente

• No es transparente: Toda la labor realizada por programador









Recinto Universitario Augusto C. Sandino 14

Sistemas Operativos

2. Modelo de memoria de un

proceso



2.1. Introducción

2.2. Fases en la generación de un ejecutable

2.3. Mapa de memoria de un proceso

2.4. Operaciones sobre regiones









Recinto Universitario Augusto C. Sandino 15

Sistemas Operativos

Modelo de memoria de un proceso



2.1. Introducción



– El S.O. es el responsable de la gestión de memoria de

cualquier proceso.

– El mapa inicial de memoria de un proceso está relacionado

con el archivo ejecutable que generará el proceso

– ¿Cómo generar el mapa de memoria inicial a partir del

ejecutable?

– ¿Cómo se organiza el mapa de memoria?

– ¿Cuáles son sus características básicas?

– ¿Qué operaciones se pueden realizar en el mapa de

memoria?



Recinto Universitario Augusto C. Sandino 16

Sistemas Operativos

Modelo de memoria de un proceso



2.2. Fases en la generación de un ejecutable

• Aplicación: conjunto de módulos en lenguaje de alto nivel

• Procesado en dos fases: Compilación y Montaje



• Compilación:

– Se asignan direcciones a los

Módulo Módulo

símbolos definidos

fuente A fuente B

– Resuelve referencias a los

símbolos de cada módulo

– Genera módulo objeto Compilador





• Montaje (o enlace): Módulo Módulo

Bibliotecas

objeto A objeto B

– Resuelve referencias entre

módulos objeto

– Resuelve referencias a símbolos Montador

de bibliotecas

Fichero

– Genera resultado (archivo

ejecutable

ejecutable), que incluye las

bibliotecas usadas





Recinto Universitario Augusto C. Sandino 17

Sistemas Operativos

Modelo de memoria de un proceso

Biblioteca: colección de módulos objeto relacionados. Algunas bibliotecas

son proporcionadas a los usuarios (bibliotecas) del sistema, mientras

que otras habrán sido creadas por los usuarios (propias) (por ejemplo,

bibliotecas de entrada salida, incluyendo las funciones como printf,

getchar, etc, o las llamadas al sistema de POSIX)

• Tipos:

Estáticas: el montaje enlaza los módulos

objeto del programa y de las bibliotecas,

dando como resultado un ejecutable

autocontenido. Main



• Desventajas: Función A

– Ejecutables grandes Función B

Código



– Código de función de biblioteca Función de biblioteca F1

repetido Función de biblioteca F2

– Múltiples copias en memoria del

código de función de biblioteca

– La actualización de biblioteca

implicaría volver a montar





Recinto Universitario Augusto C. Sandino 18

Sistemas Operativos

Modelo de memoria de un proceso



Dinámicas: la carga y montaje se hace en tiempo de ejecución. El

ejecutable contiene únicamente el nombre de la biblioteca y la

rutina de carga y montaje en tiempo de ejecución

• Proceso de carga:

– La rutina de carga y montaje incorpora la biblioteca

correspondiente.

– Se ajustan las instrucciones que realizan las referencias

a dicho símbolo, de forma que las próximas referencias

accedan al símbolo de biblioteca correspondiente, sin que

sea necesario activar de nuevo el proceso de montaje de la

biblioteca.

– Para evitar modificar el código del programa, en este

proceso, se suelen utilizar referencias indirectas

mediante una tabla que recoge todos los símbolos

correspondientes a bibliotecas dinámicas. Hay que tener en

cuenta que en algunos S.O. los segmentos de código

ejecutables no son modificables









Recinto Universitario Augusto C. Sandino 19

Sistemas Operativos

Modelo de memoria de un proceso



• Ventajas:



– Menor tamaño ejecutables

– Código de rutinas de biblioteca sólo en archivo de biblioteca

– Procesos pueden compartir código de biblioteca

– Actualización automática de bibliotecas: uso de versiones.

Suele haber en un sistemas varias versiones de la misma

biblioteca. Cuando un programa hace referencia a uno de

sus símbolos, se busca la versión adecuada



• Desventajas:



– Mayor tiempo de ejecución debido a carga y montaje. Se

trata de un retraso tolerable, ya que se compensan el resto

de las ventajas

– Ejecutable no autocontenido









Recinto Universitario Augusto C. Sandino 20

Sistemas Operativos

Modelo de memoria de un proceso



• Forma de uso :

1. Enlace dinámico implícito: Se especifica en tiempo de

montaje qué biblioteca usar, pero se pospone su carga y

montaje a tiempo de ejecución.

2. Uso explícito:

» Requerido por aplicaciones que determinan en tiempo

de ejecución qué bibliotecas deben usar

» No se especifica la biblioteca en mandato de montaje

» Es el programa quien solicita la carga de bibliotecas

mediante servicio del sistema (dlopen en UNIX y

LoadLibrary en Win32)

» El acceso a los símbolos de la biblioteca ya no es

transparente, sino que se ha de hacer desde el propio

programa, mediante los servicios apropiados del

sistema (dlsym en UNIX y GetProcAddress en Win32)









Recinto Universitario Augusto C. Sandino 21

Sistemas Operativos

Modelo de memoria de un proceso



• El uso de bibliotecas dinámicas es transparente. Es decir, los

mandatos de compilación y montaje son idénticos que en el caso de las

estáticas

• Si la biblioteca dinámica contiene referencias internas (a símbolos

definidos en la misma) existe el problema, ya comentado, de la zona

compartida con autoreferencias

• Tres posibles soluciones:

1. A cada biblioteca dinámica se le asigna un rango de direcciones

fijo

• Inconveniente: Poco flexible

2. En montaje en tiempo de ejecución se reajustan

autoreferencias

• Inconveniente: Impide compartir código de biblioteca

3. Crear biblioteca con código independiente de posición (PIC)

• Se genera código con direccionamiento relativo a registro

• Inconveniente (tolerable): direccionamiento relativo menos

eficiente



Recinto Universitario Augusto C. Sandino 22

Sistemas Operativos

Modelo de memoria de un proceso



Ficheros ejecutables



• Distintos fabricantes usan diferentes formatos



– Ejemplo: En Linux Executable and Linkable Format (ELF)



• Estructura: Cabecera y conjunto de secciones



• Cabecera: información de control que permite interpretar el contenido

del ejecutable. Suele incluir la siguiente información:

– Número mágico que identifica a ejecutable. Por ejemplo, en

formato ELF el primer byte debe contener el valor hexadecimal 7f,

los tres siguientes los caracteres E, L y F

– Punto de entrada del programa: es decir, el valor que inicialmente

contendrá el contador del programa

– Tabla de secciones. Para cada una de ellas se especifica: tipo,

dirección de comienzo en el archivo y tamaño.

Ejemplo:

» Tabla de símbolos para depuración

» Lista de bibliotecas dinámicas usadas



Recinto Universitario Augusto C. Sandino 23

Sistemas Operativos

Modelo de memoria de un proceso







Fichero Ejecutable

0 Número mágico Despl. Tam.

Contador de programa inicial Código 1000 4000

Cabecera

.................... Datos con v.i. 5000 1000

Tabla de secciones Datos sin v.i. ------ 500

1000 ...................... ........ ........



Código T. Símbolos 8000 1000



5000

Secciones Datos con valor inicial





................



8000

Tabla de símbolos









Recinto Universitario Augusto C. Sandino 24

Sistemas Operativos

Modelo de memoria de un proceso

• Las secciones más relevantes se volcarán en el mapa de memoria del

proceso: código, datos con valor inicial y datos sin valor inicial



– Código (texto): contiene el código del programa



– Datos con valor inicial: variables globales inicializadas



– Datos sin valor inicial: variables globales no inicializadas: aunque

aparece en la tabla de secciones no se almacena en el ejecutable, ya

que su contenido no es relevante



• No hay sección vinculada a variables locales, ya que estas tienen

carácter dinámico (se crearán en la pila del proceso, cuando los

procedimientos en que aparecen sean invocados)









Recinto Universitario Augusto C. Sandino 25

Sistemas Operativos

Modelo de memoria de un proceso





• Variables globales

– Estáticas

– Se crean al iniciarse programa

– Existen durante toda la ejecución del proceso

– Dirección fija en memoria y en ejecutable



• Variables locales y parámetros

– Dinámicas

– Se crean al invocar la función

– Se destruyen al retornar

– La dirección se calcula en tiempo de ejecución

– Recursividad: varias instancias de una variable









Recinto Universitario Augusto C. Sandino 26

Sistemas Operativos

Modelo de memoria de un proceso



• Ejemplo:





int x=8; /* Variable global con valor inicial */

int y; /* Variable global sin valor inicial */



f(int t){ /* Parámetro */

int z; /* Variable local */

.......

}

main(){

.......

}









Recinto Universitario Augusto C. Sandino 27

Sistemas Operativos

Modelo de memoria de un proceso



2.3. Mapa de memoria de un proceso

• El mapa de memoria o imagen del proceso estará compuesto por un

conjunto de regiones o segmentos; cada una de ellas almacena

cierto tipo de información



• Cada región:



– Tiene asociada una información (un ―objeto de memoria‖)

– Consiste en una zona contigua tratada como unidad al proteger o

compartir

– Se caracteriza por:

• Dirección de comienzo y tamaño inicial

• Soporte: donde se almacena su contenido inicial (soporte en

archivo y sin soporte, es decir, objeto sin contenido inicial)

• Protección: RWX

• Uso compartido o privado

• Tamaño fijo o variable



Recinto Universitario Augusto C. Sandino 28

Sistemas Operativos

Modelo de memoria de un proceso



• La ejecución de un programa crea un mapa de memoria a partir

del archivo ejecutable. Cada sección del ejecutable da lugar a una

región del mapa inicial.



– Código (texto): compartida, lectura y ejecución, tamaño fijo,

soporte en archivo ejecutable



– Datos con valor inicial: privada, lectura y escritura, tamaño fijo,

soporte en archivo ejecutable



– Datos sin valor inicial: privada, lectura y escritura, tamaño fijo, sin

soporte (se rellena a ceros en algunos lenguajes)



– Pila: privada, lectura y escritura, tamaño variable, sin soporte. Crece

hacia direcciones más bajas. La pila inicial sólo contiene los

argumentos de llamada al programa









Recinto Universitario Augusto C. Sandino 29

Sistemas Operativos

Modelo de memoria de un proceso





Fichero ejecutable Mapa de memoria

0 0

Número mágico

Cabecera Código

Contador de programa

inicial

4000

Datos con valor

Tabla de secciones inicial

1000 5000

Datos sin valor

Secciones Código inicial

5500

5000

Datos con valor

inicial

8000







Tabla de símbolos Pila







Argumentos del programa





Recinto Universitario Augusto C. Sandino 30

Sistemas Operativos

Modelo de memoria de un proceso



• Durante ejecución de proceso se crean nuevas regiones. Es decir, el mapa

de memoria tiene un carácter dinámico. Las nuevas regiones creadas en tiempo

de ejecución pueden ser:

– Región de Heap

• Soporte de memoria dinámica (malloc en C)

• Privada, lectura y escritura, tamaño variable, sin soporte (inicializada a

cero)

• Crece hacia direcciones más altas

– Archivo proyectado

• Región asociada al archivo proyectado

• Tamaño variable, soporte en archivo

• Protección y carácter compartido o privado especificado en la proyección

– Memoria compartida

• Región asociada a la zona de memoria compartida

• Compartida, tamaño variable, sin soporte (inicializada a 0)

• Protección especificada en proyección

– Pilas de threads

• Cada pila de thread corresponde con una región.

• Estas regiones constan de las mismas características que las asociadas a

la pila del proceso





Recinto Universitario Augusto C. Sandino 31

Sistemas Operativos

Modelo de memoria de un proceso



Región Soporte Protección Comp/Priv Tamaño



Código Fichero RX Compartida Fijo



Dat. con v.i. Fichero RW Privada Fijo



Dat. sin v.i. Sin soporte RW Privada Fijo



Pilas Sin soporte RW Privada Variable



Heap Sin soporte RW Privada Variable



F. Proyect. Fichero por usuario Comp./Priv. Variable



M. Comp. Sin soporte por usuario Compartida Variable









Recinto Universitario Augusto C. Sandino 32

Sistemas Operativos

Modelo de memoria de un proceso









Recinto Universitario Augusto C. Sandino 33

Sistemas Operativos

Modelo de memoria de un proceso



2.4. Operaciones sobre regiones



Para estudiar la evolución del mapa de memoria a lo largo de la ejecución

de un proceso, se pueden distinguir las siguientes operaciones:



– Crear región: Implícitamente al crear mapa inicial (por parte del

SO) o por solicitud del programa en tiempo de ejecución de

ejecución (por ejemplo, al cargar una biblioteca dinámica)



– Eliminar región: Implícitamente al terminar el proceso o por

solicitud del programa en tiempo de ejecución (por ejemplo, al

desproyectar un archivo)



– Cambiar tamaño de la región: Implícitamente para la pila o por

solicitud del programa para el heap (cuando se hace malloc)



– Duplicar región: Operación requerida por el servicio fork de POSIX





Recinto Universitario Augusto C. Sandino 34

Sistemas Operativos

3. Esquemas de memoria basados

en asignación contigua



3.1. Esquema hardware

3.2. Gestión del SO

3.3. Política de asignación de espacio

3.4. Valoración del esquema contiguo









Recinto Universitario Augusto C. Sandino 35

Sistemas Operativos

Esq. de mem. basados en asignación contigua



3.1. Esquema Hardware

El mapa de proceso se ubica en una zona contigua de la memoria

principal.

Proceso:

– El S.O. busca un hueco en memoria de tamaño suficiente para

alojar su mapa de memoria del proceso que comienza.

– El S.O. reserva la parte del hueco necesaria y crea en ella el

mapa inicial del proceso

– Se establece la función de traducción, de forma que las

direcciones del programa se correspondan con las direcciones

existentes en el hueco asignado.



Hardware requerido:

– Registros valla (registro base y registro límite). Estos dos registros

sólo son accesibles en modo privilegiado.

– Los registros valla están desocupados cuando el S.O. toma el control

para acceder a todo el mapa de memoria.



Recinto Universitario Augusto C. Sandino 36

Sistemas Operativos

Esq. de mem. basados en asignación contigua



• Registro límite: Se comprobará que las direcciones usadas por el

proceso no excedan el valor almacenado en él.

• Registro base: Una vez realizada la comprobación anterior, se suma a

cada dirección el valor contenido en este registro, de forma que se

obtiene la dirección física pertinente.

Memoria

0



Proceso 4

Procesador 10000

PC Hard. traducción (MMU) 10200

Proceso 7

8 R. límite R. base

15036

4000 21000 Proceso 3

Registro instrucción

NO 20500

21000

LOAD R3, /1500 > +

Proceso 2

22500

SI

25000

Excepción

N



Recinto Universitario Augusto C. Sandino 37

Sistemas Operativos

Esq. de mem. basados en asignación contigua



3.2. Gestión del SO



El S.O. almacena en el BCP cuáles son los valores de los registros

valla.



Dedica una estructura para conocer en todo momento el estado de la

memoria, identificando qué huecos están libres. Normalmente se usa

una lista en la que se almacena la dirección inicial y el tamaño de cada

hueco.

La gestión de esta lista obliga a comprobar, al desocupar espacio, si el

nuevo espacio libre puede unirse a huecos vecinos.

Problema:Según se van ejecutando procesos van quedando fragmentos de

memoria libres, que debido a su tamaño no podrán ser usados en

asignaciones de espacio a memoria. Este problema se denomina

fragmentación externa y conlleva una mala gestión de memoria.

Solución tradicional: Compactar los huecos de forma que queden

contiguos. Para ello es necesario reajustar los registros valla de los

procesos. INEFICIENTE.

Recinto Universitario Augusto C. Sandino 38

Sistemas Operativos

Esq. de mem. basados en asignación contigua



3.3. Política de asignación de espacio

El S.O. debe considerar qué espacio, de los huecos libres, se usará

intentando encontrar un equilibrio entre buen aprovechamiento de

espacio y tiempo de respuesta corto, es decir, se aplica un algoritmo

de decisión que debe ser eficiente.

Este problema es un clásico: ¿Cómo asignar espacio para su

aprovechamiento óptimo?. Existen tres posibles enfoques:

a) Mejor ajuste (best-fit). Se elige la zona libre más pequeña donde

quepa el mapa del proceso.

• Problema: Conlleva crear nuevos huecos de tamaño pequeño.

Además, elegir el hueco más pequeño obliga a mantener

ordenados por tamaño los huecos disponibles. No es eficiente

b) Peor ajuste. Se busca el hueco más grande, intentando evitar la

generación de huecos pequeños. Sigue precisando mantener el

control de los tamaños

c) El primero que ajuste (first-fit). Suele ser la mejor política. Muy

eficiente, ya que basta con encontrar una zona libre de tamaño

suficiente, y ofrece un aprovechamiento aceptable

Recinto Universitario Augusto C. Sandino 39

Sistemas Operativos

Esq. de mem. basados en asignación contigua



3.4. Valoración del esquema contiguo

• Valoracion:

– Espacios independientes para procesos: mediante registros valla

– Protección: mediante registros valla

– Compartir memoria: no es posible

– Soporte de regiones:

• No existe (no hay mecanismo de permisos sobre el espacio

asignado a cada proceso)

• Se reserva espacio para huecos, ya que el espacio asignado al

proceso en primera instancia debe servir para todo su tiempo de

vida

– Maximizar rendimiento:

• Mal aprovechamiento de memoria por fragmentación externa

– Mapas de MV de tamaño adecuado:

• No permite memoria virtual









Recinto Universitario Augusto C. Sandino 40

Sistemas Operativos

4. Intercambio









Recinto Universitario Augusto C. Sandino 41

Sistemas Operativos

Intercambio



¿Qué hacer si no caben todos los programas en memoria principal?



Usar disco (dispositivo swap) como respaldo de la memoria principal. Si

no caben en memoria todos los procesos activos, se elige un proceso

residente y se copia en disco su imagen de memoria

Expulsar (swap-out) a los procesos bloqueados. El proceso de

expulsión no implica copiar toda la imagen del proceso (por ejemplo, no

es preciso ocupar los huecos ni el código, al poder recuperarse

fácilmente del ejecutable). Un proceso expulsado vuelve a cargarse

(swap-in) cuando esté listo para ejecutar y haya espacio en memoria.



Políticas de asignación de espacio en swap:

Preasignación: al crear el proceso se reserva espacio de swap.

NO Preasignación: sólo se reserva espacio de swap al expulsar.

(¿Semejanza con estado ―suspendido‖?)









Recinto Universitario Augusto C. Sandino 42

Sistemas Operativos

5. Memoria virtual

5.1. Introducción

5.2. Paginación

5.3. Segmentación

5.4. Segmentación paginada

5.5. Paginación por demanda

5.6. Políticas de reemplazo

5.7. Política de asignación de marcos de

página

5.8. Hiperpaginación

5.9. Gestión del espacio de swap

5.10. Operaciones sobre las regiones de un

proceso

Recinto Universitario Augusto C. Sandino 43

Sistemas Operativos

Memoria virtual



5.1. Introducción

La técnica de la MV se usa prácticamente en todos los SSOO modernos.

Esta técnica se basa en transferir información entre memoria

principal y memoria secundaria (por lo que involucra varios niveles

de la jerarquía de memoria)



Suele implementarse en un esquema de paginación (es decir, la unidad

de información intercambiada entre los diferentes niveles de la jerarquía

de memoria es la página)



Elemento Clave: Proximidad referencial habitual de los procesos. Esta

propiedad permite que un proceso puede funcionar disponiendo en

memoria de una parte de su imagen de memoria (conjunto residente).



Objetivo final: conseguir que la información necesaria para un proceso

(conjunto de trabajo) vaya ocupando la memoria principal según se va

necesitando (es decir, conjunto de trabajo === conjunto

residente)



Recinto Universitario Augusto C. Sandino 44

Sistemas Operativos

Memoria virtual



Ventajas:



a) Aumento del grado de multiprogramación. Por tanto, aumento

en el rendimiento del sistema

b) Posibilidad de ejecutar programas más grandes que la MV

disponible



El uso de la MV no implica que se acelere la ejecución del programa

(más bien al contrario, debido a la sobrecarga asociada a los

movimientos de información entre niveles de la jerarquía). Este

mecanismo no es apropiado para sistemas de tiempo real.









Recinto Universitario Augusto C. Sandino 45

Sistemas Operativos

Memoria virtual



5.2. Paginación

• Página: Zona contigua de memoria de determinado tamaño. (Por

motivos de eficiencia se suele trabajar siempre con tamaños potencia

de 2. Ej:4 KB.)

• Organización:

— El mapa de memoria del proceso se considera dividido en páginas.

— La memoria principal se considera dividida en marcos de página

(tamaño de marco = tamaño de página).

— Los marcos contendrán páginas de los procesos en ejecución

— La tabla de páginas (TP) relaciona cada página con el marco que

la contiene. El hardware de traducción (MMU) usa la tabla de

páginas para traducir direcciones lógicas a físicas

— Típicamente la MMU usa dos tablas de páginas (TP):

a) TP del usuario: Por ejemplo, direcciones lógicas que empiezan

por 0

b) TP del sistema: Por ejemplo, direcciones lógicas que empiezan

por 1. Estas sólo se podrán usar en modo sistema



Recinto Universitario Augusto C. Sandino 46

Sistemas Operativos

Memoria virtual



– Cada entrada de la tabla de páginas contendrá, además del número

de marco asociado con la página:

a) Información de protección: tipo de acceso permitido RWX

b) Bit de página válida/inválida: para indicar si dicha entrada

contiene una traducción asociada, es decir, si se corresponde

realmente con un marco

c) Bit de página accedida (Ref): activado cuando se accede

d) Bit de página modificada (Mod): activado cuando se escribe

e) Bit de desactivación de caché: se usa cuando la entrada

corresponde con direcciones de E/S

• Tamaño de página: La elección de tamaño de página está

condicionada por diversos factores, entre los que hay que conseguir

equilibrio:

– Potencia de 2 y múltiplo del tamaño del bloque de disco

– mejor pequeño por:

• Menor fragmentación

• Se ajusta mejor al conjunto de trabajo

– mejor grande por:

• Tablas más pequeñas

• Mejor rendimiento de dispositivos de E/S

– Compromiso (entre 2K y 16K)



Recinto Universitario Augusto C. Sandino 47

Sistemas Operativos

Memoria virtual





• Dirección:Una dirección lógica se obtiene a partir de:

nº página + desplazamiento

• Problema:

– La paginación no ofrece una solución óptima. Lo ideal sería que

cada palabra del mapa de memoria de un proceso pudiera ubicarse

en cualquier dirección. Esta solución es inviable debido al coste de

traducción

– Al no ser así, con la paginación se asigna a cada proceso un

número entero de marcos de página, aunque el espacio de su

mapa de memoria no sea un múltiplo entero del tamaño de página.

Por tanto, se irán generando huecos (memoria no aprovechada, en

la última de las páginas que no se llena de forma completa). Este

proceso se denomina fragmentación interna (implica que, en

término medio, cada proceso desperdicia la mitad de una página)









Recinto Universitario Augusto C. Sandino 48

Sistemas Operativos

Memoria virtual

Dirección lógica

Página Byte







Marcos de página

0

1

2

3





Registro base de la TP

(RIED)









n









MP: direcciones físicas

Recinto Universitario Augusto C. Sandino 49

Sistemas Operativos

Memoria virtual





T. Páginas Proceso 1

Página 0 Marco 2

Memoria

Página 1 Marco N

Pág. 1 Pr. 2 Marco 0

..............

Pág. P Pr. 2 Marco 1

Página M Marco 3

Pág. 0 Pr. 1 Marco 2

Pág. M Pr. 1 Marco 3

T. Páginas Proceso 2

Pág. 0 Pr. 2 Marco 4

Página 0 Marco 4

............

Página 1 Marco 0

.............. Pág. 1 Pr. 1 Marco N



Página P Marco 1









• Problema: Fragmentación, la memoria asignada es mayor que la

memoria requerida y por lo tanto, se desperdicia cierta cantidad de

espacio





Recinto Universitario Augusto C. Sandino 50

Sistemas Operativos

Memoria virtual



• Otras cuestiones:

– En este esquema, el S.O. mantiene una tabla de páginas por cada

proceso. Cuando se produce un cambio de contexto se indica a la

MMU qué tabla de páginas usar

– El S.O. mantiene una única tabla de páginas para sí mismo. Así,

todos los procesos comparten el SO. Cuando un proceso se ejecuta

en modo sistema accede directamente a su mapa y al del SO

– S.O. mantiene tabla de marcos, como forma de mantener

información de estado de la memoria principal. De cada marco se

conoce su estado (libre, ocupado, etc)

– S.O. mantiene tabla de regiones por cada proceso, indicando las

características de cada región y qué rango de páginas pertenecen a

cada región

• Desperdicio de espacio: Mucho mayor gasto en tablas que con

asignación contigua: es el precio de mucha mayor funcionalidad









Recinto Universitario Augusto C. Sandino 51

Sistemas Operativos

Memoria virtual



• Implementación de la tabla de páginas:

– Las tablas de páginas se mantiene normalmente en memoria

principal. Problemas: eficiencia y gasto de almacenamiento

a) Eficiencia: cada acceso lógico requiere dos accesos a memoria

principal, a la tabla de páginas + al propio dato o instrucción.

Solución: caché de traducciones –› TLB

b)Gasto de almacenamiento: tablas muy grandes. Ejemplo:

páginas 4K, dir. lógica 32 bits y 4 bytes por entrada, la tabla de

páginas de cada proceso tendrá 4MB. Solución: tablas

multinivel y tablas invertidas

• Valoración :

– Espacios independientes para procesos: mediante tablas de páginas

– Protección: mediante tablas de páginas

– Compartir memoria: entradas corresponden con mismo marco (bajo

supervisión del SO dos procesos pueden compartir una página

asociada al mismo marco)

– Soporte de regiones: bits de protección, bit de validez: no se

reserva espacio para huecos

– Maximizar rendimiento: Si, al permitir esquemas de memoria más

flexibles

– Mapas de tamaño adecuado: sí, al permitir esquemas de memoria

virtual

Recinto Universitario Augusto C. Sandino 52

Sistemas Operativos

Memoria virtual

TLB (Translation Look-aside Buffer): Consta de una memoria asociativa con

información sobre últimas páginas accedidas.

• Para el multiproceso, existen varias posibilidades:

– La TLB no incluye información del proceso. En este caso, habrá que

invalidar la TLB en los cambios de contexto

– Entradas en TLB incluyen información sobre proceso: en este caso,

debe existir un registro de UCP para mantener la identificación del

proceso actual

• Implementación

– HW: La MMU consulta la TLB y si falla, se usa la TP en memoria.

• Ventajas: Es un proceso muy rápido

• Inconvenientes: Actualizar la TP en cambios de contexto y hay que

invalidar la TLB cuando se produce un cambio de contexto (si no tiene

información del PID)

– SW: La MMU no usa la TP, sino que sólo consulta TLB. En caso de fallo,

se activa el SO, que ha de buscar la entrada en la tabla de páginas

(mediante programa), e insertar en la TLB la traducción hecha, de forma

que se pueda reutilizar.

• Ventajas: flexibilidad, ya que la tabla de páginas puede ser definida a

conveniencia, sin restricciones impuestas por el hardware

• Inconvenientes: Es menos eficiente, ya que parte del proceso de

traducción se realiza mediante programa.



Recinto Universitario Augusto C. Sandino 53

Sistemas Operativos

Memoria virtual



Una de las opciones disponibles para disminuir el tamaño requerido por las

tablas de páginas es la tabla de páginas multinivel



• Organización:Se trata de una tabla de páginas organizadas en M

niveles:

– Entrada de TP de nivel K apunta a TP de nivel K+1

– Entrada de último nivel apunta a marco de página



• Dirección: La dirección lógica especifica la entrada a usar en cada nivel

• 1 campo por nivel + desplazamiento



• Accesos:Un acceso lógico supone M + 1 accesos a memoria. Solución:

uso de TLB



• Invaliadación:Si todas las entradas de una TP son inválidas, no se

almacena esa TP y se pone inválida la entrada correspondiente de la TP

superior



• Ahorro de espacio:Si el proceso usa una parte pequeña de su espacio

lógico, se consigue ahorro en espacio para almacenar TPs

Recinto Universitario Augusto C. Sandino 54

Sistemas Operativos

Memoria virtual

Página Dirección lógica



1er nivel 2º nivel Byte

0

1

2

3 Marcos de página

0

1

2

3







n



Registro base de la TP

(RIED) n

0

1

2

3









n MP: direcciones físicas



Recinto Universitario Augusto C. Sandino 55

Sistemas Operativos

Memoria virtual



• Ejemplo: Proceso que usa 12MB superiores y 4MB inferiores



– 2 niveles, páginas de 4K, dir. lógica 32 bits (10 bits por nivel) y 4

bytes por entrada

– Tamaño: 1 TP N1 + 4 TP N2= 5 * 4KB = 20KB (frente a 4MB)



• Ventajas adicionales: permite compartir TPs intermedias y sólo se

requiere que esté en memoria la TP de nivel superior. Las restantes

pueden estar en disco y traerse por demanda









Recinto Universitario Augusto C. Sandino 56

Sistemas Operativos

Memoria virtual

memoria

tablas de páginas

segundo nivel Página 2048







.

.

.

Página 1023









Tabla de páginas

primer nivel

Página 0

.

.

V .

V

Página 1024

V



I

Página 2047





I .

.

V .





Página 3071





.

. Página 1048575 (2^20-1)

.





Pág. 1047552 (2^20-1024)





Recinto Universitario Augusto C. Sandino 57

Sistemas Operativos

Memoria virtual



Otra alternativa para disminuir el espacio necesario por la tabla de páginas

es la tabla de páginas invertida

• Organización:

– La tabla contendrá tantas entradas como marcos de página haya.

– Cada entrada almacena la página cargada en dicho marco junto con

sus características:

• Número de página,

• Proceso dueño de la página

– El tamaño de la tabla de páginas es proporcional a la memoria

disponible.

• Accesos:La MMU usa una TLB convencional, pero si falla la traducción se

accede a la tabla de páginas invertida. Al estar la tabla organizada por

marcos no se puede hacer una búsqueda directa. Debería accederse a

todas las entradas en busca de la página correspondiente. Por esta

razón se suele organizar como una tabla hash

• Ahorro de espacio: Se reduce el espacio de almacenamiento necesario,

ya que sólo se guarda información sobre las páginas válidas







Recinto Universitario Augusto C. Sandino 58

Sistemas Operativos

Memoria virtual



Dirección lógica



pid Página Byte









i



pid página i Byte





Dirección física









Recinto Universitario Augusto C. Sandino 59

Sistemas Operativos

Memoria virtual



5.3. Segmentación

Con la paginación la MMU no dispone de información sobre las regiones

de los procesos y sólo entiende de páginas. Por esta razón, el SO debe

mantener una lista de las páginas que componen cada región, lo

que supone varias desventajas:

• Al crear una región hay que cuidar que todas las páginas

asociadas tengan la misma información de control

• Para poder compartir una región es preciso que las entradas de

varios procesos apunten a los mismos marcos

Segmentación: es un esquema HW que intenta dar soporte directo a las

regiones. En él se considera el mapa de memoria como compuesto por

varios segmentos.

Se puede considerar que consisten en una generalización de los

registros valla base y límite, pero usando un par de registros por

cada segmento



Recinto Universitario Augusto C. Sandino 60

Sistemas Operativos

Memoria virtual



• Dirección:Una dirección lógica estará compuesta por un número de

segmento y un desplazamiento en el mismo.

• Traducción: La forma de realizar la traducción puede apreciarse en la

imagen siguiente:



dirección lógica

s d

tabla de segmentos





límite base









NO memoria

> +

SI



Excepción









Recinto Universitario Augusto C. Sandino 61

Sistemas Operativos

Memoria virtual



• Tabla de segmentos:En este caso, la MMU usa una tabla de segmentos

(TS).

• Organización:

– El SO mantiene una TS por proceso, de forma que en cada cambio

de contexto se notifica a MMU cuál debe usar

– Cada entrada de TS contiene (entre otros):

• Registro base y límite del segmento

• protección: RWX



• Problema: Fragmentación Externa

– En este esquema se produce fragmentación externa, ya que el

almacenamiento de los segmentos se realiza de forma contigua.

– El SO debe mantener una lista que le permita conocer qué zonas de

memoria están libres y cuáles ocupadas: es decir, estructuras de

datos que identifiquen huecos y zonas asignadas









Recinto Universitario Augusto C. Sandino 62

Sistemas Operativos

Memoria virtual



• Valoración:



– Espacios independientes para procesos: mediante su propia TS, que

crea un espacio lógico independiente

– Protección: mediante TS, ofreciendo espacios disjuntos de memoria

– Compartir memoria: bajo control del SO es posible que dos o más

procesos tengan un segmento asociado a la misma zona de memoria

– Soporte de regiones: bits de protección

– Maximizar rendimiento : No lo maximiza, por la fragmentación

externa

– Mapas de tamaño adecuado: No cumple este objetivo porque no

permite implementar eficientemente un sistema de memoria virtual



Por tanto, tal y como se ha presentado se usa en muy pocos

SO reales









Recinto Universitario Augusto C. Sandino 63

Sistemas Operativos

Memoria virtual



5.4. Segmentación paginada

Se intenta aunar las ventajas de ambos esquemas: segmentación y

paginación:

– Segmentación: soporte para regiones.

– Paginación: mejor uso del espacio de memoria.



• Organización:

– Entrada en TS apunta a una TP para el segmento.

– El espacio del segmento está compuesto de varias páginas, de

forma que su espacio no tiene que ser contiguo.









Recinto Universitario Augusto C. Sandino 64

Sistemas Operativos

Memoria virtual



•Traducción:La traducción se lleva a cabo según se indica.





dirección lógica

s p d tabla de páginas

tabla de segmentos para segmento s







límite dir. T. Pág. p m









NO memoria

> m d

SI

dirección

Excepción física









Recinto Universitario Augusto C. Sandino 65

Sistemas Operativos

Memoria virtual



• Valoración:



– Espacios independientes para procesos: mediante TS

– Protección: mediante TS

– Compartir memoria: bajo control del SO, podemos hacer que una

misma entrada aparezca en diferentes TS (es decir, pueda ser usado

por varios procesos)

– Soporte de regiones: bits de protección

– Maximizar rendimiento: la paginación aprovecha eficientemente el

espacio de memoria.

– Mapas de tamaño adecuado: permite esquemas de memoria virtual



• Ventajas: Frente a paginación sin segmentos facilita al SO la gestión de

las regiones, pero requiere HW más complejo









Recinto Universitario Augusto C. Sandino 66

Sistemas Operativos

Memoria virtual



5.5. Paginación por demanda

Una vez analizados los diferentes esquemas hardware vamos a ver cómo

se articulan para construir un esquema de memoria virtual (estos

esquemas también pueden usarse sin memoria virtual, pero en la

actualidad su uso está siempre vinculado a la memoria virtual)



• Normalmente la memoria virtual se construye sobre esquemas de

paginación pura o segmentada. De esta forma, la unidad de información

intercambiada entre memoria principal y secundaria es la página.



• Normalmente la transferencia de información se lleva a cabo bajo

demanda (paginación por demanda). De esta forma, cuando un

proceso necesita acceder a una página que no está en memoria

principal, se genera un fallo de página y el SO se encarga de transferirla

desde la memoria secundaria. Si al traerla no hay espacio suficiente en

MP, será necesario desalojar alguna de las páginas actuales (ello se

hace mediante un algoritmo de reemplazo)



Recinto Universitario Augusto C. Sandino 67

Sistemas Operativos

Memoria virtual



• La construcción de un sistema de memoria virtual sobre un procesador

con paginación implica usar un bit de validez en las entradas de la

tabla de páginas, que indica si la página es válida. Estarán marcadas

como inválidas todas las páginas que no residen en MP, así como las

que constituyen huecos en el mapa de memoria.



• Para las entradas correspondientes a páginas no residentes en MP, la

entrada principal, en lugar de almacenar el marco donde reside

contendrá la dirección del dispositivo de memoria en que se

encuentra almacenada. De forma que cuando se produce un acceso a

una de estas páginas, se produce una excepción y se activa el SO,

responsable de hacer la transferencia desde memoria secundaria.



• Algunos sistemas también usan la técnica de prepaginación. Al ocurrir

un fallo de página no sólo traen la página en cuestión, sino también las

cercanas, al suponerse que se usarán en un corto plazo de tiempo. La

efectividad de esta técnica dependerá del acierto de la predicción.







Recinto Universitario Augusto C. Sandino 68

Sistemas Operativos

Memoria virtual



Veamos cómo se gestiona la ocurrencia de un fallo de página:

• La MMU genera una excepción. Normalmente deja en un registro

especial la dirección que causó el fallo

• Se activa el SO, que comprueba:

– Si la página es inválida, se aborta el proceso (solución normal,

aunque también podría bastar con el envío de una señal).

– Si la página es ausente se siguen los pasos siguientes:

a) Se consulta la tabla de marcos para ver si hay algún hueco

libre:

i. Si no hay ningún marco libre se aplica el algoritmo de

reemplazo, que decidirá el marco a desalojar. La página

almacenada hasta entonces se marca como inválida. Si ha

sido modificada, antes hay que salvar su contenido en

memoria secundaria

ii. Si hay marco libre: se inicia la lectura desde memoria

secundaria y se vuelca al marco, marcándose como válida

dicha entrada en la TP y apuntando el marco en que está

almacenada





Recinto Universitario Augusto C. Sandino 69

Sistemas Operativos

Memoria virtual



• En el peor de los casos un fallo de página puede suponer dos

operaciones de E/S:



a) Salvaguarda de la página expulsada

b) Lectura de la página nueva



Dos políticas definen el funcionamiento del sistema de memoria



• Política de reemplazos:

– Reemplazo local: Sólo puede usarse para reemplazo un marco

asignado al proceso que causa fallo

– Reemplazo global: Puede usarse para reemplazo cualquier marco



• Política de asignación de espacio a los procesos:

– Asignación fija: El número de marcos de página para cada proceso

es fijo.

– Asignación dinámica: El número de marcos de página para cada

proceso es dinámico



Recinto Universitario Augusto C. Sandino 70

Sistemas Operativos

Memoria virtual



5.6. Políticas de reemplazo



• Objetivo: Minimizar la tasa de fallos de página.



• Cada algoritmo descrito tiene versión local y global:

– Local: criterio se aplica a las páginas residentes del proceso

– Global: criterio se aplica a todas las páginas residentes



• Algoritmos a estudiar

A. Óptimo

B. FIFO

C. Reloj (o segunda oportunidad)

D. LRU

E. Buffering de páginas

F. Retención de páginas en memoria









Recinto Universitario Augusto C. Sandino 71

Sistemas Operativos

Memoria virtual



A) Algoritmo óptimo



• Criterio: Página residente que tardará más en accederse

• Implementación: Irrealizable, ya que supone disponer de una predicción

fiable del uso de las páginas en un futuro a medio plazo

• Versión local y global

• Interés para estudios analíticos comparativos









Recinto Universitario Augusto C. Sandino 72

Sistemas Operativos

Memoria virtual



B) Algoritmo FIFO



• Criterio: se elimina la página que lleva más tiempo residente



• Implementación: Fácil

– Páginas residentes en orden FIFO –› se expulsa la primera

– No requiere hardware especial

– En el caso de estrategia local se mantiene una lista de páginas por

cada proceso. En el caso global, basta con una única lista



• Problema:

– Una página que lleva mucho tiempo residente puede seguir

accediéndose frecuentemente.

– Su criterio no se basa en el uso de la página.

– Anomalía de Belady: Se pueden encontrar ejemplos en que al

aumentar el número de marcos aumenta el número de fallos de

página





Recinto Universitario Augusto C. Sandino 73

Sistemas Operativos

Memoria virtual



C) Algoritmo de segunda oportunidad o del reloj



Se trata de una modificación del algoritmo FIFO, para evitar que una

página residente desde hace tiempo sea desalojada pese a estar siendo

usada. Para ello se usa el bit de referencia Ref de las páginas, con lo

que se detecta su uso



• Criterio:

– Si la página elegida por FIFO no tiene activo el bit Ref, es la página

expulsada

– Si lo tiene activo se da 2ª oportunidad antes de expulsar: se

desactiva el bit Ref, se pone página al final de FIFO, se aplica

criterio a la siguiente página



• Implementación: Se puede implementar el orden FIFO mediante una

lista circular con una referencia a la primera página de la lista: se

visualiza como un reloj donde la referencia a la primera página es la

aguja del reloj



Recinto Universitario Augusto C. Sandino 74

Sistemas Operativos

Memoria virtual



D) Algoritmo LRU (last recently used)



• Criterio: Basado en proximidad temporal de referencias: página

residente menos recientemente usada como página a eliminar

• Implementación:Posible implementación con HW específico y un

contador de accesos a memoria:

– Cada entrada de la TP posee un contador

– Cada acceso a memoria la MMU copia el contador del sistema a

entrada referenciada

– Reemplazo: página con contador más bajo

– Difícil implementación estricta (hay aproximaciones): precisaría una

MMU específica, ya que habría que controlar los accesos realizados a

cada marco para actualizar los contadores de los accesos en la TP

• Nota: en su versión global, hay que considerar los contadores de las

páginas menos recientemente usadas teniendo en cuenta el tiempo

lógico de cada proceso







Recinto Universitario Augusto C. Sandino 75

Sistemas Operativos

Memoria virtual

E) Buffering de páginas



• Criterio:Esta técnica intenta evitar el problema con las páginas

modificadas que han de ser desalojadas. En este caso, el tratamiento

del fallo de página implica realizar dos accesos a disco, uno para

almacenar la página modificada y para traer la nueva



• Implementación:

– Mantiene una reserva de marcos libres. Cuando se produce un

fallo de página, siempre se usa un marco libre (es decir, en verdad

no hay reemplazo)

– Cuando el número de marcos libres queda por debajo de cierto

umbral se activa un ―demonio de paginación‖, que aplica

repetidamente el algoritmo de reemplazo:

• Páginas no modificadas pasan a lista de marcos libres

• Páginas modificadas pasan a lista de marcos modificados:

cuando se escriban a disco pasan a lista de libres; suelen

escribirse en tandas (lo que mejora el rendimiento)

– Si se referencia una página mientras está en estas listas: se

recupera directamente de la lista (no hay E/S), lo que puede

mejorar el comportamiento de algoritmos poco eficientes

Recinto Universitario Augusto C. Sandino 76

Sistemas Operativos

Memoria virtual

F) Retención de páginas en memoria





• Criterio:No todas las páginas son reemplazables



• Aplicación:

– Se aplica a páginas del propio S.O: si sus páginas están fijas en

memoria, su gestión es más sencilla

– También se aplica mientras se hace DMA sobre una página. La

página no será reemplazable hasta que finalice la operación sobre

ella



• Implementación: Algunos S.O. ofrecen a las aplicaciones un servicio

para fijar en memoria una o más páginas de su mapa: adecuado para

procesos de tiempo real, aunque puede afectar al rendimiento del

sistema. En POSIX se trata del servicio mlock









Recinto Universitario Augusto C. Sandino 77

Sistemas Operativos

Memoria virtual



5.7. Política de asignación de marcos de página

El SO deberá decidir cuántos marcos de página asigna a cada proceso:

a) Asignación Fija

b) Asignación Dinámica



A) Asignación fija



• Número constante de marcos asignados al proceso. Puede depender

de las características del proceso: tamaño, prioridad,...

• No se adapta a las distintas fases de ejecución. Como positivo, el

comportamiento del proceso es relativamente predecible

• Sólo tiene sentido usar estrategia de reemplazo local

• La arquitectura impone el Nº mínimo de marcos de página: mínimo

número de marcos a asignar igual al número de referencias que

aparezca en la instrucción que más fallos de página pueda generar





Recinto Universitario Augusto C. Sandino 78

Sistemas Operativos

Memoria virtual



B) Asignación dinámica



• El número de marcos asignados a un proceso es variable

dependiendo del comportamiento del proceso (y posiblemente de los

demás procesos).

• Se adapta a las diferentes fases por las que puede pasar un proceso

• Se pueden usar tanto estrategias de reemplazo global como local.



– Asignación dinámica + reemplazo local: el proceso va aumentando o

disminuyendo su conjunto residente dependiendo de su

comportamiento (comportamiento relativamente predecible)



– Asignación dinámica + reemplazo global: los procesos compiten por

el uso de las páginas entre ellos (comportamiento difícilmente

predecible)









Recinto Universitario Augusto C. Sandino 79

Sistemas Operativos

Memoria virtual



5.8. Hiperpaginación (thrashing)

• Definición:Tasa excesiva de fallos de página de un proceso o en el

sistema, debido a que el número de marcos de página asignados es

insuficiente para albergar el conjunto residente



– Con asignación fija. Hiperpaginación en el proceso Pi si

conjunto residente de Pi límite superior, se asignan nuevos marcos. Si no hay

marcos libres se suspende algún proceso

tasa de fallos de página









límite superior







límite inferior







número de marcos

Recinto Universitario Augusto C. Sandino 83

Sistemas Operativos

Memoria virtual



C) Estrategia de control de carga para algoritmos de

reemplazo globales



• Objetivo: Controlar la hiperpaginación utilizando un algoritmo de control

de carga. Se da en algoritmos de reemplazo global.



• Proceso: Ejemplo: UNIX 4.3 BSD

– Reemplazo global con algoritmo del reloj. Variante con dos

―manecillas‖: hay dos punteros en vez de uno

– Uso de buffering de páginas. Un demonio de paginación controla el

número de marcos libres

– Si el número de marcos libres < umbral, el demonio de paginación

aplica reemplazo

– Si se repite con frecuencia la falta de marcos libres: un proceso

―swapper‖ suspende procesos









Recinto Universitario Augusto C. Sandino 84

Sistemas Operativos

Memoria virtual



5.9. Gestión del espacio de swap

La asignación del espacio de swaping puede seguir dos técnicas:

a) Preasignación de swap:

Al crear la nueva región se reserva espacio de swap para ella. Al

expulsar una página, con esta estrategia, ya habrá espacio de

swap para almacenar su contenido

b) Sin preasignación de swap:

Al crear una región no se hace reserva de swap. Las páginas de la

región se irán trayendo a MP por demanda desde el soporte de

la región. Sólo se reserva espacio de swap para una página

cuando es expulsada por primera vez



Tendencia actual: Se suele utilizar más la estrategia sin preasignación,

puesto que la preasignación de swap conlleva un peor aprovechamiento

de memoria secundaria (toda página debe tener reservado espacio de

swap).







Recinto Universitario Augusto C. Sandino 85

Sistemas Operativos

Memoria virtual



5.10. Operaciones sobre regiones de un proceso

Se considerarán a continuación las siguientes operaciones sobre las

regiones de un proceso en un sistema con memoria virtual:

a) Creación de región:

Al crear el mapa inicial o por solicitud posterior

b) Liberación de región:

Al terminar el proceso o por solicitud posterior

c) Cambio de tamaño de región:

Aumento de tamaño: hay que comprobar que no se solape con

otra región y equiparar las nuevas páginas a las ya existentes

en la región.

El caso de expansión de la pila es algo más complejo.

Disminución de tamaño

d) Duplicado de región:

Operación requerida por el servicio fork de POSIX

Se duplica todo y se trata de una operación costosa







Recinto Universitario Augusto C. Sandino 86

Sistemas Operativos

Memoria virtual



a) Creación de nueva región

Acciones:

• Al crear una región no se asigna MP ( se hará por demanda).

• Se marcarán las páginas como no residentes y válidas (fallo de

página cuando se intenten acceder)

• El S.O. actualiza la tabla de regiones y guarda la información

correspondiente a las páginas de la región, rellenando las entradas de la

TP. Debe buscar un hueco en el mapa de memoria para asignar a nueva

región.

• Según el soporte:

– Soporte en archivo: Páginas marcadas como Cargar de archivo

(CA) y se almacena dirección del bloque del archivo correspondiente

– Sin soporte: Páginas marcadas como Rellenar con ceros (RC) y se

inicializa cuando hay un fallo de página.

• Si la región es privada con preasignación de swap, se reserva espacio

de swap

• Si la región es la pila:

– Se copian los argumentos iniciales del proceso en bloque(s) de swap







Recinto Universitario Augusto C. Sandino 87

Sistemas Operativos

Memoria virtual



• Algoritmo de expulsión:

– Si la región es privada se escribe página en swap. Si no hay

preasignación de espacio swap, en la primera expulsión se reserva

espacio. Posteriores fallos se sirven de ese bloque de swap

– Si la región es compartida se escribe página en soporte, para que

todos los procesos puedan ver las modificaciones. Todos los fallos se

sirven del soporte



• En la creación del mapa inicial (servicio exec en POSIX), se crean las

regiones según sus características

• Código: CA, Compartida, RX

• Datos v. inicial: CA, Privada, RW

• Datos sin v. inicial: RC, Privada, RW

• Pila inicial: contenido inicial en swap



Los huecos se marcan como páginas inválidas, tanto para el HW como

para el S.O.





Recinto Universitario Augusto C. Sandino 88

Sistemas Operativos

Memoria virtual







Swap

Tabla de páginas Archivo Ejecutable

1ªpág. Cabecera

Código RX A Bloque T (arch.) Bloque T

........................... Código

1ªpág.

Dat.v.i. RW A Bloque U (arch.)

Bloque U

Datos con valor inicial

...........................

1ªpág. ................

Dat.no.v.i.

RW A Rellenar con 0

...........................

1ªpág. Bloque S

Pila

RW A Bloque S (swap) Pila









Estado inicial de ejecución en un sistema sin preasignación de swap



Recinto Universitario Augusto C. Sandino 89

Sistemas Operativos

Memoria virtual





b) Liberación de región

• Acciones:

– Actualizar tabla de regiones para eliminar región

– Marcar como inválidas páginas asociadas

– Si la región es privada, se libera el espacio de swap asociado

• Cuando:

– Solicitud explícita (p.ej. desproyección de región).

– Finalización del proceso (exit en POSIX).

– El servicio exec de POSIX libera el mapa actual del proceso antes de

construir un nuevo mapa vinculado al ejecutable a ―usar‖









Recinto Universitario Augusto C. Sandino 90

Sistemas Operativos

Memoria virtual



c) Cambio de tamaño

• Acciones:

– Si disminuye:

• Se ajusta la tabla de regiones.

• Se marcan páginas como inválidas.

• Se libera espacio de swap

– Si aumenta:

• Se comprueba que no haya solapamiento.

• Se fijan nuevas páginas como no residentes y con las mismas

características que otras páginas de la región.

• Si hay preasignación se reserva espacio en swap para las nuevas

páginas.

• Casos especiales:

– Expansión del heap: Solicitada por programa mediante servicios

del S.O. Se marcan las páginas correspondientes como RC,

privadas, RW



– Expansión de pila no proviene de una solicitud del proceso, sino de

la propia evolución de la pila. Por esta razón esta operación es

automática



Recinto Universitario Augusto C. Sandino 91

Sistemas Operativos

Memoria virtual



d) Duplicado de una región

• Acciones:

– Se duplican las regiones privadas del padre y se comparten las no

privadas



• La copia de una región de un proceso en el mapa de memoria de otro

proceso es una operación costosa, ya que también se debe copiar el

contenido.



• Problema: La ejecución de fork sería muy ineficiente.

• Solución: copy-on-write (COW). Se comparte una página mientras no se

modifique. Si un proceso la modifica, se crea una copia para él. Esta

operación se denomina duplicado por demanda









Recinto Universitario Augusto C. Sandino 92

Sistemas Operativos

Memoria virtual



• Implementación de COW

– Se comparten las páginas de regiones duplicadas

– Se marcan de sólo lectura y con bit de COW.

– Al realizar la primera escritura se produce un fallo de proteccción y

se genera una copia privada para el proceso que escribe.

– Lo normal es que haya varios procesos con misma región duplicada,

por lo que existe un contador de uso por página.

– Cada vez que se crea copia privada se decrementa contador, ya que

hay un proceso menos trabajando sobre la copia compartida.

– Si llega a 1, se desactiva el bit COW, al no haber duplicados



• FORK con COW. Se comparten todas las regiones. Las regiones privadas

se marcan como COW en padre e hijo, el resultado de la optimización es

que en vez de duplicar todo el espacio de memoria sólo se duplica la TP.









Recinto Universitario Augusto C. Sandino 93

Sistemas Operativos

5. Archivos proyectados en

memoria









Recinto Universitario Augusto C. Sandino 94

Sistemas Operativos

Archivos proyectados en memoria



• ¿En qué consiste?

– Recordemos que en un sistema con MV se hacen corresponder las

entradas de la TP con bloques de un archivo ejecutable.

– La técnica de la proyección permite usar esta misma idea, pero con

cualquier archivo.

– El S.O. permite que un programa solicite la correspondencia de una

zona de su mapa de memoria con los bloques de un archivo

cualquiera (ya sea completo o en parte).

– En la solicitud el programa indicará el tipo de acceso que desea para

las páginas asociadas al archivo.

• Servicio:

– La generalización de la técnica de memoria virtual permite ofrecer a

los usuarios una forma alternativa de acceder a los archivos.









Recinto Universitario Augusto C. Sandino 95

Sistemas Operativos

Archivos proyectados en memoria



• Proceso: Se rellenan las entradas de la TP correspondientes con :

—Página no residente,

—CA (cargar de archivo),

—Privada/compartida y

—Protección (indicada en la llamada). Mapa de memoria



De esta forma, Código

cuando el

programa accede Tabla de páginas Datos con valor inicial

a una posición ........................... Archivo

de memoria 1ªpág.

Datos sin valor inicial

asociada al Archivo RW A Bloque 0 (arch.)

...........................

Bloque 0



archivo proyectado,Última pág. RW A Bloque N (arch.) 10240

Bloque 1

Archivo

está accediendo ........................... Bloque 2

realmente Archivo Proyectado



al archivo .............





Bloque N

Pila





Recinto Universitario Augusto C. Sandino 96

Sistemas Operativos

Archivos proyectados en memoria



• Ventajas: Se trata por tanto de una forma alternativa de acceso a

archivos, frente a las llamadas read/write. De esta forma se producen:

– Menos llamadas al sistema lo que se traduce en una notable

mejora de los tiempos de acceso.

– Se evitan copias intermedias de la información ya que el S.O.

transfiere directamente la información entre la región de memoria y

el archivo.

– Se facilita la programación, ya que una vez proyectado se accede

al archivo como si fuera una estructura de datos en memoria



• Ejemplo: Típicamente las bibliotecas dinámicas se cargan usando este

tipo de proyección: la zona de código se proyecta como compartida y la

zona de datos con valor inicial se proyecta como privada









Recinto Universitario Augusto C. Sandino 97

Sistemas Operativos

6. Servicios de gestión de

memoria









Recinto Universitario Augusto C. Sandino 98

Sistemas Operativos

Servicios de gestión de memoria



El gestor de memoria realiza funciones internas. Por eso, ofrece pocos

servicios directos para las aplicaciones. Básicamente están relacionados

con la proyección de archivos:



– POSIX

• Proyectar un archivo: mmap

• Desproyectar un archivo: munmap



– Win32

• Proyectar un archivo: 2 pasos:

– Crear proyección: CreateFileMapping

– Realizar proyección: MapViewOfFile

• Desproyectar un archivo: UnmapViewOfFile









Recinto Universitario Augusto C. Sandino 99

Sistemas Operativos

Servicios de gestión de memoria



void *mmap(void *direc, size_t lon, int prot, int indic, int desc, off_t desp);



Establece la proyección entre el espacio de direcciones de un proceso y un

archivo.



– Devuelve la dirección de memoria donde se ha proyectado el archivo

– direc: dirección donde proyectar. Generalmente se utiliza NULL,

con lo que el S.O. elige la dirección por su cuenta

– lon: especifica el número de bytes a proyectar

– prot: el tipo de acceso, lectura (PROT_READ), escritura

(PROT_WRITE) o ejecución (PROT_EXEC), o cualquier combinación

de ellas

– indic: propiedades sobre la región, compartida (MAP_SHARED, un

proceso hijo compartirá la región con el padre), privada

(MAP_PRIVATE, el hijo obtiene copia propia de la región), fija

(MAP_FIXED, el archivo ha de proyectarse en una direc´ción

específica)

– desc: representa el descriptor de archivo a proyectar.

– Desp: desplazamiento dentro del archivo a partir del cual se realiza

la proyección.



Recinto Universitario Augusto C. Sandino 100

Sistemas Operativos

Servicios de gestión de memoria



void munmap(void *direc, size_t lon);



Desproyecta parte del espacio de direcciones de un proceso desde la

dirección direc hasta direc+lon.









Recinto Universitario Augusto C. Sandino 101

Sistemas Operativos


Related docs
Other docs by HC120115143239
?? ??? 2505 2007
Views: 7  |  Downloads: 0
foodDM
Views: 0  |  Downloads: 0
07
Views: 2  |  Downloads: 0
016
Views: 0  |  Downloads: 0
strateg zakon
Views: 2  |  Downloads: 0
34
Views: 1  |  Downloads: 0
resolucao109 99
Views: 0  |  Downloads: 0
Oferta Macro Regional2011
Views: 0  |  Downloads: 0
SRA 05 PFT e I Joven E Rural ROP 180205
Views: 0  |  Downloads: 0
idae
Views: 0  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!