Está en la página 1de 138

Administracin del

Almacenamiento

Algunos esquemas de esta presentacin estn tomados de:


A.Silberschat, P.Galvin, G.Gagne Operating System Concepts
6 edicin, cuyo copyright pertenece a John Wiley & Sons, INC.
2003.

CC331

HOD

Enlace de Direcciones
Para su ejecucin un proceso debe cargarse
en memoria
Cola de entrada: conjunto de procesos en
disco en espera de ingresar a memoria
Programa usuario pasa por varias etapas
(algunas optativas) antes de ejecutarse
En dichas etapas las direcciones pueden
representarse de distinta forma:
x direccin simblica
14 bytes desde inicio direccin relocalizable
74014 direccin absoluta

CC331

HOD

Procesamien
to de un
Programa
Usuario

CC331

HOD

Enlace de instrucciones y datos a memoria


Se puede llevar a cabo en distintas etapas
Tiempo de compilacin
Si se sabe dnde residir el programa en memoria, se
puede generar cdigo absoluto
Si se decide cambiar la ubicacin de memoria, se debe
volver a compilar

Tiempo de carga
Se genera cdigo relocalizable y al cargarlo en
memoria se hace el enlace con el cdigo absoluto

Tiempo de ejecucin
Si durante la ejecucin se permite que el proceso se
mueva, el enlace final se debe postergar hasta la
ejecucin de la instruccin
CC331

HOD

Espacio de direcciones lgico vs fsico


El

espacio de direcciones lgicas est


limitado a un espacio de direcciones
fsicas
Direccin lgica, generada por la UCP ( a veces
direccin virtual)
Direccin fsica, direccin que ve la unidad de
memoria

CC331

HOD

Unidad de Administracin de Memoria


MMU (Memory Management Unit)
Dispositivo hardware que mapea direcciones
virtuales a fsicas
En esquema MMU el valor del registro de
relocalizacin se suma a cada una de las
direcciones generadas por el proceso usuario
El programa de usuario trata con direcciones
lgicas, nunca ve direcciones fsicas reales

CC331

HOD

Relocalizacin dinmica utilizando registro de relocalizacin

CC331

HOD

Carga Dinmica
Todas las rutinas se almacenan en el disco
en formato de carga relocalizable
Una rutina slo se carga cuando se llama
Ventajas
Mejora la utilizacin del espacio de memoria, la
rutina que no se usa no se carga
Muy til cuando se requieren grandes cantidades
de cdigo para manejar situaciones que
ocurren con poca frecuencia

CC331

HOD

Enlace Dinmico
El enlace de pospone hasta el tiempo de
ejecucin
Se emplea generalmente con las rutinas de
sistema
Se incluye un fragmento de cdigo (stub) por
cada referencia a una rutina de la biblioteca en
el cdigo binario
El stub indica cmo localizar la rutina de
biblioteca residente en memoria
Al ejecutarlo, se reemplaza a si mismo con la
direccin de la rutina y la ejecuta directamente
Es particularmente til para libreras
CC331

HOD

Superposiciones
La dimensin de un proceso est limitada
por el tamao de la memoria fsica
Para lidiar con esta restriccin se utiliza la
tcnica de superposicin
Mantiene en memoria slo aquellas instrucciones y
datos que se requieren en instante determinado
Cuando se necesitan nuevas instrucciones, se cargan
en el espacio que antes ocupaban las que ya no se
necesitan
Se necesita de un manejador de superposiciones
El programador debe disear cada superposicin

CC331

HOD

10

Superposiciones - Ejemplo
Ensamblador de dos pasos:
Paso 1, genera la tabla de smbolos
Paso 2, genera el cdigo del lenguaje de
mquina
Tamaos de componentes:
Paso 1
70K
Paso 2
80K
Tabla de smbolos 20K
Rutinas comunes 30K

Si cargamos todo a la vez se necesitan 200K,


si slo tenemos 150K no se puede ejecutar
CC331

HOD

11

Superposiciones ensamblador de dos pasos

CC331

HOD

12

Intercambios (swapping)
Consiste en sacar temporalmente un
proceso de memoria a disco, por algn
motivo, y luego volverlo a incorporar
Almacenamiento auxiliar: debe ser rpido y
bastante grande para contener las copias de
imagen de memoria de todos los usuarios
La mayor parte del tiempo invertido en el
intercambio es tiempo de transferencia
Tiempo de transferencia es directamente
proporcional a la cantidad de memoria que se
intercambia

CC331

HOD

13

Intercambios (cont)

CC331

HOD

14

Asignacin Contigua
Memoria principal, dos particiones
En una reside el sistema operativo y el vector de
interrupciones, usualmente memoria baja
En la otra corrern los procesos de usuario

Asignacin de una sola particin


Un solo proceso de usuario en memoria
Se debe proteger la memoria del SO con algn
mecanismo, pero ahora incorporando el
registro de relocalizacin

CC331

HOD

15

Soporte hardware para registros relocalizacin y lmite

CC331

HOD

16

Asignacin Contigua (cont.I)


Asignacin de particiones mltiples
Se deben mantener varios procesos en
memoria, para conmutar rpidamente
Esquema ms sencillo:
Dividir en varias particiones de tamao fijo
Cada particin puede contener un solo proceso
Nivel de multiprogramacin est dado por el
nmero de particiones
Demasiado rgido, el tamao fijo de las particiones
podra no ser adecuado para un proceso
Fragmentacin interna: memoria que pertenece a
una particin; pero no se usa
CC331

HOD

17

Asignacin Contigua (cont.II)


Asignacin de particiones mltiples
Esquema bsico:
Inicialmente toda la memoria (de usuario) est
disponible como un gran hueco
Cuando llega un proceso, se busca el hueco de tamao
suficiente para contenerlo y slo se asigna la
cantidad de memoria necesaria para el proceso
Luego, cada asignacin de memoria genera un hueco
de menor tamao al que exista
Al cabo de un tiempo habr huecos diseminados por
toda la memoria
El SO mantiene informacin de:
a) particiones asignadas y b) particiones libres
CC331

HOD

18

Asignacin de particiones mltiples - Esquema

OS

OS

OS

OS

process5

process5

process5

process5

process9

process9

process8

process2

CC331

process10

process2

process2

HOD

process2

19

Asignacin de particiones mltiples - Ejemplo


0
SO
400K

2160K

Proceso

Memoria

Tiempo
UCP

P1

600K

10

P2

1000K

P3

300K

20

P4

700K

P5

500K

15

2560K

CC331

HOD

20

Asignacin de particiones mltiples


Ejemplo FCFS (memoria) y RR=5 (UCP)
0
SO

0
SO

400K
P1

SO
400K

P1
1000K

1000K

t=0
CC331

P3

SO

SO
400K

400K

P5

2000K

900K
1000K

1000K
P4

P4

2000K

P1

P2

P3

P3

P4

1700K

1700K

2000K

2000K

P3

P3

2300K

2300K

2300K

2300K

2560K

2560K

2560K

2560K

t=20

t=10
HOD

21

Estrategias Asignacin de Huecos


Primer ajuste
Asignar primer hueco que contenga al proceso
bsqueda puede comenzar desde el inicio o desde
donde se encontr el anterior

Mejor ajuste
Asignar hueco ms pequeo que contenga al
proceso
Ayudara mantener una lista de huecos ordenada
por tamao
Ojo, produce un hueco sobrante ms pequeo

Peor ajuste
Asignar hueco ms grande
Ojo, produce el hueco sobrante ms grande
CC331

HOD

22

Estrategias Asignacin (cont.)


Segn simulaciones
Primer y mejor ajuste, se comportan mejor que
peor ajuste (tiempo y utilizacin memoria)
Primer ajuste ms rpido que mejor ajuste
Padecen fragmentacin externa: existe espacio
suficiente para atender una solicitud, pero el
espacio no es contiguo
Anlisis estadsticos del primer ajuste muestran
que dados N bloques asignados, se perdern
otros 0.5*N debido a fragmentacin regla del
50%
Si se realiza asignacin en algn mltiplo de
bytes, puede ocurrir fragmentacin interna
CC331

HOD

23

Compactacin
Reduce la fragmentacin externa
Slo es posible si la relocalizacin es dinmica:
Se cambian el programa y los datos
Se asigna al registro base la nueva direccin base

Estrategias:
Mover todos los procesos hacia un extremo
Mover la menor cantidad de procesos
Mover la menor cantidad de bytes
Hay que evaluar costos vs sencillez de la estrategia

CC331

HOD

24

Compactacin (cont.)
0

SO

300K

P1

500K
600K

P2
400K

1000K
1200K

P3
300K

1500K
1900K

0
300K
500K
600K
800K

SO

300K

P1

500K

P2

600K

P3

1000K

P4

1200K

P4

SO
P1

300K

P2

500K

P4

600K

P3

Asignacin original
CC331

SO
P1
P2

900K

1200K

900K

900K

1500K
1900K

200K

2100K

2100K

2100K

Movidos 600K
HOD

Movidos 400K

P4
P3

2100K

Movidos 200K
25

Paginacin
Permite que la memoria utilizada por un proceso no
sea contigua, y que se le asigne siempre que
exista disponibilidad!!
Divide la memoria fsica en bloques de tamao fijo,
marcos (frames)
Tamao es potencia de 2 (512-8192 bytes)
Divide la memoria lgica en bloques del mismo
tamao, pginas
Mantiene pista de marcos libres
Para ejecutar un programa de n pginas, se
necesitan encontrar n marcos libre y cargarlo
Se utiliza una tabla de pginas para trasladar las
direcciones lgicas a fsicas
CC331

HOD

26

Paginacin (cont.I)
Direccin generada por UCP est dividida:
Nmero pgina (p): se utiliza como ndice para la
tabla de pginas del proceso, la cual contiene
la direccin base de cada pgina en memoria
(marco)
Desplazamiento (d): combinado con la direccin
base de la pgina, entrega la direccin de
memoria fsica
Para una pgina de tamao 2n, los n bits de
orden inferior corresponden a d y los restantes
de orden superior a p

CC331

HOD

27

Hardware de Paginacin

CC331

HOD

28

Ejemplo de Paginacin

CC331

HOD

29

Ejemplo

CC331

HOD

30

Planificacin a largo plazo


Cuando un proceso llega:
Se examina su tamao (en pginas)
Se comprueba si existen los suficientes marcos:
Si hay se asigna uno a uno y se construye la tabla de
pginas respectiva
Si no hay suficientes, se deja esperando al proceso en el
disco

No hay fragmentacin externa


Puede existir una pequea fragmentacin interna,
como mucho (n-1) bytes, si n es el tamao en
bytes de la pgina
Lo
normal
es
esperar
media
pgina
de
fragmentacin
CC331

HOD

31

Planificacin a largo plazo (cont.)

CC331

HOD

32

Implementacin Tabla de Pginas


Tabla de pgina se mantiene en memoria
Un registro apunta a la tabla de pgina (PTBR, page
table base register)
Otro registro indica el tamao de la tabla (PTLR,
page table length register)
Para cambiar entre tablas de pginas slo hay que
modificar PTBR
Este esquema requiere dos accesos a memoria, uno
para acceder la tabla de pginas y otro para
acceder la instruccin/dato respectivo

CC331

HOD

33

Implementacin Tabla de Pginas (cont.)


Solucin, usar memoria especial muy rpida:
registros asociativos (TLB, translation lookaside buffers)
Se cargan a priori algunas entradas de la
tabla de pgina en uso
El nmero de entradas en TLB son 64-1024

Cuando la UCP genera una direccin:


Se busca primero el nmero de pgina en TLB
Si no se encuentra se va a la tabla de pgina y
posteriormente se almacena la entrada en TLB
Los TLB pueden llegar a ser un 10% ms rpidos
que un acceso a memoria
CC331

HOD

34

Hardware de Paginacin con TLB

CC331

HOD

35

Tiempo de Acceso Efectivo


Sea,
tm, el tiempo de acceso a memoria
tr, el tiempo de acceso a un TLB
, la tasa de aciertos al TLB (es obvio que
est relacionado con el nmero de registros
asociativos)
Luego, el tiempo de acceso efectivo de un
sistema es:
TAE=(tm+ tr) + (2tm+ tr)(1-)
TAE =2tm+ tr-tm
CC331

HOD

36

Proteccin de Memoria
Se logra mediante bits de proteccin asociados
a cada marco en la tabla de pginas
Para proteccin de lectura-escritura
1, marco de slo lectura (proteccin escritura)
0, marco de lectura-escritura

Para indicar si la pgina es vlida o no:


v, pgina en espacio de direcciones lgicas
i, pgina fuera espacio de direcciones lgicas

CC331

HOD

37

Bits de Proteccin

CC331

HOD

38

Estructura Tabla de Pginas


Tabla de Pginas Jerrquica
Procesos ocupan ms memoria, ms pginas, es
decir, las tablas se hacen ms grandes!!
Luego, almacenar la tabla en memoria, quizs no
exista suficiente espacio contiguo
Una alternativa es dividir la tabla o sea,
paginar la taba de pginas!!
Hay que construir una tabla de pginas para la
tabla de pginas estructura a dos niveles
Se puede generalizar si la primera tabla se
vuelve muy grande

CC331

HOD

39

Esquema Tabla de Pginas a Dos Niveles

CC331

HOD

40

Ejemplo a Dos Niveles


Mquina con direcciones de 32bits y un
tamao de pgina de 4K=212
Nmero de pgina 20 bits
Desplazamiento en pgina 12 bits
Si paginamos la tabla de pgina, podemos dividir
el nmero de pgina en:
8 bits nmero de pgina
12 bits desplazamiento
Nmero pgina

CC331

desplazamiento

p1

p2

12

12
HOD

41

Esquema Traslacin Direccin

CC331

HOD

42

Estructura Tabla de Pginas (cont.I)


Tabla de Pginas Hash
Comn en espacios de direcciones > 32bits
Se aplica sobre nmero de pgina virtual, una
funcin de hash que entrega una entrada a la
tabla hash
Cada entrada de la tabla contiene una cadena
de pares (pgina,marco) que han colisionado
en esa posicin de la tabla
Se examina la cadena hasta calzar con el
nmero de pgina y se obtiene el marco

CC331

HOD

43

Esquema Tabla de Pginas Hash

CC331

HOD

44

Estructura Tabla de Pginas (cont.II)


Tabla de Pginas Invertida
Posee una entrada por cada marco de memoria
Cada entrada est formada por un nmero de
pgina y un identificador del proceso al que
pertenece la pgina
Basta realizar una bsqueda sobre la tabla
calzando (pid,p) y la posicin en la tabla nos
entrega la posicin en la memoria
Aminora la necesidad de memoria para
almacenar cada tabla de pgina, pero las
bsqueda son ms lentas

CC331

HOD

45

Esquema Tabla de Pginas Invertida

CC331

HOD

46

Pginas Compartidas
Se puede compartir cdigo
Una copia de cdigo slo lectura (reentrante),
puede compartirse entre varios procesos
Cdigo compartido debe aparecer en la misma
localizacin en el espacio de direcciones de
cada proceso
Muy til cuando se comparte: editores,
compiladores, etc
Cada proceso mantiene sus propias pginas de
datos y de cdigo privado
Las pginas de datos y cdigo privado pueden
aparecer en cualquier orden
CC331

HOD

47

Compartimiento de cdigo en paginacin

CC331

HOD

48

Segmentacin
Esquema de administracin de memoria que
soporta la visin del usuario de la memoria
Un programa es una coleccin de segmentos.
Un segmento es una unidad lgica, como:
Programa principal
Procedimiento o rutina
Funcin
Mtodo
Objeto
Bloques comunes
Variables locales, globales, etc
CC331

HOD

49

Visin del usuario de un programa

CC331

HOD

50

Visin lgica de la segmentacin


1
4

1
2
3

Espaciousuario

CC331

Espaciomemoriafsica

HOD

51

Arquitectura Segmentacin
Direccin lgica consiste de:
<nmero segmento, desplazamiento>
Tabla de segmento
Consiste de entradas del tipo: <base,lmite>
base, contiene la direccin fsica donde comienza el
segmento en memoria
lmite, especifica el largo del segmento
STBR (Segment Table Base Register), apunta a la
localizacin de la tabla de segmentos en memoria
STLR (Segment Table Length Register), indica el
nmero de segmentos utilizados por un programa
s, nmero de segmento, es correcto si (s < STLR)
CC331

HOD

52

Hardware Segmentacin

CC331

HOD

53

Ejemplo Segmentacin

CC331

HOD

54

Proteccin y Compartimiento de Segmentos


Con cada entrada en la tabla de segmentos, se
asocian:
bit de validacin y
bits de privilegios lectura/escritura/ejecucin

La proteccin es mucho ms natural, ya que, es muy


probable que todo el segmento se utilice de una
misma forma
Para compartir segmentos basta que las entradas de
la tabla de segmentos de dos o ms procesos
apunten a la misma localidades fsicas
Muy apropiado cuando se desean compartir
estructuras de datos y variables, basta definirlas
en un solo segmento

CC331

HOD

55

Segmentos Compartidos

CC331

HOD

56

Segmentacin Paginada
La segmentacin presenta el problema de fragmentacin
externa
Una forma de solucionarlo es paginar los segmentos
Entradas en la tabla de segmento apuntan a la direccin
base de la tabla de pginas de ese segmento
Existe una tabla de pginas por cada segmento definido
Si la tabla de segmento es muy grande se puede
paginar
Para implementar las tablas de pginas de los
segmentos se pueden utilizar las variantes ya vista
Se elimina la fragmentacin externa; pero se introduce
fragmentacin interna

CC331

HOD

57

Ejemplo Segmentacin Paginada - MULTICS

CC331

HOD

58

Ejemplo Segmentacin Paginada Intel386

CC331

HOD

59

Memoria Virtual
Separa la memoria lgica (usuario) de la
memoria fsica
Basta que una parte del proceso se encuentre en
memoria para su ejecucin
Espacio de direcciones lgicas ms grande que
el espacio de direcciones fsicas
Mayor nivel de multiprogramacin, utilizacin de
la UCP y dems recursos en general

Puede implantarse mediante


Paginacin por demanda
Segmentacin por demanda
CC331

HOD

60

Memoria Virtual

CC331

HOD

61

Paginacin por Demanda


Slo se carga una pgina en memoria cuando
se necesita
Menor actividad de entrada/salida
Menor necesidad de memoria
Respuestas ms rpidas
Ms usuarios
Se necesita apoyo de hardware, bit vlido/invlido

Cuando se hace referencia a una pgina:


Pgina invlida, se debe abortar
Pgina no est en memoria, se debe traer (fallo)
Pgina est en memoria, se utiliza (acierto)
CC331

HOD

62

Transferencia de memoria paginada a espacio contiguo en disco

CC331

HOD

63

Tabla de pgina cuando alguna pginas no estn en memoria

CC331

HOD

64

Fallo de Pgina
Marcar una pgina como invlida no tiene
ningn efecto si el proceso no la accede
Paginacin por demanda pura, todo proceso
provoca al menos un fallo de pgina
Si ocurre un fallo de pgina
Primero establecer si es una referencia vlida
Si es as, encontrar un marco libre
Traer pgina desde disco y ponerla en marco
Actualizar tabla de pgina
Reiniciar la instruccin interrumpida

CC331

HOD

65

Pasos para manejar un fallo de pgina

CC331

HOD

66

Y si no existen marcos libres


Reemplazo de pgina
Hay que encontrar una pgina en memoria
que no se est utilizando y sacarla a disco
para disponer de su marco, se necesita
Un algoritmo eficiente
Desempeo, algoritmo que provoque el menor
nmero de fallos de pginas en un futuro

Ojo, podra ocurrir que una misma pgina se


traiga a memoria muchas veces

CC331

HOD

67

Desempeo Paginacin por Demanda


Tasa de fallo, 0p1
Si p=0, no existen fallos de pgina
Si p=1, cada referencia es un fallo de pgina

Tiempo de acceso efectivo


TAE = (1-p)*tiempo acceso memoria
+ p*(overhead fallo de pgina
+ tiempo sacar pgina
+ tiempo traer pgina
+ overhead restante)
CC331

HOD

68

Ejemplo Paginacin por Demanda


Tiempo acceso memoria = 1 microseg
El 50% de las veces la pgina elegida se ha
modificado, necesita actualizacin
Tiempo sacar traer pgina = 10 miliseg
TAE = (1-p)*1 + p*(5000+10000)
1 + 14999p

CC331

HOD

69

Reemplazo de Pginas
Prevenir la sobre asignacin de memoria, es
claro que a mayor multiprogramacin, menos
marcos disponibles
Utilizar un bit sucio para reducir el overhead
del intercambio de pgina, as slo las
pginas modificadas se escriben
El reemplazo de pginas completa la separacin
entre memoria lgica y fsica
Finalmente se le ofrece al programador una
memoria lgica amplia sobre una memoria
fsica pequea

CC331

HOD

70

Necesidad de reemplazo de pgina

CC331

HOD

71

Reemplazo de Pginas Bsico


Encontrar ubicacin en disco de pgina
Buscar marco libre:
Si hay marco libre, utilizarlo
Caso contrario, utilizar algoritmo reemplazo
pgina para seleccionar un marco vctima
Escribir la pgina vctima en disco (bit sucio)
Ajustar las tablas de marcos y pginas

Cargar pgina deseada en marco libre,


modificar tablas de marcos y pginas
Reanudar proceso de usuario

CC331

HOD

72

Reemplazo de Pginas Bsico

CC331

HOD

73

Algoritmos de Reemplazo de Pginas


Debiera ser obvio que deseamos arroje una tasa
fallos de pgina baja
Evaluar cada algoritmo sobre una cadena
referencias a memoria y calcular el nmero
fallos de pgina
En nuestro caso utilizaremos la cadena
referencias a memoria:

de
de
de
de

1,2,3,4,1,2,5,1,2,3,4,5.
Ojo, son referencias a pgina; pero podramos trabajar
directamente con referencias a memoria

CC331

HOD

74

Fallo pginas vs Nmero marcos

CC331

HOD

75

Algoritmo FIFO

CC331

HOD

76

Algoritmo FIFO otro ejemplo


Cadena de referencia: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
3 marcos (3 pginas pueden estar en memoria a la vez por
proceso)

4 marcos

9fallos

10fallos

FIFO padece la Anomala de Belady


Ms marcos m fallos de pgina!!

CC331

HOD

77

Anomala de Belady

CC331

HOD

78

Algoritmo ptimo
Reemplazar la pgina que no se usar durante el
mayor periodo de tiempo
4 marcos
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
1

6fallosdepgina

3
4

Cmo conocer de antemano lo que se


referenciar?
Se utiliza ms bien para estudios comparativos
Un algoritmo x est dentro del 12,3% de lo ptimo

CC331

HOD

79

Algoritmo ptimo - ejemplo

CC331

HOD

80

Algoritmo LRU (Least Recently Used)


Menos recientemente utilizado, utiliza el pasado
reciente como aproximacin de lo que suceder
futuro cercano 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
1

2
3

Implementacin con contador

Cada entrada tabla de pginas se asocia un registro del


instante de uso, cada vez que se referencia se copia el
tiempo de reloj
Cuando hay un reemplazo se elige a la pgina con menor
tiempo de reloj

CC331

HOD

81

Algoritmo LRU - ejemplo

CC331

HOD

82

Algoritmo LRU (cont.)


Implementacin mediante pila
Mantener una pila de nmeros de pgina
Si la pgina se referencia, su nmero se saca de
la pila y se pone al comienzo
Pgina ms recientemente usada al comienzo
Pgina menos recientemente usada al final
No se necesita bsqueda para reemplazar

CC331

HOD

83

Algoritmo LRU implementacin con pila

CC331

HOD

84

Algoritmo Aproximados al LRU


Bit de referencia
A cada pgina se asocia un bit, inicialmente 0
Si la pgina se referencia poner bit a 1
Reemplazar pginas con bit 0 (no hay orden)
Usando un byte se obtiene algo de historia
Realizar cada cierto tiempo un desplazamiento bits

Segunda oportunidad
Se aplica FIFO, pero se examina el bit de referencia:
Si es 0 se reemplaza sino se da una segunda oportunidad,
se pone el bit en 0 y se avanza
Tiene plazo hasta que se de la vuelta completa para que
reciba una referencia. Si todos los bits estn en 1=>FIFO
CC331

HOD

85

Algoritmo Segunda Oportunidad

CC331

HOD

86

Algoritmos con Contadores


Mantener un contador del nmero de
referencias por cada pgina
LFU (Least Frequently Used), reemplaza la
pgina con el contador menor
Presenta
problemas
con
pginas
muy
referenciadas al principio del proceso
Desplazar bits a la derecha cada cierto tiempo

MFU (Most Frequently Used), reemplaza la


pgina con el contador mayor
Se basa en que una pgina recin llegada tiene
un contador menor
CC331

HOD

87

Asignacin de Marcos
Cada proceso necesita un nmero mnimo
de pginas
El nmero mnimo de marcos est definido por la
arquitectura del computador
Ejemplo:
Instruccin de transferencia que ocupa ms de una
palabra, luego puede ocupar parcialmente dos
pginas
Cada operando podra ser una referencia indirecta, es
decir, hasta 2 marcos por operando
Luego en el peor caso esta instruccin requerira que
estn en memoria un mximo de 6 marcos
Y en el mejor caso un mnimo de?
CC331

HOD

88

Algoritmos de Asignacin de Marcos


Asignacin fija
Asignacin equitativa, igual cantidad de marcos por proceso
Asignacin proporcional, de acuerdo a su tamao:
si size of process pi
S si
m total number of frames
s
ai allocation for pi i m
S
m=64
si =10
s 2 =127
10
a1=
645
137
127
a2 =
6459
137
CC331

HOD

89

Algoritmos de Asignacin de Marcos (I)


Asignacin por prioridad
Utilizar
un
esquema
de
asignacin
proporcional; pero en vez de usar tasas de
tamao, usar tasas de prioridades
Si el proceso Pi genera un fallo de pgina:
Seleccionar uno de sus marcos para el reemplazo
Seleccionar uno de los marcos de un proceso con
menor prioridad para el reemplazo

CC331

HOD

90

Asignacin Global vs Local


Reemplazo global
Proceso selecciona un marco de reemplazo desde
el conjunto total de marcos; un proceso puede
seleccionar un marco ocupado por otro proceso
Una consecuencia es que los procesos no pueden
controlar su propia tasa de fallos de pgina

Reemplazo local
Proceso selecciona un marco de reemplazo desde
su propio conjunto de marcos asignados
Pginas no tiles podran permanecer en memoria
por ms tiempo

CC331

HOD

91

Hiperpaginacin
Si

un proceso no posee suficientes


marcos, su tasa de fallos de pgina ser
muy alta
El proceso pasar mucho tiempo esperando
por reemplazo de pginas
La UCP tendr menor utilizacin
El sistema operativo pensar que debe
aumentar el nivel de multiprogramacin
Agregar otro proceso a la contienda por marcos!

El problema se agudiza, porque


de la UCP seguir bajando el
en hiperpaginacin
CC331

HOD

la utilizacin
sistema est

92

Grfica Hiperpaginacin

CC331

HOD

93

Hiperpaginacin (cont.I)
Un proceso se encuentra en hiperpaginacin
si emplea ms tiempo paginando que
haciendo trabajo til
Podra
limitar
los
efectos
de
la
hiperpaginacin con un algoritmo de
reemplazo local:
Un proceso que entre en hiperpaginacin no podr
llevar a otros a este estado
Sin embargo, afectar el tiempo promedio de
servicio de un fall de pgina

CC331

HOD

94

y cmo evitar la hiperpaginacin?


Bsico, hay que ofrecer al proceso la suficiente
cantidad de marcos
Cmo saber cuntos marcos es suficiente?
Modelo de localidad
Localidad, conjunto de pginas que se utilizan
conjuntamente
Un programa est compuesto de varias localidades que se
pueden superponer
Durante su ejecucin, un proceso pasa de una localidad a
otra
Ej, al llamar una subrutina o funcin
Postula que la hiperpaginacin ocurre porque:
tamao localidades > tamao total de la memoria
CC331

HOD

95

Localidad en un modelo de referencia a memoria

CC331

HOD

96

Modelo rea Activa


Se basa en la suposicin de que existen
localidades
Parmetro , define ventana del rea activa
Si se examinan referencias ms recientes, se
puede obtener el conjunto de pginas que
constituyen el rea activa (WS:workink set)
As, el rea activa es una aproximacin de la
localidad del programa

CC331

HOD

97

Modelo rea Activa (=10)

CC331

HOD

98

Modelo rea Activa (cont.)


Si TAAi es el tamao del rea activa de Pi, la
demanda total de marcos ser:
D = TAAi
Note que:
Si es muy pequeo, no podr cubrir la localidad
Si es muy grande, cubrir varias localidades
Si -> , cubrir todo el programa

if D > m hiperpaginacin
Poltica, si D > m, suspender algn proceso
Si D < m se puede admitir otro proceso, siempre
que (TAA+D)=D m

CC331

HOD

99

Modelo rea Activa - Implementacin


El problema es el seguimiento del rea activa
La ventana del rea activa es cambiante

Aproximacin mediante timer+bits referencia


Ejemplo, =10000 unidades de tiempo (ut)
Un timer interrumpe cada 5000 ut
Se mantienen 2 bits de referencia por cada pgina
En cada interrupcin se copia el bit de referencia a memoria
y lo limpia para el prximo intervalo
Si uno de los bits en memoria = 1 => pgina en rea activa

No es totalmente precisa ya que no se puede


establecer cuando ocurri un referencia
Obvio, una mejora pasa por aumentar bits histricos

CC331

HOD

100

Frecuencia de Fallos de Pgina


FFP es una estrategia ms directa para
controlar la hiperpaginacin
Medir la tasa de fallos de pgina de cada proceso
Definir lmites inferior y superior para tasa deseada
Si tasa proceso > lmite superior => dar marco
Si tasa proceso < lmite inferior => quitar marco
Si aumenta la tasa de fallos y no hay marcos
disponibles, habr que elegir un proceso y
suspenderlo

CC331

HOD

101

Frecuencia de Fallos de Pgina

CC331

HOD

102

Prepaginacin
La paginacin por demanda pura provoca un
gran nmero de fallos de pgina al comienzo
Se trata de introducir a memoria la localidad inicial
Tambin ocurre cuando se reanuda un proceso
intercambiado a disco

La prepaginacin intenta evitar lo anterior:


Carga a priori un conjunto de pginas
Puede ser ventajosa en algunos casos; pero si las
pginas no se usan en el futuro
Siempre que coste de la prepaginacin es menor al
coste de los fallos de pgina que se evitan
CC331

HOD

103

Tamao de Pgina
Tamao de la tabla de pgina
A mayor tamao de pgina, menor entradas en la tabla de
pgina de cada proceso tablas pequeas

Fragmentacin
A menor tamao de pgina, menor fragmentacin interna
por proceso

Overhead de E/S
Tpo e/s = posicionamiento+latencia+transferencia
Tpo transferencia es proporcional al tamao de pgina,
pero:
A 2MB/s, toma 0.2ms transferir 512B, lat=8ms y pos=20ms
Luego, pgina de 512B se lee en 28.2ms y 1024B en 28.4ms
Y dos pginas de 512B en 56.4ms!!

A mayor tamao de pgina menos overhead de e/s


CC331

HOD

104

Tamao de Pgina (cont.)


Localidad
A menor tamao de pgina mejor localidad
Slo se traen a memoria lo que realmente se
usar
sin embargo, a menor tamao de pgina
aumenta el nmero de fallos de pgina

La tendencia histrica va hacia mayores


tamaos de pginas

CC331

HOD

105

Alcance de TBL
Alcance TBL, cantidad
accesible desde la TBL

de

memoria

nro.registros * tamao pgina

Idealmente, el rea activa completa de un


proceso debera almacenarse en los
registros TBL, as se mejora TAE
En otro caso, el desempeo incluso podra
ser peor al caso de no tener TBL

CC331

HOD

106

Estructura de los Programas


A veces el rendimiento del sistema se puede
mejorar, programando de manera adecuada,
supongamos:
int A[][] = new int[1024][1024];
en un sistema con tamao de pgina 1024*(int), cada fila se
almacena en una pgina:

CC331

Programa 1

for (j = 0; j < A.length; j++)


for (i = 0; i < A.length; i++)
A[i,j] = 0;
1024 x 1024 fallos de pgina

Programa 2

for (i = 0; i < A.length; i++)


for (j = 0; j < A.length; j++)
A[i,j] = 0;
1024 fallos de pgina
HOD

107

Fijacin de Pginas para E/S


En ocasiones algunas pginas deben fijarse
en memoria, por ejemplo:
Proceso emite solicitud de e/s y espera concrecin
Otro proceso toma la UCP y se genera un fallo de
pgina que es satisfecho por marcos que
contiene el buffer de datos del proceso que
espera por e/s
Se efecta la e/s para la direccin especificada,
luego los datos fluyen hacia memoria!!
Dos soluciones
Nunca efectuar e/s a memoria de usuario, slo a la de sistema
Usar bit de fijacin de pgina en memoria

CC331

HOD

108

Fijacin de Pginas para E/S

CC331

HOD

109

Fijacin de Pginas
Para evitar sacar pginas recin cargadas, por
ejemplo, cuando ocurre un fallo de pgina:
Proceso espera en dispositivo de paginacin
Concluye la carga de la pgina y el proceso se
reintegra a la cola de listo
Si el proceso es de baja prioridad, mientras
espera en la cola listo, la pgina que recin
carg puede ser elegida para satisfacer otro
fallo de pgina:
Pgina no modificada (bit limpio)
Pgina no referenciada

Usar bit de fijacin


No olvidarse de desactivarlo!!
CC331

HOD

110

Sistema de Archivos
Espacio contiguo de direcciones lgicas
Conjunto de informacin relacionada que
ha sido definido por su creador
Tipos de archivos
Programas
Datos
Numricos
Caracteres
Binarios

CC331

HOD

111

Estructura de un Archivo
Ninguna, slo secuencia de palabras o bytes
Registro simple
Lneas
Largo variable
Largo fijo

Estructuras complejas
Archivo fuente, serie de funciones y subrutinas organizadas
mediante declaraciones y enunciados ejecutables
Archivo objeto, secuencia de bytes organizados en bloques
de registros para el cargador

Sistema operativo puede o no apoyar los tipos:


Evitar ciertas operaciones sobre ellos y dar soporte a otras
Tamao del SO crece y debe actualizarse para nuevos tipos
CC331

HOD

112

Tipos de Archivos Nombre, Extensin

CC331

HOD

113

Atributos de un Archivo
Nombre, nica informacin que se mantiene en
forma legible para humanos
Tipo, informacin necesaria para sistemas que
apoyan diferentes tipos
Ubicacin, apuntador a la ubicacin del archivo
sobre un dispositivo
Tamao, tamao actual (en
bytes, palabras o
bloques) y algunas veces el mximo permitido
Proteccin, informacin de control de acceso:
lectura, escritura y ejecucin
Hora, fecha e identificacin proceso, datos para
la proteccin, seguridad y supervisin del uso
CC331

HOD

114

Operaciones sobre Archivos


Crear, dos pasos: encontrar espacio y anotar la nueva entrada
en el directorio
Escribir, determinar la ubicacin del archivo y la posicin de
escritura actual
Leer, determinar la ubicacin del archivo y la posicin de
lectura actual
Reposicionamiento de archivo, la posicin actual se
modifica para que apunte al inicio del archivo
Eliminacin, determinar posicin del archivo, liberar el
espacio y borrar la entrada en el directorio
Truncado, determinar posicin de truncado y liberar espacio a
partir de ah, modificar informacin longitud
Abrir(F), buscar en la estructura de directorio sobre el disco la
entrada F y moverla a memoria
Cerrar(F), mover el contenido de la entrada F en memoria a
la estructura de directorio sobre el disco
CC331

HOD

115

Implementacin en Sistemas Multiusuarios


Sistema operativo utiliza dos niveles de tablas
internas:
Tabla por proceso
Almacena informacin relacionada al uso de los archivos
Puntero a la posicin actual de cada archivo, que indica
la localizacin de la prxima lectura o escritura
Derechos de acceso por cada archivo
Puntero a la entrada del archivo en la tabla de sistema

Tabla de sistema
Almacena informacin de todos los archivos abiertos,
independiente del proceso que los usan
Localizacin del archivo sobre el disco, fecha acceso,
tamao archivo
Contador de aberturas, cuando es cero se elimina
entrada
CC331

HOD

116

Mtodos de Acceso
Acceso secuencial
Read next
Write next
Reset
No hay lectura despus de la ltima escritura (eof)

CC331

HOD

117

Mtodos de Acceso (cont.)


Acceso directo (n nmero de bloque relativo)
Read n
Write n
Posicin a n, read next, write next
Rewrite n

CC331

HOD

118

Otros Mtodos de Acceso


Los mtodos adicionales, generalmente, involucran
la construccin de un ndice para el archivo

CC331

HOD

119

Estructura de Directorio
Es una coleccin de nodos que contienen
informacin de todos los archivos
Tabla de smbolos donde el SO encuentra un
archivo utilizando su nombre simblico
Directorio

Archivos
F1

CC331

F2

F3

HOD

F4
Fn
120

Organizacin Tpica del Sistema de Archivos


Tanto la estructura de directorio como los archivos
residen en disco

CC331

HOD

121

Informacin en un Directorio de Dispositivo


Nombre
Tipo
Localizacin
Largo actual
Largo mximo
Fecha del ltimo acceso
Fecha de la ltima actualizacin
Identificacin del propietario
Informacin de proteccin

CC331

HOD

122

Operaciones sobre un Directorio


Bsqueda
Buscar la entrada correspondiente a un archivo
Buscar archivos que se ajusten a un patrn

Creacin de archivo
Implica agregar una entrada al directorio

Borrar un archivo
Eliminar una entrada del directorio, liberar espacio

Listado del directorio


Listar el contenido de cada una de las entradas

Renombrar un archivo
Cambiar el nombre para mejor representatividad

Copia de seguridad
Por razones de confiabilidad, se debe guardar el contenido
y estructura del sistema de archivos a intervalos
regulares
CC331

HOD

123

Organizar un Directorio (lgicamente) para


Eficiencia
Localizar un archivo rpidamente

Nombres adecuados para los usuarios


Dos usuarios podran tener el mismo nombre
para archivos diferentes
El mismo archivo podra tener varios nombres
diferentes

Agrupamiento
Agrupamiento
lgico
de
archivos
propiedades comunes, ejemplo:

por

Todos los programas Java


Todos los juegos, etc.
CC331

HOD

124

Directorio de un solo nivel


Slo un directorio para todos los usuarios
Problemas de nombramiento de archivos
Problemas de agrupamientos de archivos

CC331

HOD

125

Directorio de dos niveles


Un directorio separado para cada usuario
Nombre de ruta (path)
Puede existir un mismo nombre de archivo para usuarios
diferentes
Bsqueda ms eficiente
No existen posibilidades de agrupamientos

CC331

HOD

126

Directorio con Estructura de rbol

CC331

HOD

127

Organizar un Directorio (lgicamente) para


Eficiencia de bsqueda
Capacidad de agrupamiento
Directorio actual (de trabajo)
Cada
usuario
puede
crear
subdirectorios

sus

propios

Funciones de crear y eliminar subdirectorios

Nombre archivo + nombre ruta, es nico


Mediante un bit en cada entrada de la tabla de
directorio se puede diferenciar
0 es un archivo
1 es un directorio

CC331

HOD

128

Directorio de Grafo Acclico


Tienen subdirectorios y archivos compartidos

CC331

HOD

129

Directorio de Grafo Acclico


Enlace, apuntador a otro archivo o directorio
Se puede implementar como un ruta absoluta o
relativa

Estructura ms flexible; pero ms compleja:


Un archivo puede tener varios nombres de rutas
absolutas y si se recolectan estadsticas
Eliminacin de archivos
Puede dejar apuntadores sueltos
Conservar el archivo hasta que se eliminen todas sus
referencias: lista de referencias contador de
referencias

CC331

HOD

130

Directorio de Grafo General

CC331

HOD

131

Directorio de Grafo General


Cmo garantizar que no existan ciclos?
Permitir solamente enlaces a archivos no a
subdirectorios
Recoleccin de basura:
Implica recorrer el sistema de archivos y marcar
todo aquello a lo que se pueda acceder
En un segundo paso, recopila todo lo no marcado
para dejarlo como espacio libre
Es un mecanismo muy costoso

Cada vez que se agrega un enlace, utilizar un


algoritmo de deteccin de ciclos

CC331

HOD

132

Montando Sistemas de Archivos


Un sistema de archivos debe montarse
antes de poder utilizarse
Se monta en un punto de montura
Puede ser un directorio vaco
En caso de ser un directorio ocupado, su
contenido se oscurece y slo queda
disponible el sistema montado
Una vez que se desmonta, el contenido del
directorio vuelve a estar disponible

CC331

HOD

133

Montando Sistemas de Archivos


Punto de montura

Sistema de archivos existente


Paticin no montada
CC331

HOD

134

Compartir Archivos
Compartir archivos y directorios
sistemas multiusuarios es deseable

sobre

Para implementarla el sistema debe mantener


ms atributos del archivo/directorio
Se puede realizar mediante un esquema
propietario/grupo

En sistemas distribuidos, los archivos son


compartidos por medio de la red
Directorios remotos se observan como locales
Tambin mediante esquema Cliente-Servidor

CC331

HOD

135

Semntica de Consistencia
Especifica la semntica de varios usuarios
que acceden simultneamente a un archivo
Semntica Unix
Escritura sobre un archivo son visibles de inmediato para
otros usuarios
Se comparte el apuntador a la posicin actual, cualquier
movimiento afecta a todos los usuarios

Semntica de sesiones
Escritura sobre archivo no son visibles de inmediato para
otros usuarios
Una vez que se cierra el archivo, cualquier nueva sesin
reflejar los cambios

Semntica de archivos compartidos inmutables


Si se declara como compartido no se puede modificar
CC331

HOD

136

Proteccin
El propietario o creador del archivo debe
ser capaz de controlar:
Qu se puede realizar sobre el archivo
Y por quin

Tipos de accesos
Lectura, lee desde el archivo
Escritura, escribe o sobre-escribe el archivo
Ejecucin, ejecuta el archivo
Anexin, escribe nueva informacin al final
Eliminacin, borra el archivo
Listado, lista el nombre y atributos del archivo
CC331

HOD

137

Lista de Accesos y Grupos


Modo de acceso: lectura, escritura, ejecucin
Tres clases de usuario
rwx
Acceso propietario
Acceso grupo
Acceso pblico

6
1

111
110
001

Habr que definir un mecanismo para crear


grupos: agregar, eliminar integrantes
Habr
que
definir
operaciones
sobre
asignacin de derechos de acceso
Ejemplo chmod 761 listado.txt

CC331

HOD

138

También podría gustarte