Sistemas Operativos - Escuela Politécnica Nacional

Anuncio
Agenda
Sistemas Operativos
Clase # 26
Administración de Memoria
Administración de Memoria:
– Paginación
Martes, 22 de Octubre de 2002
Iván Bernal, Ph.D.
Escuela Politécnica Nacional
email: [email protected]
Copyright @2002, I. Bernal
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
1
Memoria virtual: paginación (1)
La idea principal de la memoria virtual
es que el tamaño combinado del
programa, datos y stack pueden
exceder el tamaño de memoria física
disponible.
El SO guarda aquellas partes del
programa que se estén usando en
memoria principal, y el resto en el
disco duro.
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
3
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
2
Memoria virtual: paginación (2)
Que los procesos tengan que usar un
espacio contiguo de la memoria es un
impedimento para optimizar el uso de la
memoria.
Se propone que las direcciones lógicas sean
contiguas, pero que no necesariamente
correspondan a direcciones físicas contiguas.
– Se divide la memoria física en bloques de tamaño
fijo, llamados marcos ( frames
frames).
).
– Se divide a la memoria lógica (la que los
procesos ven) en bloques del mismo tamaño
llamados páginas
páginas..
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
4
1
Memoria virtual: paginación (3)
Memoria virtual: paginación (4)
Las direcciones que un programa
genera se llaman “direcciones
virtuales” y conforman el “espacio de
direcciones virtuales”.
Las direcciones virtuales no van
directamente al bus de memoria.
Las direcciones virtuales van al MMU
(Memory Management Unit
Unit).
).
– Traduce direcciones virtuales en
direcciones físicas.
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
5
Memoria virtual: paginación (5)
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
6
Memoria virtual: paginación (6)
Se usa una tabla de páginas para
saber en que marco se encuentra cada
página.
– Se requiere apoyo del hardware.
Cada vez que la CPU intenta acceder a una
dirección, la dirección se divide en un número
de página p y un desplazamiento (offset)
(offset) d.
p se transforma en el marco correspondiente,
antes de acceder físicamente la memoria.
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
7
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
8
2
Memoria virtual: paginación (7)
Memoria virtual: paginación (8)
El tamaño de las páginas es una
potencia de 2, típicamente entre 0.5 y
8K.
Si las direcciones son de m bits y el
tamaño de página es 2n, entonces los
primeros m-n bits de cada dirección
forman p, y los restantes n forman d.
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
9
Memoria virtual: paginación (9)
22/10/2002
– Cuando la CPU se asigna a otro proceso, hay que cambiar
la tabla de páginas a la del nuevo proceso.
La paginación en general encarece los cambios de
contexto.
La seguridad se obtiene directamente, ya que cada
proceso sólo puede acceder las páginas que están
en su tabla de páginas.
Fragmentación: Sólo interna, y de media página por
proceso, en promedio.
Iván Bernal, Ph.D
Ph.D..
10
Memoria virtual: paginación (10)
– Si las direcciones son de m bits y el tamaño de
página es 2n, la tabla de páginas puede llegar a
contener 2m-n entradas.
– En una CPU moderna, m=32 (incluso 64), y n=12
ó 13, lo que significa que se requerirían cientos de
miles de entradas:
– Se puede manejar la tabla de páginas de cada
proceso completamente en memoria, y usar sólo
un registro que apunte a la ubicación de la tabla.
Para cambiar de un proceso a otro, sólo se cambia ese
registro.
Desventaja: costo de cada acceso a memoria se duplica,
porque primero hay que acceder la tabla (indexada por el
número de página). O sea, si sin paginación cada acceso
costaba 70ns, ¡ahora cuesta 140!
– Esto sugeriría que conviene usar páginas pequeñas, pero
eso aumentaría el costo de administrar las páginas.
– En general, el tamaño de página ha aumentado con el
tamaño de la memoria física de una máquina típica.
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
Tablas de páginas:
Cada proceso tiene su propia tabla:
22/10/2002
Sistemas Operativos
11
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
12
3
Memoria virtual: paginación (11)
Memoria virtual: paginación (12)
TLB (translation
(translation looklook -aside buffer )
– Pequeño y rápido caché especial de memoria asociativa.
– La memoria asociativa guarda pares (clave, valor), y
cuando se le presenta la clave, busca simultáneamente en
todos sus registros, y retorna, en pocos ns, el valor
correspondiente.
– La memoria asociativa es cara; los TLBs rara vez contienen
más de 64 registros.
– El TLB forma parte de la MMU, y contiene los pares
(página, marco) de las páginas más recientemente
accedidas.
Cuando la CPU genera una dirección lógica a la página p, la
MMU busca una entrada (p
(p, f ) en el TLB.
Si se encuentra, se usa el marco f, sin acudir a la memoria.
Sólo si no hay una entrada para p, la MMU debe acceder la
tabla de páginas en memoria (e incorporar una entrada para p
en el TLB, posiblemente eliminando otra).
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
13
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
14
Memoria virtual: paginación (13)
Memoria virtual: paginación (14)
Por pequeño que sea el TLB, la probabilidad de que
la página esté en el TLB (tasa
( tasa de aciertos)
aciertos) es alta,
porque los programas suelen hacer muchas
referencias a unas pocas páginas.
Otra ventaja de paginación:
– Si la tasa de aciertos es del 90% y un acceso al TLB cuesta
10ns, entonces, en promedio, cada acceso a memoria
costará 87ns (¿por qué?).
– O sea, sólo un 24% más que un acceso sin paginación
(70ns).
– En cada cambio de contexto, hay que limpiar el TLB, lo que
puede ser barato, pero hay que considerar un costo
indirecto: si los cambios de contexto son muy frecuentes,
la tasa de aciertos se puede reducir (para cada cambio de
contexto se debe llenar el TLB)
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
15
– Permite que procesos compartan páginas.
– Por ejemplo, varios procesos ejecutando el
mismo código: las primeras páginas lógicas
apuntan a las mismas páginas físicas, que
contienen el código. El resto, apunta a datos
locales, propios de cada ejecución.
Un factor importante que se ha mencionado
es si los programas exhiben una
característica denominada `localidad‘:
– Muchos programas tienden a usar las
instrucciones que están cercanas a la localidad de
la instrucción que se está ejecutando
actualmente.
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
16
4
Memoria virtual: paginación (15)
Page fault
– Cuando se está buscando una página cualquiera y ésta no
está cargada, surge lo que se conoce como un `fallo de
página' (page
(page fault ).
– Esto es caro para el manejador de memoria, ya que tiene
que realizar una serie de pasos extra para poder resolver la
dirección deseada y darle su contenido a quien lo pide.
Se detecta que la página no está presente y entonces se busca
en la tabla la dirección de esta página en disco.
Una vez localizada en disco se intenta cargar en alguna página
libre de RAM.
Si no hay páginas libres se tiene que escoger alguna para
enviarla hacia el disco.
Una vez escogida y enviada a disco, se marca su valor de
control en la tabla de direcciones virtuales para indicar que ya
no está en RAM, mientras que la página deseada se carga en
RAM y se marca su valor para indicar que ahora ya está en
RAM.
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
17
Memoria virtual: paginación (16)
– Todo este procedimiento es caro, ya que se sabe que los
accesos a disco duro son del orden de decenas de veces más
lentos que en RAM.
– En el ejemplo anterior se mencionó que cuando se necesita
descargar una página de RAM hacia disco se debe de hacer una
elección. Para realizar esta elección existen varios algoritmos.
Algoritmos para reemplazo de páginas
– Páginas modificadas deben primero salvarse.
– Páginas NO modificadas deben simplemente ser sobreescritas.
– La primera en entrar, primera en salir:
salir: Se escoge la página
que haya entrado primero y esté cargada en RAM.
Se necesita que en los valores de control se guarde un dato
de tiempo. No es eficiente porque no aprovecha ninguna
característica de ningún sistema.
Es justa e imparcial.
– La no usada recientemente: Se escoge la página que no haya
sido usada (referenciada) en el ciclo anterior.
Pretende aprovechar el hecho de la localidad.
22/10/2002
Memoria virtual: paginación (17)
– La no usada frecuentemente:
Este algoritmo toma en cuenta no tanto el
tiempo, sino el número de referencias.
En este caso cualquier página que se use muy
poco, menos veces que alguna otra.
– La menos frecuentemente usada:
Es parecida a la anterior, pero aquí se busca
en forma exhaustiva aquella página que se ha
usado menos que todas las demás.
– En forma aleatoria:
Elige cualquier página sin aprovechar nada.
Es justa e imparcial, pero ineficiente.
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
19
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
18
Segmentación (1)
Aprovecha que los programas se
dividen en partes lógicas, datos,
código y stack
stack..
Asigna particiones de memoria a cada
segmento de un programa.
Facilita el compartir de segmentos
(Ejem
Ejem:: librerías compartidas).
Facilita el intercambio entre memoria y
disco duro.
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
20
5
Segmentación (2)
Segmentación (3)
Por ejemplo, en la versión de UNIX SunOS 3.5, no
existían librerías compartidas para algunas
herramientas, como para los editores de texto
orientados al ratón y menús.
Cada vez que un usuario invocaba a un editor, se
tenía que reservar 1 MB de memoria. Como los
editores son una herramienta muy solicitada y
frecuentemente usada, se dividió en segmentos
para le versión 4.x ( que a su vez se dividen en
páginas).
La mayor parte del editor es común para todos los
usuarios, la primera vez que cualquier usuario lo
invocaba, se reservaba un MB como antes, pero
para el segundo, tercero y resto de usuarios, cada
editor extra sólo consumía 20 KB de memoria.
El ahorro es impresionante.
Particiones de memoria son de tamaño
variable, en contraste con páginas de
tamaño fijo en la paginación pura.
La traducción de direcciones es muy similar
a la llevada a cabo en la paginación.
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
21
– Diferencia: el tamaño de los bloques a controlar
son variables, por lo que cada entrada en la tabla
debe contener la longitud de cada segmento.
– La dirección virtual se compone de un número de
segmento (s) y un desplazamiento (d) para
ubicar un byte dentro de dicho segmento.
– El desplazamiento no debe ser mayor que el
tamaño del segmento.
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
22
Sistemas Combinados (1)
La paginación y la segmentación puras son métodos
de manejo de memoria bastante efectivos.
La mayoría de los sistemas operativos modernos
implantan esquemas combinados, es decir,
combinan la paginación y la segmentación.
La idea de combinar estos esquemas es para
aprovechar los conceptos de la división lógica de los
programas (segmentos) con la granularidad de las
páginas.
Un proceso estará repartido en la memoria real en
pequeñas unidades (páginas) cuya liga son los
segmentos.
Es factible el compartir segmentos a medida que las
partes necesitadas de los mismos se van
referenciando (páginas)
22/10/2002
Sistemas Operativos
Iván Bernal, Ph.D
Ph.D..
23
6
Descargar