You are on page 1of 45

Tcnicas Digitales III

Arquitecturas Intel de 16 y 32 bits

Conceptos de memoria virtual


Mecanismo implementado entre la CPU y el SO,
que permite manejar un espacio de direcciones
mucho mayor que:
- La cantidad de memoria principal existente y/o
- El espacio de direcciones que maneja el
procesador.
La memoria virtual permite que las aplicaciones
ocupen mucho ms espacio que el disponible
en la memoria principal.

Conceptos de memoria virtual


Los programas ven direcciones virtuales, que la
MMU traduce a direcciones fsicas.
Cuando un objeto no est presente en memoria
fsica, el SO lo debe cargar desde la memoria
secundaria.
Cuando toda la memoria primaria est ocupada,
un algoritmo de reemplazo debe determinar que
objeto sera el ms conveniente de ser quitado
de la memoria principal.
3

Conceptos de memoria virtual

Modelo de traduccin
de una direccin virtual
a direccin fsica.

Conceptos de memoria virtual


Si va a ser reemplazado un objeto que no fue
modificado, simplemente se lo sobre-escribe.
Si va a ser reemplazado un objeto que, durante su
permanencia en memoria principal, ha sido
modificado, debe ser transferido a memoria
secundaria antes de sobre-escribirlo.
El objeto a reemplazar debera ser el menos
probable de ser requerido en el futuro cercano.
5

Conceptos de memoria virtual


Como no se puede adivinar si un objeto volver a
ser requerido en el futuro, los algoritmos de
reemplazo se basan en un par de principios
empricos:
- vecindad temporal
- vecindad espacial
Un algoritmo tpico es el LRU (Least Recently
Used), que supone que el objeto que desde
hace ms tiempo no ha sido accedido es el
menos probable de ser requerido en el futuro
inmediato.
6

Organizacin de la memoria virtual


Para poder implementar los algoritmos de
reemplazo e intercambio, los espacios de
memoria virtual y fsica se dividen:
- En segmentos
- Bloques de tamao variable y contenido
coherente (cdigo, datos, pila, etc.)
- En pginas
- Bloques de tamao fijo, pero cuyo
contenido puede ser mixto.
- En segmentos paginados
7

Memoria virtual con segmentacin


Como los segmentos pueden ser de tamaos
diferentes, a medida que se realizan
intercambios pueden quedar fragmentos
disjuntos, lo que representa un desperdicio.
Si se requiere cargar un segmento muy grande
para utilizar slo una pequea porcin de l, se
produce una importante prdida de tiempo.
Como el contenido de un segmento es coherente,
se pueden aplicar polticas de proteccin.
8

Memoria virtual con paginacin


Las pginas son de tamao fijo y pequeo (por ej.:
4 KB).
Es menos probable cargar objetos no necesarios
El intercambio es ms gil que usando segmentos
Al ser todas las pginas de igual tamao, no se
producen desperdicios.
En una pgina puede haber mezcla de cdigo,
datos, etc. Hay menor posibilidad de proteccin
9

Memoria virtual con segmentos paginados


Aprovecha lo mejor de cada uno:
- Proteccin a nivel de segmentos
- Agilidad por el intercambio de pginas
Un segmento no se carga completo en la memoria
principal, sino aquellas pginas que van siendo
requeridas.
Ms complejo, requiere administrar segmentos y
pginas.
10

Vecindad temporal
Si un objeto fue accedido recientemente, es
altamente probable que vaya a ser requerido
prximamente.
Si un objeto hace mucho tiempo que no es
accedido, es poco probable que vaya a serlo en
breve.

11

Vecindad espacial
Si un objeto fue accedido recientemente, es
altamente probable que algn objeto cercano
vaya a ser requerido prximamente.
Ejemplo:
for( i=0, suma=0; i<N; ++i )
{
vecidad espacial
suma += a[i];
}
vecindad temporal
12

Traduccin de direccin virtual a fsica en IA-32


El esquema que utiliza puede ser:
- Memoria virtual segmentada, (bsico)
- Memoria virtual con segmentos paginados
(opcional)

13

Traduccin de direccin virtual a fsica en IA-32


Cuando la MMU detecta la ausencia de un elemento en
memoria fsica, genera una excepcin que debe ser
capturada por el SO, para efectuar el intercambio
correspondiente.

14

Traduccin de direccin virtual a fsica en IA-32


Una direccin lgica o virtual se compone de:
- Selector de segmento (registro CS, DS, SS, etc.)
- Desplazamiento
- EIP para la bsqueda de una instruccin a
ejecutar
- SP para instrucciones push y pop
- EBX, ESI, etc para acceso a datos
usando
direccionamiento indirecto.
- etc.

15

Traduccin de direccin virtual a fsica en IA-32


Cuando no est activada la paginacin, la direccin virtual
se traduce a fsica.
Los segmentos se cargan completos en la memoria
principal.

16

Traduccin de direccin virtual a fsica en IA-32


Los descriptores de segmento contienen los siguientes
campos:
- Direccin base del segmento (32 bits)
- Lmite del segmento (20 bits)
- Atributos (12 bits)
 Define caractersticas del segmento

17

Traduccin de direccin virtual a fsica en IA-32


Principales atributos:
- P : presencia (1: segmento presente en memoria fsica)
- A : Accedido (se pone a 1 cada vez que un segmento
es accedido. Sirve para implementar
algn algoritmo de reemplazo).
- DPL : Nivel de privilegio (03)
- 0 : mximo nivel (kernel)
- 3 : mnimo nivel (aplicaciones)
- Tipo : Indica si el segmento es de:
- Cdigo
- Datos (normal o pila, R/W o R)
- Especiales (o del Sistema)
- Granularidad: indica si el lmite est dado en bytes o
en mltiplos de 4 KB

18

Traduccin de direccin virtual a fsica en IA-32


Con los 14 msb del selector de segmento se selecciona un
descriptor de la tabla

19

Traduccin de direccin virtual a fsica en IA-32


En cada instante se tienen a disposicin dos tablas de
descriptores:
- GDT (global para todas las tareas)
- LDT (exclusiva de la tarea actual)

20

Traduccin de direccin virtual a fsica en IA-32


- TI selecciona la tabla de descriptores
- LDTR y GDTR apuntan a la base de ambas tablas
- El campo ndice selecciona un descriptor

21

Traduccin de direccin virtual a fsica en IA-32


Esquema completo de la obtencin de la direccin lineal o
fsica (sin la paginacin activada).

22

Conmutacin
de tareas
TSS
Segmento de
Estado de Tareas
Almacena todos los
registros que definen
el estado actual de
una tarea (contexto),
y permitirn
restaurarla en un
momento posterior.

23

Conmutacin de tareas
Cuando el procesador recibe la orden de conmutar a otra
tarea, guarda el contexto de la tarea en ejecucin y carga el
contexto de la tarea a reactivar.

24

Conmutacin de tareas
Esquema del direccionamiento del TSS.
TR: Registro de tarea  selecciona el descriptor que
apunta al TSS actual

25

Conmutacin de tareas
Esquema de la conmutacin de tareas mediante una
puerta de tarea

26

Protecciones
De acuerdo al valor del DPL, cada segmento pertenece a
un determinado nivel de privilegio

27

Protecciones

28

Protecciones
Regla:
Desde el rea local de una tarea est
prohibido acceder al rea local de cualquier otra,
independientemente de los niveles de privilegio.
Esto se cumple gracias a que cada tarea tiene su
propia LDT
 Cuando el SO crea la LDT para una tarea, debe
incluir en ella solamente los descriptores de
segmento exclusivos de dicha tarea.
29

Protecciones
Accesos entre segmentos de cdigo

30

Protecciones
Accesos a segmentos de datos

31

Protecciones Puertas de llamada


Transferencias de control intranivel permitidas

32

Protecciones Puertas de llamada


A travs de una puerta de llamada, desde un
segmento de cdigo de nivel 3 se puede saltar a un
punto especfico de un segmento de cdigo de
nivel 0.

33

Protecciones Puertas de llamada


Funcionamiento de una puerta de llamada

34

Protecciones Puertas de llamada


Estructura del descriptor tipo Puerta de Llamada.
El campo Tipo lleva el valor 0xC
Selector : Desplazamiento indican la direccin de
inicio para la ejecucin en el segmento de destino.

35

Protecciones Puertas de llamada


Transferencia de control a travs de una PLL

36

Protecciones Puertas de llamada


Ejemplos de transferencias de control usando PLL

37

Segmentacin en modo real

38

Segmentacin en modo protegido

39

Interrupciones Modo Real


El vector de interrupcin provee CS:IP (direccin
de inicio de la rutina de interrupcin).

40

Interrupciones Modo Protegido


La Puerta de Interrupcin provee CS:EIP (direccin
virtual de inicio de la rutina de interrupcin)

41

Interrupciones Puerta de interrupcin


Atencin de una interrupcin en modo protegido,
mediante una puerta de interrupcin

PUERTA DE
INTERRUPCION

42

Interrupciones Puerta de interrupcin


Formato del descriptor tipo Puerta de Interrupcin

43

Memoria cach - Ejemplo


Asociativa de 4 vas
Bus de direcciones de 32 bits
Tamao total: 2 MB
128 lneas por va
Tamao de la va: 2 MB / 4 = 512 KB
Tamao de la lnea: 512 KB / 128 = 4 KB
Estructura de la direccin

Etiqueta
31

ndice
19 18

Offset
12 11

0
44

Memoria cach - Ejemplo

45

You might also like