gestión de memoria

98
CARRERA DE INGENIERIA EN SISTEMAS Docente: SISTEMAS OPERATIVOS Periodo: Ing. Freddy Patricio Ajila Z. septiembre 2013 – febrero 2014 AREA DE LA ENERGÍA LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES Email: [email protected]

Upload: freddy-patricio-ajila-zaquinaula

Post on 09-Jul-2015

276 views

Category:

Education


2 download

DESCRIPTION

Introducción, Asignación de espacio contiguo, asignación de espacio no contiguo, gestión de memoria virtual.

TRANSCRIPT

Page 1: Gestión de memoria

CARRERA DE INGENIERIA EN SISTEMAS

Docente:

SISTEMAS OPERATIVOS

Periodo:

Ing. Freddy Patricio Ajila Z.

septiembre 2013 – febrero 2014

AREA DE LA ENERGÍA LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES

Email: [email protected]

Page 2: Gestión de memoria

Segunda Parte:

Gestión de Memoria

Page 3: Gestión de memoria

OBJETIVO

1. Analizar las estrategias con las que cuenta el

sistema operativo para compartir la memoria

entre los procesos.

Page 4: Gestión de memoria

Contenido

1. Introducción

2. Asignación de espacio contiguo

– Asignación estática de memoria particionada

– Asignación dinámica de memoria particionada

– Protección y uso compartido

3. Asignación de espacio no contiguo

– Segmentación

– Paginación

– Segmentación con paginación

4. Gestión de memoria virtual

– Introducción

– Paginación por demanda

– Algoritmos de reemplazo de páginas

– Algoritmos de asignación de marcos de página

Page 5: Gestión de memoria

La CPU es compartida por un conjunto de procesos y

esta tarea es controlada por el planificador de procesos,

pero para mejorar el grado de utilización del procesador

y la velocidad de respuesta a los usuarios es necesario

mantener varios procesos en memoria y para ello se

nececita gestionar de forma eficiente el espacio de

memoria.

1. Introducción

Page 6: Gestión de memoria

Para lograrlo el S.O utiliza técnicas de gestion de

memoria que entre las más utilizadas están la

paginación y la segmentación.

C/U de las técnicas tiene sus propias ventajas y

desventajas y para ejecutarse dependen de muchos

factores, en especial del hardware del sistema (CPU).

Introducción

Page 7: Gestión de memoria

La CPU toma inst de memoria de acuerdo con el

valor del contador del programa PC.

Las inst pueden provocar otras operaciones de

lectura o almace en dir específicas de memoria. Por

ejemplo: Ciclo Inst (Extraer Inst + Decodifi +

Operandos + ejecución = almacenamiento

resultados)

Fundamentos

Page 8: Gestión de memoria

Un programa debe cargarse en memoria desde disco y colocarse dentro de un proceso para que se ejecute.

La unidad de memoria tan solo ve un flujo de direciones

de memoria no como se generan ni tampoco para que se

utilizan las inst o datos.

Por lo tanto ignoramos como generar dir de memoria y

nos centramos en la secuencia de dir de memoria

generadas por el programa en ejecución

Page 9: Gestión de memoria

- La memoria principal y los registros son los únicos dispositivos de almacenamiento a los que puede acceder desde la CPU directamente•

- Los datos siempre deben estar en memoria para que la CPU pueda pueda operar con ellos

•- El acceso a registro es muy rápido; supone un ciclo de CPU (o menos)

- El acceso a memoria principal puede durar varios ciclos del reloj del procesador para completarse y x tanto el procesador tiene que detenerse ya q nodispone de los datos para completar la inst que está ejecutando

- El remedio son las memorias caché se colocan entre la memoria principal y la CPU para resolver la diferencia de veloc.

Hardware Básico

Page 10: Gestión de memoria

Procesamiento de un programa de usuario

Page 11: Gestión de memoria

•­  Algo  fundamental  que  se  debe  garantizar es  que  no  se  pueda  acceder  a  espacios  de memoria  que  no  corresponden,  ya  sea  del Sistema  Operativo  como  de  otros  procesos. Este  tipo  de  protección  debe  ser proporcionada por el hardware.

­  Para  hacer  esto  se  debe  determinar  el rango  de  direcciones  legales  a  las  que  el proceso puede acceder.

Page 12: Gestión de memoria

Estas direcciones están dadas a través de dos registros: Registro base y límite

Registro base.­ contiene la dirección de la memoria física desde donde empieza el proceso.

Registro límite.­ especifica el rango de direcciones utilizadas por el proceso.

Esto quiere decir que si un proceso empieza en la dirección  3000 ese es su registro base y si el límite es 325, entonces solo podrá acceder ese proceso a las direcciones comprendidas entre 3000 y 3325 incluyendo el extremo inferior.

Page 13: Gestión de memoria

Un registro base y un registro límite definen un espacio lógico de direcciones

Page 14: Gestión de memoria

Unidad de Gestión de Memoria (MMU)

La MMU (Memory-Management Unit) es un dispositivo hardware que transforma las direcciones virtuales en físicas

Con la MMU el valor del registro de reubicación (registro base) es añadido a cada dirección generada por un proceso de usuario en el momento en que es enviada a la memoria

El programa de usuario trabaja con direcciones lógicas; nunca ve las direcciones físicas reales

Page 15: Gestión de memoria

La  protección  de  la  memoria  en  este  caso consiste en que el hardware de la CPU compare las  direcciones  generadas,  para  saber  si  se encuentran  dentro  del  rango  establecido  para ese proceso, si este acceso es legal no existe problema alguno, pero si es ilegal entonces se genera  una  interrupción  lo  que  provoca  una llamada  al  sistema  para  que  el  sistema operativo  conozca  que  se  está  haciendo  un acceso  a  una  dirección  incorrecta  y  la repuesta  del  SO  es  generar  un  error  de direccionamiento.

Protección de espacio de memoria

Page 16: Gestión de memoria

Protección hardware de las direciones, utilizando un registro base y un registro límite.

Page 17: Gestión de memoria

Estos  registros  solo  pueden  ser  cargados  por el S.O ya que las instrucciones privilegiadas solo se pueden ser ejecutadas en modo kernel.

El  S.O  que  se  ejecuta  en  modo  kernel  tiene acceso  no  restringido  a  la  memoria  del  S.O como de los usuarios.

Lo anterior permite al S.O cargar los prog de usuarios  en  la  memoria  de  los  usuarios  y volcar  estos programas en caso de error.

Page 18: Gestión de memoria

Normalmente  los  programas  se  encuentran almacenados en Disco cuando un usuario los invoca o  el  mismo  sistema  operativo  lo  hace,  estos  se carga en memoria, para luego ejecutarse en la CPU instrucción  por  instrucción.  Estos  procesos  que se  encuentran  en  el  disco  forman  la  cola  de entrada o cola de trabajo.

Cuando  el  proceso  termina  su  ejecución,  se produce  una  llamada  al  sistema  para  que  el  SO conozca  sobre  esta  terminación  y  actualice  sus tablas  de  datos  en  las  cuales  posee  info  sobre los  espacios  de  memoria  que  están  siendo utilizados  y  por  quién  están  siendo  utilizados, obviamente  el  resto  de  espacios  serán  los  que estén disponibles.

Reasignación de direciones

Page 19: Gestión de memoria

Recuerde que la asignación de memoria a un proceso no es  secuencial  si  no  más  bien  aleatoria,  eso  quiere decir  que  en  cualquier  espacio  de  memoria  que  esté disponible y este sea lo suficiente para albergar al proceso, este se alojará.•

•A  medida  que  se  ejecute  el  proceso,  este  accesa  a memoria para obtener instruciones y datos•

En  el  caso  de  un  proceso  de  usuario  se  puede reasignar las direcciones, esto implica que se cambie la  dirección  establecida  al  principio,  por  otra.  La reasignación  de  las  direcciones  puede  darse  en cualquiera de los pasos:Tiempo de compilación.Tiempo de carga.Tiempo de ejecución.

Page 20: Gestión de memoria

Dirección lógica.- es una dirección generada por la CPU.

Dirección física.- es una dirección vista en la memoria principal.

Los métodos de reasignación en tiempo de compilación y en tiempo de carga generan direcciones lógicas y físicas iguales. En cambio el esquema de reasignación de direcciones en tiempo de ejecución hace que las direcciones físicas y lógicas difieran, es por eso que en esta parte analizaremos este caso.

Espacio de direciones lógico y físico

Page 21: Gestión de memoria

El  conjunto  de  todas  las  direcciones  lógicas generadas por  un programa se denomina espacio de direcciones lógicas, y al conjunto de todas las  direcciones  físicas  correspondientes  a esas  direcciones  lógicas,  se  las  denomina espacio de direcciones físicas.

A  las  direcciones  lógicas  también  se  les denomina direcciones virtuales.

El  cambio  de  direcciones  virtuales  a  físicas es realizada por un dispositivo HW denominado Unidad de Administración de Memoria (MMU)

Page 22: Gestión de memoria

En  la  MMU  se  realiza  la  suma  de  la  dirección virtual  generada  por  la  CPU  y  el  Registro  base que  ahora  le  vamos  a  llamar  registro  de reubicación, esta operación nos da como resultado un acceso válido a un espacio de memoria física ocupada  por  el  proceso  que  actualmente  se encuentra en la CPU ejecutándose.

Al  cambio  de  direcciones  lógicas  a  físicas también  se  le  denomina  Mapeo  de  direcciones lógicas.

Recuerde  que  cualquier  acceso  a  un  espacio  de memoria  que  no  se  encuentre  dentro  del  rango establecido  producirá  un  error  de direccionamiento. 

Page 23: Gestión de memoria

Reubicación dinámica mediante registro

Page 24: Gestión de memoria

Para  que  un  programa  se  ejecute  sabemos  que debe estar cargado en memoria, en consecuencia entonces el tamaño de un proceso está limitado por el tamaño de la memoria física.

¿Qué  pasa  si  no  hay  tamaño  suficiente  de memoria  para  satisfacer  una  solicitud  de  un proceso?

Para  mejorar  la  utilización  del  espacio  en memoria  principal  se  puede  utilizar  el mecanismo de carga dinámica.

Con la carga dinámica, una rutina no se carga hasta  que  se  la  invoca,  todas  las  rutinas  se mantienen en disco

Carga Dinámica

Page 25: Gestión de memoria

La idea es mejorar la utilización del espacio de  memoria  con  lo  que  la  utilización  de  este método  garantizaría  que  tenga  más  espacio  en memoria para satisfacer una solicitud de otro proceso que quiera ejecutarse, por lo que solo se  cargaría  en  memoria  la  instrucción  que  se necesita,  eso  si  se  debe  estar  actualizando cada vez la tabla de direcciones del programa en memoria

La ventaja de este método, es que una rutina o instrucción  no  utilizada  no  se  cargará  nunca en memoria. 

Page 26: Gestión de memoria

Intercambio

Un proceso puede ser retirado temporalmente de la memoria a algún almacenamiento auxiliar; más tarde será incorporado de nuevo a la memoria para que continúe su ejecución

•Por ejemplo En un entorno de multiprogramación al usar el algoritmo de planificación basado en Round Robin, cuando se termina el quantun de tiempo el gestor de memoria retira el proceso y en el espacio que queda es cargado otro proceso. Mientras esto ocurre el planificador de la CPU, asigna un cuanto de tiempo a otro proceso que ya está en memoria.•

En los algoritmos con prioridad el gestor de memoria puede descargar un proceso de menor prioridad y cargar un proceso de prioridad mayor; de tal manera que asigna un espacio de memoria acorde a lo solicitado por el proceso de mayor prioridad•

El SO mantiene una cola de listos para los procesos intercambiados que pueden ejecutarse

Page 27: Gestión de memoria

Vista esquemática del intercambio

Page 28: Gestión de memoria

Particionamiento fijo o estático

Page 29: Gestión de memoria

Particionamiento fijo o estático

Con esta técnica es que cada partición permite cargar un proceso.

Cada partición permite ejecutar un proceso de forma independiente ya que todas las instruciones y datos se encuentran dentro de la partición.

Un proceso no puede invadir el espacio de direcciones de otro proceso que se encuentra en otra partición, hay esquemas que permiten proteger el espacio de direciones de cada partición.

Con esta técnica existe mucho desperdicio de memoria ya que el tamaño de la partición suele ser mayor que el tamaño del proceso.

Page 30: Gestión de memoria

Particionamiento fijo o estático

Page 31: Gestión de memoria

Particionamiento fijo o estático

Con el esque de cola única; el proceso completo debe cargarse en cualquier partición donde quepa.

Con el esquema de cola única; surge la pregunta ¿Cual de las particiones libres es ideal para cargar el proceso?(Tecnicas primer ajuste, mejor ajuste y peor ajuste).

Con el esquema de varias colas (una por partición); los procesos están diseñados para ejecutarse en dicha partición.

El problema que existe es el desperdicio de memoria que queda al final de cada partición (Fragmentación Interna) ya que no se puede garantizar que el proceso quepa exactamente en la partición.

Page 32: Gestión de memoria

Fragmentación Interna

Ala diferencia entre el tamaño de la partición y el tamaño del proceso se conoce como fragmentación interna.

Page 33: Gestión de memoria

Fragmentación Externa

Se produce cuando un proceso por su tamaño no puede ser cargado en ninguna de las particiones libres y por lo tanto existe desperdicio de particiones completas, a lo que se conoce como fragmentación externa.

La fragmentación externa se soluciona por medio de la compactación

Compactación: Consiste en mover las particiones de memoria asignadas para colocar toda la memoria libre en un bloque grande y contiguo

Page 34: Gestión de memoria

Particionamiento variable o dinámico

●Este equema fué diseñado para solucionar el problema de particionamiento fijo, ya que conforme llegan los procesos se les asisgna la cantidad exacta de memoria que necesitan. ● Cuando llega un proceso se le asigna una partición lo suficientemente grande donde quepa el proceso.

– Con el espacio sobrante se crea una nueva partición libre (hueco)● En este tipo de asignación las consideraciones de protección son las mismas que en la asignación estática

Page 35: Gestión de memoria

Particionamiento variable o dinámico Esquema con una sola partición grande para cargar a los

procesos. El S.O lleva una tabla de registro de las particiones Libres y sus tamaños

Page 36: Gestión de memoria

Ejemplo de compactación

Page 37: Gestión de memoria

Técnicas de asignación de particiones

En estos dos esquemas de particionamiento; fijo y variable es importante saber en que partición se va a colocar el proceso que va ha ser cargado. Los siguientes algoritos se aplican a los dos esquemas de particionamiento fijo y variable.

Primer ajuste (First-fit): Colocar el proceso en el primer hueco libre donde quepa el proceso.

Mejor ajuste (Best-fit): Se busca de entre las particiones libres la que mejor se ajuste al tamaño del proceso o la más adecuada procurando que la fragmentación interna sea lo mas pequeña posible.

Peor ajuste (Worst-fit): Se busca de entre las particiones libres la particion más grande posible, usando la lógica de que la fragmentación interna sea lo suficientemente grande para cargar otro proceso

Los métodos de primer y mejor ajuste son mejores que el peor ajuste en términos de velocidad y aprovechamiento de la memoria

Page 38: Gestión de memoria

Ejemplo de los algoritmos de primer, mejor y peor ajuste

Page 39: Gestión de memoria

Recomendaciones

Los espacios libres en memoria no están ordenados de una manera específica, y en algunas ocasiones es conveniente ordenarla:

En el algoritmo de mejor ajuste al tener ordenado las particiones de menor a mayor, en el primer hueco que quepa el proceso se lo asignará, teniendo un menor espacio de fragmentación interna.

En el algoritmo de peor ajuste es conveniente ordenarlo de mayor a menor, ya que si en el primer hueco no cabe el proceso, se deduce que en este momento no es posible cargar dicho proceso

Se debe tomar en cuenta: El cómo tiene organizada un S.O. su lista de huecos y el cómo se asigna los huecos a los procesos, son elementos a tomar en cuenta cuando se analizan las características de un S.O. particular.

Page 40: Gestión de memoria

3. Asignación de espacio no contiguo o Almacenamiento Disperso

a. Paginación

b. Segmentación

c. Segmentación con paginación

Page 41: Gestión de memoria

Paginación

Es un esquema de gestión de memoria que permite que el espacio de direcciones físicas de un proceso no sea contiguo. 

El  método  básico  de  la  paginación  consiste  en  descomponer  la memoria  física  en  una  serie  de  bloques  de  tamaño  fijo  denominado marcos de pagina y descomponer la memoria lógica en en bloques del mismo tamaño denominado páginas.

Cuando  se  carga  un  proceso  sus  páginas  se  cargan  desde  el  disco duro en los marcos de memoria disponibles. 

La porción de disco conocida como memoria auxiliar está dividida en bloques de tamaño fijo del mismo tamaño que los marcos de memoria.

Toda dirección generada por la CPU está dividida en dos partes: un número de página (p) y un desplazamiento (d), El número de página se utiliza como índice para la tabla de páginas.

Page 42: Gestión de memoria

Esquema del hardware de Paginación

Page 43: Gestión de memoria

PaginaciónLa tabla de páginas contiene la dirección báse de cada página en  memoria  física  que  se  combina  con  el  desplazamiento  de página para obtener la dirección de memoria física.

Modelo de paginación de la memoria lógica y física

Page 44: Gestión de memoria

PaginaciónEl tamaño de página es una potencia de 2, que varía entre 512 Bytes  y 16 Mbytes por página

La estructura de una dirección lógica es: 

Donde  p  es  un  índice  de  la  tabla  de  páginas  y  d  es  el desplazamiento dentro de la página.

Por ej: El tamaño de las paginas es de 4 bytes y la memoria física es de 32 bytes (8 páginas). La dir lógica 0 representa la pagina 0 y  se  encuentra  en  el  marco  5,  por  lo  tanto  la  dir  lógica  0  se corresponde con la dir física 20. Esto se calcula de la sig manera:

Dir física = (Marco de página * támaño de pagina)+desplazamiento

Dir lógica 0 coresponde con dir física 20 ­­­>   20 = (5*4)+ 0

Dir lógica 3 coresponde con dir física 23 ­­­>   23 = (5*4)+ 3

Dir lógica 4 coresponde con dir física 24 ­­­>   24 = (6*4)+ 0

Dir lógica 13 coresponde con dir física 20 ­­­>   9 = (2*4)+ 1

número de página desplazamientop d

m - n n

Page 45: Gestión de memoria

Ejemplo de paginación para una memoria de 32 bytes con páginas de 4 bytes

Memoria lógica

0123

abcd

4567

efgh

891011

ijkl

12131415

mnop

0 5

1 6

2 1

3 2

Tabla de páginas

0

1

2

3

0

4 ijkl

8 mnop

12

16

20 abcd

24 efgh

28

Memoria Fisica

0

1

2

3

4

5

6

7

Num Pag

Marco Pag

Page 46: Gestión de memoria

PaginaciónCuando  usamos  el  esquema  de  paginación  no  tenemos fragmentación externa.

Pero si puede existir en cierto grado de fragmentación interna ya que el ultimo marco de pagina asignado puede no estar completamnte lleno. Por ejemplo:

Si el tamaño de pagina es 2048 byes y el proceso es de 72226 bytes nececitará:

Num paginas = 72226 / 2048 = 35 paginas completas

Porcion de página = 72226 ­ (35 * 2048) = 546 bytes

Fragmnetación Interna = 2048 – 546 = 1052 bytes

Page 47: Gestión de memoria

PaginaciónMarcos Libres

Cuando  llega  un  proceso  al  sistema  para  ejecutarlo, se examina su tamaño expresado en páginas, donde cada pagina necitará un marco. Por lo tanto si el proceso requiere  n  paginas  deberán  haber  almenos  n  marcos libres  en  memoria.  Si  hay  n  marcos  libres  se  los asignara  al  proceso  que  acaba  de  llegar.  La  primera página  del  proceso  se  carga  en  uno  de  los  marcos asignados    y  se  incluye  el  numero  de  marco  en  la tabla  de  páginas  para  ese  proceso.  La  siguiente pagina se carga en otro marco y su numero de marco se guarda en la tabla de páginas y así sucecivamente.

Ver siguiente diagrama:

Page 48: Gestión de memoria

Esquema de marcos libres

Antes de la asignación Después de la asignación

Page 49: Gestión de memoria

Protección

La protección de la memoria en un entorno paginado se implementa mediante una serie de bits de protección asociados con cada marco, estos bits se mantienen en la tabla de páginas.

Al mismo tiempo que se clacula la dir física, puede comprobarse los bits de protección para verificar que no se esté haciendo ninguna escritura en una página de solo lectura.

Generalmente se asocia un bit de validez con cada entrada de la tabla de páginas de tal forma que cuando un bit es:

“válido” indica que la página asociada está en el espacio de direcciones lógico del proceso, y por tanto es legal el acceso.

Un bit “inválido” indica que la página no está en el espacio de direcciones lógico del proceso.

Paginación

Page 50: Gestión de memoria

Esquema de un bit de validez en una tabla de páginas

Page 51: Gestión de memoria

Páginas Compartidas

Una ventaja de la paginación es la posibilidad de compartir código común en un entrono de tiempo compartido.

Para ello se comparten los marcos de memoria; donde el marco compartido debe estar asociado a una página en la tabla de páginas de cada proceso

Código compartido

Los procesos comparten una copia de código reentrante (o código puro) no modificable o sólo lectura (ej., editores de texto, compiladores) estos pueden estar en varias páginas compartidas para cada proceso

Los datos privados de cada proceso se encuentran en páginas no compartidas

Paginación

Page 52: Gestión de memoria

EJEMPLO DE PÁGINAS COMPARTIDAS (Un editor de 3 páginas de código puro y una página para espacio de datos)

Page 53: Gestión de memoria

Ejercicios1. Empleando un tamaño de página (tp) de 8 bytes y una memoria física (mf) de 64 bytes, indique el número de páginas y calcule la direción física de memoria para los datos indicados en el diagrama. Los datos son 3, 9, 14, 18 y 28.

Paginación

0 3

1 4

2 2

3 1

Tabla de páginas

01234567

0

89101112131415

1

1617181920212223

2

2425262728293031

3

Num PagDatos

Memoria lógica

Num

Pag

Mar

co P

ag

Page 54: Gestión de memoria

Solución ejercicio 1

Page 55: Gestión de memoria

Ejercicios2. Empleando un tamaño de página (tp) de 4 bytes y una memoria física (mf) de 16 bytes, indique el número de páginas y calcule la direción de la memoria física para los datos indicados en el diagrama. Los datos son a, f, l, o.

Paginación

0 3 v

1 4 i

2 2 v

3 5 i

Tabla de páginas

Num PagDatos

Memoria lógica

abcd

0

efgh

1

Ijkl

2

mnop

3

Num

Pag

Mar

co P

ag

Bit V

al- In

v

Page 56: Gestión de memoria

Solución ejercicio 2

Page 57: Gestión de memoria

Segmentación

La segmentación es un esquema de gestión de memoria que apoya la visión que el usuario tiene de la memoria, aquí los espacios lógicos es una colección de segmentos, cada segmento tiene un nombre y una longitud(desplazamiento).

Cuando el programa se compila, el compilador automaticamente construye los segmentos. Un segmento es una unidad lógica tal como:

programa principal,

procedimiento,

función,

método,

objeto,

variables locales, variables globales,

bloque común,

pila,

tabla de símbolos, arrays

Page 58: Gestión de memoria

1.4 SEGMENTACIÓN

Programa Visto por un Usuario

Page 59: Gestión de memoria

Segmentación

Por ejemplo:

Uncompilador C, podría crear elementos separados para los siguientes elementos:

1. El código

2. Las variables

3. El cúmulo de memoria a partir del cual se asigna la memoria

4. Las pilas utilizadas por cada hebra de ejecución

5. La biblioteca de C estandar

Page 60: Gestión de memoria

1.4 SEGMENTACIÓN

Vista Lógica de la Segmentación

1

3

2

4

Espacio de usuario

1

4

2

3

Espacio de memoria física

Page 61: Gestión de memoria

Elementos de la sementación

Una dirección lógica consiste en un par:

<número de segmento, desplazamiento>

Tabla de segmentos – contiene información sobre la ubicación de los segmentos en memoria; cada entrada tiene:

– base – contiene la dirección física en la que comienza el segmento

– límite – especifica la longitud del segmento

Page 62: Gestión de memoria

Hardware de segmentación

Page 63: Gestión de memoria

1.4 SEGMENTACIÓN

Ejemplo de Segmentación

Page 64: Gestión de memoria

Segmentación con paginación

La paginación y la segmentación se pueden combinar en la segmentación con paginación

En este esquema de gestión de memoria los segmentos se paginan

– Se apoya la visión de la memoria que tiene el usuario

– Se resuelve el problema de la asignación dinámica

Es necesario una tabla de segmentos y una tabla de páginas por cada segmento

– La traducción de direcciones es más compleja y puede requerir un mayor número de accesos a memoria en el peor caso

Page 65: Gestión de memoria

Segmentación con paginación

El espacio de direcciones de un usuario se divide en varios segmentos según el criterio del programador.Cada segmento se vuelve a dividir en varias páginas de tamaño fijo, que tienen la misma longitud que un marco de memoria principal. Si el segmento tiene menor longitud que la página, el segmento ocupará sólo una página.Desde el punto de vista del programador, una dirección lógica también está formada por un número de segmento y un desplazamiento en el segmento.Desde el punto de vista del sistema, el desplazamiento del segmento se ve como un número de página dentro del segmento y un desplazamiento dentro de la página.

Cada proceso tiene una tabla de segmentos y varias tablas de páginas (una por cada segmento).

Page 66: Gestión de memoria

Ejemplo

Segmentación con paginación

Page 67: Gestión de memoria

4. Gestión de memoria virtual

Es una técnica que permite al S.O. la ejecución de procesos que no se encuentran completamente cargados en memoria. Una de las principales ventajas de este esquema es que los programas pueden tener un tamaño mayor que la propia memoria física.

Page 68: Gestión de memoria

Fundamentos

Sólo partes del proceso necesitan estar en memoria para su ejecución. Una ventaja es que el espacio de direcciones lógicas puede ser mayor que el espacio de direcciones físicas. Facilita la tarea de programación porque el programador ya no se debe preocupar por la cantidad de memoria física disponible. Se podrían ejecutar más programas al mismo tiempo aprovechando el uso del procesador sin incrementar el tiempo de respuesta. Permite compartir espacios de direcciones entre procesos. Se requiere mecanismos para traer paginas de disco a memoria y retirar paginas de memoria para pasrlas a disco.

La memoria virtual suele implementarse usando esquemas como:

– Paginación por demanda

– Segmentación por demanda

Page 69: Gestión de memoria

Administración de memoria virtual

Políticas de carga (Fetch).

➔ Cuando traer una pagina/segmento a memoria Politicas de colocación (Placement).

➔ Donde colocar una pagina/segmento a memoria Politicas de reemplazo (Replacement).

➔ Si la memoria principal está llena, se debe decidir cual página/segmento se debe reemplazar

Page 70: Gestión de memoria

Políticas de carga

Paginación por demenada

La memoria virtual basada en paginación por demanda solo se cargan las paginas que sean necesarias de tal forma que las paginas no necesarias jamas se cargan a memoria.

Se requiere menos memoria La respuesta es más rápida Puede haber más procesos en memoria

La herramienta que usa el S.O para traer una página a memoria o llevarla a disco se llama Paginador conocida tambien como intercambiador perezoso.

Page 71: Gestión de memoria

Esquema memoria paginada a disco

Page 72: Gestión de memoria

¿Dentro del esquema de paginación, que pasa si quiere accesar a una página que no está en memoria?

La respuesta es que ocurre un fallo de página

Un fallo de pagina sucede cuando un proceso en ejecución intenta accesar a una dirección lógica de una página que no está cargada en memoria

Si ocurre un fallo de página se provoca una interrupción al S.O de fallo de página para que se encargue de subir la pagina solicitada.

Cuando se carga la página el bit de estado en la tabla de paginas cambia a 1 indicando que la pagina está en memoria.

Page 73: Gestión de memoria

Fallo de página Bit de estado

En cada entrada de la tabla de páginas hay un bit de validez(v/1 ⇒ en memoria, i/0 ⇒ no en memoria o acceso ilegal)

Al comienzo el bit de validez es inicializado a i en todas las entradas

Ejemplo de tabla de páginas:

Durante la traducción de direcciones, si el bit de validez de la entrada de la tabla de páginas es i ⇒ fallo de página

Page 74: Gestión de memoria

Esquema de una tabla de páginas cuando algunas páginas no se encuentran en memoria principal

Page 75: Gestión de memoria

¿Que hace el S.O cuando existe un fallo de página?

Cuando existe un fallo de pagina el procedimiento a seguir es sencillo:

1. Se comprueba en la tabla de páginas del proceso (PCB) si la referencia era un acceso a memoria válido o invalido.

2. Si la referencia era inválida, se aborta el proceso. Si la referencia es válida y la pagina no está en memoria, se la debe cargar.

3. Buscamos un marco libre

4. Cargamos la página desde disco al marco asignado

5. Completada la carga, modificamos la tabla de paginas cambiando el bit a válido.

6. Reinicia la instrucción que fué interrumpida o causó el fallo de página

Page 76: Gestión de memoria

Esquema de los pasos para tratar un fallo de página

Page 77: Gestión de memoria

Políticas de colocación

Para paginación es trivial, ya que todos los marcos de pagina son iguales y por lo tanto la pagina podría ser colocada en cualquiera de ellos. Para segmentación y debido a que sus

segmentos son de tamaño variable se debe utilizar mecanismos o algoritmos de colocación como:

Primer Ajuste Mejor Ajuste Peor Ajuste

Page 78: Gestión de memoria

¿Que pasa si no existe un marco de página libre?

La respuesta es que se debe seguir alguna política de reemplazo.

Mediante algun algoritmo el S.O decide que página retirar de memoria para dejar el marco libre.

Es necesario que el algoritmo que se use para el reemplazo de páginas no genere muchos fallos de pa ina para futuras referencias, osea debe retirar la ǵpagina adecuada.

Page 79: Gestión de memoria

Políticas de reemplazo

: Aleatorio (RANDOM) Mejor OPTIMA (OPT) Primera en llegar, primera en salir (FIFO) Menos recientemente utilizada (LRU) Aproximaciones LRU

Referencia bit, segunda oportunidad, reloj Algoritmos basados en contadores

Menos frecuentemente utilizada (LFU) Mas frecuentemente utilizada (MFU)

Page 80: Gestión de memoria

Conceptos clave

String de referencia

Es el registro de las páginas que han sido

accesadas por un proceso.

Por ejemplo el PRS del proceso A es:1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5La secuencia signifinicca que el proceso en

ejecución accesó a la pag 1, luego a la 2, luego a la 3 y asi susecivamente.

Page 81: Gestión de memoria

Conceptos clave

Rendimiento de estrategias de reemplazo

Significa que cualquier estrategia de reempazo debe permitir el mejor rendimiento para la ejecución del proceso. EL rendimiento está dado por

R = 1 – F

donde:

F = # de fallos de pagina / # total de referencias

Cualquier estrategia que se aplique dependera PRS que indica el historial de acceso a las paginas y esto influirá directamente sobre el rendimiento.

Page 82: Gestión de memoria

Algoritmo Optimo

Es el mejor que existe Consiste en reemplazar la página que no va ha ser utilizada por el período más largo de tiempo. Significa que cuando se llenó la memoria, se debe tomar una decisión en base al historial del PRS con el fin escoger la pagina más distante o la que menos voy accesar más adelante.

Page 83: Gestión de memoria

Ejemlpo con tres marcos

Page 84: Gestión de memoria

Respuesta

Page 85: Gestión de memoria

Algoritmo FIFO

Este algorimo tomo en cuenta el orden de llegada por lo tanto la primera pagina en llegar es la primera página en salir. Ejemplo con 3 marcos libres

Page 86: Gestión de memoria

Respuesta

Page 87: Gestión de memoria

Algoritmo LRU (Menos recientemente utilizada)

Este algorimo se basa en el tiempo de ejecución, ya que analiza desde el tiempo actual hacia atrás cual es la página mas lejana o la que menos recientemente he utilizado. Ejemplo con 3 marcos libres

Page 88: Gestión de memoria

Respuesta

Page 89: Gestión de memoria

Ejercicio

Usar FIFO y LRU para 4 marcos de página

Page 90: Gestión de memoria

Respuesta FIFO

Page 91: Gestión de memoria

Respuesta LRU

Page 92: Gestión de memoria

4. Asignación de marcos libres

■ ¿Cuantos marcos libres asiganamos a cada proceso?

■ La respuesta es los marcos necesarios de acuerdo a las nececidades de los procesos.

■ Una razón fundamental de asignar de marcos necesarios es el rendieminto, ya que mientras se reduce el numero de marcos asignados a un proceso incrementa la tasa de fallos de página y el tiempo de ejecución del proceso tambien aumenta.

■ Existe dos algoritmos principales de asignación:

• Asignación equitativa• Asignación proporcional

Page 93: Gestión de memoria

4.1 Asignación equitativa

■ Consiste en repartir los m marcos libres entre n procesos para que cada proceso tenga un número igual de márcos.

■ Por ejemplo:

Si hay 100 marcos libres y 5 procesos:

# marcos x proceso = 100 / 2 = 20

Page 94: Gestión de memoria

4.2 Asignación proporcional

■ Consiste en repartir los m marcos libres entre n procesos de acuerdo al tamaño de los procesos.

■ Por ejemplo: Si hubiera 64 marcos libres y dos procesos, el uno de 10 páginas y el otro de 127 páginas:

mS

spa

m

sS

ps

iii

i

ii

×==

=

=

=

para asignación

marcos de totalnúmero

proceso del tamaño

5964137

127

564137

10

127

10

64

2

1

2

1

≈×=

≈×=

===

a

a

s

s

m

■ En conclusión podemos decir que tanto con la asignación equitativa como con la proporcional el número de marcos por proceso puede variar de acuerdo al nivel de multiprogramación

Page 95: Gestión de memoria

4.3 Asignación global y local

■ Si hay múltiples procesos compitiendo por los marcos, podemos clasificar los algoritmos de sustitución de páginas en dos categorías amplias: sustitución global y sustitución local.

– Sustitución Global (Se selecciona un marco de sustitución de entre un conjunto de todos los marcos asignados; es decir cualquier proceso puede quitar un marco de otro proceso)

– Sustitución Local (Cada proceso solo puede sustituir el marco; dentro del conjunto de marcos asignados al mismo)

■ Se puede concluir entonces que con sustitución local el numero de marcos asignados a un proceso no varia, mientras que con sustitución global el número de marcos incrementa.

Page 96: Gestión de memoria

5. Sobrepaginación

■ Si el # de marcos asignados a un proceso de baja prioridad cae por debajo del #mínimo requerido por el sistema; se dice entonces que el proceso no tiene el # de marcos que nececita para soportar las páginas que está usando activamente y por lo tanto generará rapidamente una y otra vez sucecivos fallos de pagina.

■ A esta alta actividad de páginación se la conoce como sobrepaginación, ya que se invierte mas tiempo recargando páginas que ejecutando el proceso.

Page 97: Gestión de memoria

5.1 Solución a la Sobrepaginación

?

Page 98: Gestión de memoria

Fin de la unidad

Gracias.