TEMA 3 SISTEMAS OPERATIVOS. GESTIÓN DE MEMORIA ..

Anuncio
TTE
EM
MA
A 33
S
SIIS
STTE
EM
MA
AS
SO
OP
PE
ER
RA
ATTIIV
VO
OS
S.. G
GE
ES
STTIIÓ
ÓN
ND
DE
EM
ME
EM
MO
OR
RIIA
A..
11.. IIN
NTTR
RO
OD
DU
UC
CC
CIIÓ
ÓN
N
22.. M
MO
OD
DE
ELLO
OS
SB
BÁ
ÁS
SIIC
CO
OS
SD
DE
EA
AS
SIIG
GN
NA
AC
CIIÓ
ÓN
ND
DE
EM
ME
EM
MO
OR
RIIA
A
22..11 M
MO
ON
NO
OP
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
N
22..22 M
MU
ULLTTIIP
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
N
22..22..11 M
MU
ULLTTIIP
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NC
CO
ON
NP
PA
AR
RTTIIC
CIIO
ON
NE
ES
S
FFIIJJA
AS
S
22..22..22 M
MU
ULLTTIIP
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NC
CO
ON
NP
PA
AR
RTTIIC
CIIO
ON
NE
ES
S
V
VA
AR
RIIA
AB
BLLE
ES
S
22..22..33 A
AD
DM
MIIN
NIIS
STTR
RA
AC
CIIÓ
ÓN
ND
DE
E LLA
AM
ME
EM
MO
OR
RIIA
A
** A
AD
DM
MIIN
NIIS
STTR
RA
AC
CIIÓ
ÓN
ND
DE
E LLA
AM
ME
EM
MO
OR
RIIA
AC
CO
ON
N
M
MA
AP
PA
AD
DE
EB
BIITTS
S
** A
AD
DM
MIIN
NIIS
STTR
RA
AC
CIIÓ
ÓN
ND
DE
E LLA
AM
ME
EM
MO
OR
RIIA
AC
CO
ON
N
LLIIS
STTA
AS
SE
EN
NLLA
AZZA
AD
DA
AS
S
** A
AD
DM
MIIN
NIIS
STTR
RA
AC
CIIÓ
ÓN
ND
DE
E LLA
AM
ME
EM
MO
OR
RIIA
AC
CO
ON
N
TTA
AB
BLLA
AD
DE
EP
PA
AR
RTTIIC
CIIO
ON
NE
ES
S // TTA
AB
BLLA
AS
SD
DE
EÁ
ÁR
RE
EA
AS
S
LLIIB
BR
RE
ES
S
33.. M
ME
EM
MO
OR
RIIA
AA
AU
UX
XIILLIIA
AR
R
33..11 O
OV
VE
ER
RLLA
AY
YS
S
33..22 M
ME
EM
MO
OR
RIIA
AV
VIIR
RTTU
UA
ALL
33..22..11 P
PA
AG
GIIN
NA
AC
CIIÓ
ÓN
N
33..22..22 S
SE
EG
GM
ME
EN
NTTA
AC
CIIÓ
ÓN
N
33..22..33 S
SE
EG
GM
ME
EN
NTTA
AC
CIIÓ
ÓN
N // P
PA
AG
GIIN
NA
AC
CIIÓ
ÓN
N
11..
IIN
NTTR
RO
OD
DU
UC
CC
CIIÓ
ÓN
N
Para gestionar el S.O la memoria principal del ordenador debe mantener
una estructura de datos donde almacena la información sobre que zona de la
memoria ocupa cada proceso, así como de las zonas de la memoria libres. De
esta forma, cuando el S.O reciba una solicitud de creación de un proceso debe
almacenar su código en una zona libre de la memoria (si hay) registrándose la
zona de memoria que ocupa el nuevo proceso como ocupada. De igual forma,
cuando un proceso finaliza hay que registrar que la zona de memoria que
ocupaba queda como libre.
(* DEBEREMOS DIFERENCIAR ENTRE SISTEMA MONOPROGRAMADO Y
MULTIPROGRAMADO*)
La gestión de la memoria de un S.O monoprogramado es mucho más
sencilla que la de uno multiprogramado, ya que en éste la memoria principal
sólo es compartida por él y por el único programa en ejecución. En un S.O
multiprogramado la Memoria Principal se comparte entre varios programas.
La parte del S.O que se encarga de la gestión de la memoria se llama
Administrador de la Memoria. Su labor es la de llevar el control de qué partes
de la memoria están en uso y cuales no lo están, asignar memoria a procesos
cuando la necesiten y retirárselas cuando terminen, y administrar el intercambio
entre la MP y el disco cuando la MP no baste para contener todos los procesos.
Ahora veremos los distintos esquemas de Administración de la Memoria
desde la más simple hasta la más compleja.
22..
M
MO
OD
DE
ELLO
OS
S B
BÁ
ÁS
SIIC
CO
OS
S D
DE
E A
AD
DM
MIIN
NIIS
STTR
RA
AC
CIIÓ
ÓN
N D
DE
E LLA
A
M
ME
EM
MO
OR
RIIA
A
22..11
M
MO
ON
NO
OP
PR
RO
OG
GR
RA
AM
MA
AC
CIIO
ON
N
El esquema de Administración de la Memoria más simple posible
consiste en tener un solo proceso en la memoria a la vez y en permitir
que ese proceso use toda la memoria.
La memoria se divide entre el S.O y un solo proceso de usuario:
SISTEMA
OPERATIVO
PROG. DE
USUARIO
22..22
M
MU
ULLTTIIP
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
N
Aunque la monoprogramación a veces se utiliza en ordenadores
pequeños, rara vez se emplea en macrocomputadoras con múltiples
usuarios. Las razones por las que se usa la multiprogramación son:
1. Para facilitar la programación de una aplicación dividiéndola en dos o
más procesos.
2. Para que los grandes ordenadores proporcionen servicio interactivo a
varias personas en forma simultánea. (Lo cual requiere tener más de
un proceso en la memoria al mismo tiempo).
3. Porque la mayoría de los procesos pasan una fracción sustancial de
su tiempo esperando a que termine la E/S del disco.
4. Para mejorar la utilización de la Unidad Central de Proceso (CPU), ya
que cuando un proceso está en memoria no está todo el tiempo
haciendo uso de la CPU.
22..22..11 M
MU
ULLTTIIP
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NC
CO
ON
NP
PA
AR
RTTIIC
CIIO
ON
NE
ES
S FFIIJJA
AS
S
Para que la Memoria Principal pueda albergar más de un proceso,
ésta se divide en cierto número de partes posiblemente distintas y de
tamaño constante.
Cuando llega un trabajo, éste se puede colocar en una lista de
espera de entrada hasta que se tenga la menor partición posible, lo
suficientemente grande para contenerlo. Cualquier espacio que no utilice
un trabajo en una partición se pierde. La finalización del proceso libera la
partición.
Se pueden tener listas de espera separadas para cada partición,
pero la desventaja de ordenar los trabajos que llegan en listas de espera
separadas se vuelve evidente cuando la lista de espera de una partición
grande está vacía pero la de una partición pequeña está repleta.
Partición 3
Partición 2
Partición 1
S.O
Ej. Particiones Fijas con listas de Entrada separadas para cada partición.
Una organización alternativa consiste en conservar una sola lista de
espera:
Partición 3
Partición 2
Partición 1
S.O
Ej. Particiones Fijas con una sola lista de espera única.
En los sistemas con particiones fijas existen las denominadas:
Fragmentación interna: Desperdicio de la memoria porque el tamaño
de la petición no se adapta a la de la partición, normalmente siendo el de la
petición menor que el de la partición, y, dependerá del tamaño de los
procesos que entren.
Fragmentación externa: Ante una petición de tamaño X, no se puede
atender aunque exista memoria suficiente por pertenecer ésta a particiones
diferentes.
La forma de controlar las particiones, es una estructura de datos: TABLA
(control del uso de la memoria): Existe una fila por partición con la posición
base, tamaño y estado (ocupada o no).
22..22..22 M
MU
ULLTTIIP
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NC
CO
ON
NP
PA
AR
RTTIIC
CIIO
ON
NE
ES
SV
VA
AR
RIIA
AB
BLLE
ES
S
En la práctica, las particiones fijas no son atractivas cuando la memoria
es escasa porque una parte muy grande de ella es desperdiciada por
programas que son menores que sus particiones. En su lugar se utiliza un
algoritmo diferente para el manejo de la memoria: particiones variables.
El tamaño de Memoria Principal ocupado por cada proceso es el exacto
que éste solicita.
S.
Pa.
(a)
Entra Pa.
(b)
EntraPb.
S.
Pa.
S.
Pa.
S.
O
Pa.
S.
O
Pa.
Pb.
Pb.
P
Pb.
P
P
Pb.
Hueco
(c)
Entra Pc.
(d)
Entra Pd.
P
(e)
Sale Pc
Si quiere entrar un proceso con un tamaño mayor que cualquier hueco que
queda libre aparecera un Problema: FRAGMENTACIÓN EXTERNA. Se
produce un desperdicio de memoria debido a que quedan trozos de memoria
pequeños y no contiguos, y que no pueden ser usados por otros programas por
ser demasiado pequeños.
Solución:
* Fusión de huecos adyacentes: Dos huecos contiguos se unen en uno solo.
Esto se realiza en cada liberación de memoria, si es posible.
* Compactación: Se desplazan todas las zonas ocupadas de memoria a uno
de los extremos.
Inconvenientes:
* Consume recursos del sistema (tiempo de CPU).
* Relocalización de los programas.
* El sistema se detiene cuando se realiza la compactación. Tiempo de
respuesta variable.
* Si el cambio de trabajos es grande, es necesario compactar
frecuentemente (Demasiado).
22..22..33 A
AD
DM
MIIN
NIIS
STTR
RA
AC
CIIÓ
ÓN
ND
DE
E LLA
AM
ME
EM
MO
OR
RIIA
A (Para sistemas de particiones
variables)
En términos generales existen tres maneras de llevar el control del uso
de la memoria:
- Mapa de bits.
- Listas enlazadas.
- Tablas de particiones / tablas de áreas libres.
** A
AD
DM
MIIN
NIIS
STTR
RA
AC
CIIÓ
ÓN
ND
DE
E LLA
AM
ME
EM
MO
OR
RIIA
AC
CO
ON
NM
MA
AP
PA
AD
DE
EB
BIITTS
S
Con un mapa de bits, la memoria se divide en unidades de asignación,
quizás tan pequeñas como unas cuantas palabras y tal vez tan grandes como
varios Kilobytes. En correspondencia con cada unidad de asignación hay un bit
en el mapa de bits, que es 0 si la unidad está libre y 1 si está ocupada (o
viceversa).
Ejemplo:
Pa
Pc
111111
110001
100001
111110
011110
H Pb H
Pe
H
Pf
Mapa de Bits
La elección del tamaño de la unidad de asignación es un aspecto
importante en el diseño. Cuanto menor es la unidad de asignación, tanto mayor
es el mapa de bits. Si la unidad de asignación se escoge grande se puede
desperdiciar memoria en la última unidad si el tamaño del proceso no es
múltiplo exacto de asignación.
Problema:
Cuando se haya decidido traer un proceso de ‘K’ palabras a la memoria,
el administrador de la memoria deberá buscar en el mapa de bits ‘K’ bits 0
consecutivos en el mapa y esta búsqueda es una operación lenta.
** A
AD
DM
MIIN
NIIS
STTR
RA
AC
CIIÓ
ÓN
N
E
EN
NLLA
AZZA
AD
DA
AS
S..
D
DE
E
LLA
A
M
ME
EM
MO
OR
RIIA
A
C
CO
ON
N
LLIIS
STTA
AS
S
Otra manera de llevar el control de la memoria es mediante
conservación de una lista enlazada de segmentos de la memoria asignados y
libres, donde un segmento es un proceso o una cavidad entre dos procesos.
Campos de la Lista :
Proceso/hueco
Dirección
Base
Tamaño
Puntero
siguiente
Ejemplo :
0K 3K
Pa
Pa
0 3
8K 11K 13K 17K
Pc
H Pb H
Pc 3 5
23K 25K 29K
Pe
H
Pf
H 8 3
Pb11 2
........
Cuando los procesos y los huecos se conservan en una lista clasificada
por dirección, se pueden emplear varios algoritmos para asignar memoria para
un proceso recién creado o intercambiado. Se supone que el administrador de
la memoria sabe cuánta memoria debe asignar.
Algoritmo del primer ajuste
El administrador de la memoria rastrea la lista de segmentos hasta que
hay una cavidad que sea lo suficientemente grande. Después la cavidad se
divide en 2 partes, una para el proceso y una para la memoria no usada, salvo
en el caso improbable de un ajuste exacto. Es un algoritmo veloz porque busca
en la lista lo menos posible.
Algoritmo del siguiente ajuste
Funciona igual que el de antes, salvo que la siguiente vez que es
llamado éste empieza a buscar a partir de donde se quedó, en vez desde
siempre el inicio, como lo hace el primer ajuste.
Algoritmo el que mejor se ajusta
Busca en toda la lista y toma la cavidad más pequeña que sea ocupada.
Este algoritmo intenta hallar una cavidad que está próxima al tamaño real que
se necesita.
Problema: Es más lento que los anteriores y da lugar a un mayor gasto
de la memoria porque tiende a llenar la memoria con cavidades muy pequeñas
sin utilizar.
Algoritmo el que peor se ajusta
Toma siempre la cavidad más grande disponible, de manera que la cavidad
dividida sea lo suficientemente grande para ser útil.
Algoritmo de ajuste rápido
Los huecos están agrupados por tamaños.
** A
AD
DM
MIIN
NIIS
STTR
RA
AC
CIIÓ
ÓN
N D
DE
E LLA
A M
ME
EM
MO
OR
RIIA
A C
CO
ON
N TTA
AB
BLLA
A D
DE
E
P
A
R
T
I
C
I
O
N
E
S
/
T
A
B
L
A
S
D
E
Á
R
E
A
S
L
I
B
R
E
S
PARTICIONES / TABLAS DE ÁREAS LIBRES
En este tipo de estructuras existen dos tablas distintas: una para
procesos/huecos y otra sólo para huecos. En la liberación de procesos por
tanto se actualizan las dos tablas.
S.O.
Nº partición
Pa
Pb
Pc
4
Tabla de particiones
Comienzo
Tamaño
40
60
100
100
200
30
230
26
Estado
Asignada
Asignada
Asignada
Libre
Nº partición
1
Tabla de Áreas Libre
Comienzo
Tamaño
230
26
Estado
Libre
0K
40K
Pa = 60 K
100K
S.O.
Pb
= 100K
Pc = 30 K
200K
230K
El S.O. no se cuenta al contar el nº de particiones.
Hueco = 26
256K
La búsqueda de espacio libre, comienza en la tabla de Áreas libre.
33.. M
ME
EM
MO
OR
RIIA
AA
AU
UX
XIILLIIA
AR
R
La Memoria Principal tiene capacidad limitada, lo que conlleva restricciones
en cuanto:
a) Número de procesos que pueden estar en MP en ejecución concurrente. Se
presenta en los sistemas de multiprogramación y se resuelve con la técnica
de swapping.
b) Limitar la capacidad del código de los programas que, en principio, no
puede ser superior a la capacidad física de la memoria principal. Para
resolver este problema existen dos soluciones:
-
Overlays
Memoria virtual.
33..11 O
OV
VE
ER
RLLA
AY
YS
S
Antes con programas que eran muy grandes y no cabían en M.P, la
solución que solía adoptarse consistía en dividir el programa en partes,
llamadas superposiciones (overlays), formadas por módulos, cada uno de los
cuales puede estar en más de una capa. La superposición 0 (overlay 0)
empezaría primero su ejecución. Cuando terminara, llamaría a otro overlay (el
S.O hacía el intercambio de overlays, los cuales estarían en disco) pero el
programador era quien tenía que dividir el programa en pequeños módulos
(overlays) lo que suponía un trabajo excesivo para el programador. (Con esta
técnica solo estará en memoria las instrucciones y los datos necesarios a un
mismo tiempo)
33..22 M
ME
EM
MO
OR
RIIA
AV
VIIR
RTTU
UA
ALL
Permite a los usuarios hacer programas de una capacidad superior a la
que físicamente tiene la computadora.
Se basa en que las instrucciones de un programa que se ejecutan
sucesivamente (en un corto intervalo de tiempo) están en direcciones muy
próximas y en que los programas suelen estas redactados con gran linealidad,
es decir, no suelen abundar los saltos entre posiciones de memoria distantes.
Para implantarse utiliza técnicas como:
--
Gestión de memoria por páginas.
Gestión de memoria Segmentada.
Gestión de memoria segmentada –página.
33..22..11 P
PA
AG
GIIN
NA
AC
CIIÓ
ÓN
N
La mayoría de los sistemas de Memoria Virtual emplean una técnica
llamada paginación. Las direcciones generadas por el programa se llaman
direcciones virtuales y forman el espacio de dirección virtual.
En un ordenador sin Memoria Virtual, la dirección virtual se coloca
directamente en el bus de la memoria y se provoca que la palabra de la
dirección virtual (que coincide con la dirección real) sea leida o escrita.
Cuando se usa Memoria Virtual las direcciones virtuales no pasan
directamente al bus de la memoria. En su lugar, se dirigen a una Unidad de
Administración de la Memoria (MMU) que es un chip o un conjunto de chips
que transforma las direcciones virtuales en las direcciones de memoria física
(M.P).
Además de la traducción deberá:
-
Detectar si la dirección aludida esta en MP o no.
Generar una interrupción si se encuentra en disco.
La CPU envía direcciones
virtuales a la MMU
La MMU envía direcciones
físicas a la M.P
CPU
MMU
MEMORIA
CONTROLAD
ORA
DE DISCO
PRINCIPAL
BUS
Ej. La CPU puede generar direcciones de 16 bits -> 216 = 64 KB (Programas de
hasta 64 KB), sin embargo tenemos una MP de 32 KB. De manera que aunque
pueden generarse programas de 64 KB, no pueden cargarse en la MP en su
totalidad y ejecutarse, por lo que en disco deben estar una copia de la imagen
del núcleo del programa (swapping). La traducción propiamente dicha deberá:
••
••
Detectar si la dirección aludida se encuentra en M.P o no.
Generar una interrupción si se encuentra en disco (fallo de página).
** M
ME
EC
CA
AN
NIIS
SM
MO
OS
SB
BÁ
ÁS
SIIC
CO
OS
SD
DE
EP
PA
AG
GIIN
NA
AC
CIIÓ
ÓN
N
La memoria virtual está dividida en bloques de tamaño fijo o páginas. La
Memoria Real (M.P) está dividida en bloques de igual tamaño denominados
marcos de páginas. Un mecanismo de paginación se encarga de establecer la
correspondencia entre nº de página ÅÆ nº de marcos de página.
Memoria
Secundaria
Página 0
Tabla de páginas.
Página 1
Página 2
D ha caído en la Página 2
d
Página 3
Páginas virtuales
Nº Pág.ina
(NP)
0
1
2
3
Nº Marco de
Memoria (NMP)
Memoria
Principal
Marco Pag. 0
Marco Pag. 1
Marco Pag. 2
4
Marco Pag. 3
Marco Pag. 4
d
Marcos de página
Para realizar la transformación de direcciones, se necesita mantener una
tabla por proceso (tabla de páginas) donde se almacenará para cada página:
Páginas
Nº de MarcoPresente PáginaModifi. Página Autorizado
1
10
1
1
Lectura
2
5
0
1
Lectura/Escrit.
3
15
1
0
Lectura
Nº de Marco ---------> Nº de marco en el que está almacenada la página i (0..n)
Presente Página ----> 1 La página se encuentra en M.P
0 La página no se encuentra en M.P.
Modif. ----------------->Indica si se ha modificado dicha página después de su
carga en M.P o no.
Autorizado ----------->
Modelo de acceso autorizado a la página (leer,
modificar....)
Una tabla de páginas representa el contenido de una memoria virtual
particular (cada proceso tendrá la suya propia). Deberá existir un registro de la
CPU que almacene la dirección de comienzo de la tabla de páginas. Su valor
formará parte del entorno volátil del proceso; se almacenará en el descriptor del
proceso. Las tablas de páginas se encuentran en M.P en una zona del S.O.
Reg. Base de la Tabla de Páginas (CPU) + Dirección Virtual = Dirección Real
(M.P)
Si tengo una dirección lógica (D) y quiero convertirla en una dirección
física (Y), tendré que realizar los siguientes cálculos:
NP = D div p (NP: Nº de página, p: tamaño de la página)
d = D mod p (d: dirección dentro de la página)
Por tanto la conversión quedaría como:
Y = Tp[NP]*p + d ( Y: Dirección física)
(Tp : Valor de Marco para esa página dentro de la tabla)
Ejemplo Una computadora usa páginas de 4Kb. Su tabla de páginas usa
entradas de 3 bits cuya situación en un instante es la siguiente:
NP
8
MP
0
9
010
1
001
110
2
3
000
100
4
011
5
000
000
6
000
7
101
¿Cual es la dirección física generada para la dirección lógica 2989?
NP=D div p; 2989 div 4096=0
decimal T[0] = 2)
==>
d=D mod p; 2989 mod 4096=2989
= 2 · 4096+2989= 11181
MarcoPágina 010
(en
==> Y = T[0] · 4096+2989
Nota : El operador div, se queda con la parte entera de la división.
Ante la interrupción de falta de página, el S.O deberá realizar las
siguientes operaciones:
1.
2.
3.
4.
5.
Bloquear el proceso.
Encontrar la ubicación en disco de la página solicitada.
Encontrar un marco de página libre en M.P
Efectuar la carga de página desde disco al marco de página anterior.
Desbloquear el proceso.
En cuanto al tamaño ideal de la página, debemos encontrar un tamaño
intermedio que dependa tanto del tamaño de los procesos, como en el gasto de
entrada en la tabla de páginas. Esta tamaño normalmente es múltiplo de dos y
lo elige el diseñador del S.O.,.
Ventajas
¾ Si es muy pequeño...
Inconvenientes
nº de páginas elevado
educe la fragmentación interna
Tabla con muchas entradas
Búsquedas lentas.
Trasiegos entre M.P. y M.S. elevado
¾ Si es muy grande.......... Fragmentación interna aumenta
Reduce entradas en la tabla
Búsquedas más rápidas
Menos trasiegos
Ventaja de la M. Virtual:
Eliminación de la fragmentación externa.
Problema de la M. Virtual :
La velocidad de la M.P queda reducida a la mitad debido a que cada acceso
a memoria conlleva un acceso adicional a la tabla de páginas, esto es:
1. Acceso a la M.P para ejecutar cierto proceso por la CPU.
2. Acceso a la Tabla de Páginas para obtener la dirección física de M.P.
Solución: Uso de memoria caché.
Se emplea para albergar las filas de la tabla de páginas de los accesos
más frecuentes. Debido a la propiedad de localización de los programas, su
tamaño puede ser muy pequeño. Sólo en caso de fallo se consultará la tabla de
páginas.
A
A ccoonnttiinnuuaacciióónn ccoom
moo ssee ccaallccuullaa,, llaass ddiirreecccciioonneess eenn ppaaggiinnaacciióónn::
** A
ALLG
GO
OR
RIITTM
MO
OS
SD
DE
ES
SU
US
STTIITTU
UC
CIIÓ
ÓN
ND
DE
EP
PÁ
ÁG
GIIN
NA
AS
S..
Cuando ocurre una fallo de una página, el S.O tiene que escoger una
página y retirarla de la M.P (swapp out) con el fin de dejar espacio para la
página que tiene que traerse (swapp in). Si la página por ser retirada se ha
modificado en su estancia en la M.P ésta debe rescribirse en el disco para
actualizar la copia del disco. El sistema es más óptimo si se elige una página
que no se ha utilizado en demasía.
FIFO
El S.O conserva una lista de todas las páginas que están actualmente en
M.P donde la página que está a la cabeza de la lista es la más antigua y la de
la cola es la de más reciente ingreso. Al haber un fallo de página, la página que
está a la cabeza se retira y se anexa la nueva en la cola de la lista.
Ejemplo:
Sea la siguiente cadena de referencia de páginas de memoria. Suponer
arranque en frío y que la máquina sólo admite 3 marcos de pagina. El algoritmo
de reemplazo utilizado será el FIFO.
Nota: Arranque en frío: Se denomina así cuando no existe ninguna página
cargada en memoria.
7
0
1
2
0
3
0
4
2
3
0
3
2
1
2
0
1
7
0
7
0
7
3
2
1
*
0
3
2
*
4
0
3
*
2
4
0
*
3
2
4
*
0
3
2
*
0
3
2
0
3
2
1
0
3
*
2
1
0
*
2
1
0
2
1
0
*
2
1
0
*
2
1
0
*
1
0
7
*
7
2
1
*
0
7
2
*
0
1
2
3
0
4
2
3
0
1
7
1 Array
Páginas
1 Marco 1
0 Marco 2
7 Marco 3
* *
Interrupció
n
2 Página
víctima
¿ Cuántas interrupciones por falta de página se han producido ? - 15
interrupciones.
¿ En el instante t=2, cuál es la situación de los marcos ? - 1, 0, 7.
¿ Y en el instante final ? - 1, 0, 7
¿ Orden de salida ? 7 -> 0 -> 1
¿ Cuál será el tiempo dedicado a las interrupciones (para una es de 2 ms) ?- 15
x 2 =30 ms.
Sustitución de página usada menos recientemente – LRU
Cuando ocurre un fallo de página, se desecha la página que ha estado
sin uso por el periodo de tiempo más largo. Para implementar completamente
LRU se necesita conservar una lista enlazada de todas las páginas que están
en memoria con la usada más recientemente en el frente y la usada menos
recientemente en el fondo.
Ejemplo: Sea la siguiente cadena de referencia de páginas de
memoria. Suponer arranque en frío y que la máquina sólo admite 3 marcos de
pagina. El algoritmo de reemplazo utilizado será el LRU.
7
0
1
2
0
3
0
4
2
3
0
3
2
1
2
0
1
7
0
7
0
1
2
0
3
0
4
2
3
0
3
2
1
2
0
1
7
0
1 Array
Páginas
1 Marco 1
7
*
*
0
7
*
1
0
*
7
2
1
0
2
*
3
2
1
0
3
*
4
0
*
2
4
*
3
2
*
2
3
0
4
0
2
3
0
2
3
*
1
1
3
2
1
*
3
0
2
1
0
*
2
7
1
0 Marco 2
7 Marco 3
*
Interrupció
n
Página
víctima
¿ Cuántas interrupciones por falta de página se han producido ? - 12
interrupciones.
Nota : Aquellas columnas en las que nos se produce interrupción, las páginas
que son referidas pasan como más usada a la parte más alta de la
columna, reordenando las demás una posición después.
Algoritmo aleatorio
Se elige al azar una página.
33..22..22 S
SE
EG
GM
ME
EN
NTTA
AC
CIIÓ
ÓN
N
Consiste en utilizar un espacio de direcciones lógicas dividido en
segmentos de distinto tamaño. Cada segmento de por sí, tiene sentido lógico,
es decir, cada segmento representa una parte del programa.
Los primeros segmentos de 64 KB podrían reservarse para
procedimientos, datos, pilas y grupos que pertenecen al programa en
ejecución. Los segmentos restantes podrán contener cada uno un archivo por
segmento, de modo que los procesos pudieran direccionar en forma directa
todos sus archivos, sin tener que abrirlos y utilizar primitivas especiales de E/S
para leerlos y escribirlos.
Ejemplo :
Segmento 1
Zona de
declaraciones
Segmento 2
Zona de Datos
PROCESO 1
Segmento 3
Pila
Segmento 4
Procedimiento A
En este esquema de memoria, el
transformaciones es el COMPILADOR.
encargado
de
realizar
las
Al igual que en la paginación las direcciones lógicas son bidimensionales,
es decir, con dos campos por dirección:
DIR. LÓGICA (S,a) [ número de segmento (S) y dirección de dentro
del segmento (a) ].
Para la conversión de las direcciones lógicas a direcciones físicas el
compilador genera las tablas de segmentos (una tabla para cada proceso)
que luego serán usadas por el S.O. para el direccionamiento.
C
Caallccuulloo ddee uunnaa ddiirreecccciióónn ::
33..22..33 S
SE
EG
GM
ME
EN
NTTA
AC
CIIÓ
ÓN
N // P
PA
AG
GIIN
NA
AC
CIIÓ
ÓN
N
Los sistemas que combinan la paginación con la segmentación ofrecen las
ventajas de ambas técnicas de organización del almacenamiento virtual. Los
segmentos tienen por lo general un tamaño múltiplo de páginas; no es
necesario que todas las páginas de un segmento estén en almacenamiento
primario a la vez, y las páginas que son contiguas en el almacenamiento virtual
no son por fuerza contiguas en el almacenamiento real. Las direcciones son
tridimensionales, y una dirección del almacenamiento virtual, v, se compone de
un segmento, s, un número de página dentro del segmento p, y el
desplazamiento dentro de la página donde se encuentra el elemento deseado,
d.
Descargar