Download - Cap3
CAPIacuteTULO III ASIGNACIOacuteN NO CONTINUA
31 Paginacioacuten311 Meacutetodo Baacutesico312 Soporte Hardware313 Proteccioacuten314 Comparticioacuten32 Segmentacioacuten321 Meacutetodo Baacutesico322 Soporte Hardware323 Proteccioacuten324 Comparticioacuten33 Memoria Virtual331 Meacutetodo Baacutesico332 Soporte Hardware333 Proteccioacuten334 Comparticioacuten34 Segmentacioacuten con paginacioacuten
PAGINACIOacuteN
bull Paacutegina Zona contigua de memoria de determinado tamantildeo (Por motivos de eficiencia se suele trabajar siempre con tamantildeos potencia de 2 Ej4 KB)
bull Organizacioacuten mdash El mapa de memoria del proceso se considera dividido en paacuteginas mdash La memoria principal se considera dividida en marcos de paacutegina
(tamantildeo de marco = tamantildeo de paacutegina) mdash Los marcos contendraacuten paacuteginas de los procesos en ejecucioacutenmdash La tabla de paacuteginas (TP) relaciona cada paacutegina con el marco que
la contiene El hardware de traduccioacuten (MMU) usa la tabla de paacuteginas para traducir direcciones loacutegicas a fiacutesicas
mdash Tiacutepicamente la MMU usa dos tablas de paacuteginas (TP)a) TP del usuario Por ejemplo direcciones loacutegicas que empiezan
por 0b) TP del sistema Por ejemplo direcciones loacutegicas que empiezan
por 1 Estas soacutelo se podraacuten usar en modo sistema
PAGINACIOacuteNCada entrada de la tabla de paacuteginas contendraacute ademaacutes del
nuacutemero de marco asociado con la paacuteginaInformacioacuten de proteccioacuten tipo de acceso permitido RWXBit de paacutegina vaacutelidainvaacutelida para indicar si dicha entrada
contiene una traduccioacuten asociada es decir si se corresponde realmente con un marco
Bit de paacutegina accedida (Ref) activado cuando se accedeBit de paacutegina modificada (Mod) activado cuando se
escribeBit de desactivacioacuten de cacheacute se usa cuando la entrada
corresponde con direcciones de ESTamantildeo de paacutegina La eleccioacuten de tamantildeo de paacutegina estaacute
condicionada por diversos factores entre los que hay que conseguir equilibrioPotencia de 2 y muacuteltiplo del tamantildeo del bloque de discomejor pequentildeo por
Menor fragmentacioacutenSe ajusta mejor al conjunto de trabajo
mejor grande porTablas maacutes pequentildeasMejor rendimiento de dispositivos de ES
Compromiso (entre 2K y 16K)
PAGINACIOacuteN
DireccioacutenUna direccioacuten loacutegica se obtiene a partir de nordm paacutegina + desplazamiento
Problema La paginacioacuten no ofrece una solucioacuten oacuteptima Lo ideal seriacutea que cada palabra del mapa de memoria de un proceso pudiera ubicarse en cualquier direccioacuten Esta solucioacuten es inviable debido al coste de traduccioacutenAl no ser asiacute con la paginacioacuten se asigna a cada proceso un nuacutemero entero de marcos de paacutegina aunque el espacio de su mapa de memoria no sea un muacuteltiplo entero del tamantildeo de paacutegina Por tanto se iraacuten generando huecos (memoria no aprovechada en la uacuteltima de las paacuteginas que no se llena de forma completa) Este proceso se denomina fragmentacioacuten interna (implica que en teacutermino medio cada proceso desperdicia la mitad de una paacutegina)
PAGINACIOacuteN
PAGINACIOacuteN
T Paacuteginas Proceso 1
Paacutegina 0
Paacutegina 1
Paacutegina M
Marco 2
Marco 3
Marco N
T Paacuteginas Proceso 2
Paacutegina 0
Paacutegina 1
Paacutegina P
Marco 4
Marco 1
Marco 0
Marco 0
Memoria
Marco 1
Marco 2
Marco 3
Marco 4
Marco N
Paacuteg 1 Pr 2
Paacuteg 0 Pr 1
Paacuteg 1 Pr 1
Paacuteg M Pr 1
Paacuteg 0 Pr 2
Paacuteg P Pr 2
Problema Fragmentacioacuten la memoria asignada es mayor que la memoria requerida y por lo tanto se desperdicia cierta
cantidad de espacio
Paginacioacuten
Otras cuestiones En este esquema el SO mantiene una tabla de paacuteginas por cada
proceso Cuando se produce un cambio de contexto se indica a la MMU queacute tabla de paacuteginas usar
El SO mantiene una uacutenica tabla de paacuteginas para siacute mismo Asiacute todos los procesos comparten el SO Cuando un proceso se ejecuta en modo sistema accede directamente a su mapa y al del SO
SO mantiene tabla de marcos como forma de mantener informacioacuten de estado de la memoria principal De cada marco se conoce su estado (libre ocupado etc)
SO mantiene tabla de regiones por cada proceso indicando las caracteriacutesticas de cada regioacuten y queacute rango de paacuteginas pertenecen a cada regioacuten
Desperdicio de espacio Mucho mayor gasto en tablas que con asignacioacuten contigua es el precio de mucha mayor funcionalidad
Paginacioacuten Implementacioacuten de la tabla de paacuteginas
Las tablas de paacuteginas se mantiene normalmente en memoria principal Problemas eficiencia y gasto de almacenamiento
Eficiencia cada acceso loacutegico requiere dos accesos a memoria principal a la tabla de paacuteginas + al propio dato o instruccioacuten Solucioacuten cacheacute de traducciones ndashrsaquo TLB
Gasto de almacenamiento tablas muy grandes Ejemplo paacuteginas 4K dir loacutegica 32 bits y 4 bytes por entrada la tabla de paacuteginas de cada proceso tendraacute 4MB Solucioacuten tablas multinivel y tablas invertidas
Valoracioacuten Espacios independientes para procesos mediante tablas de paacuteginas Proteccioacuten mediante tablas de paacuteginas Compartir memoria entradas corresponden con mismo marco (bajo
supervisioacuten del SO dos procesos pueden compartir una paacutegina asociada al mismo marco)
Soporte de regiones bits de proteccioacuten bit de validez no se reserva espacio para huecos
Maximizar rendimiento Si al permitir esquemas de memoria maacutes flexibles Mapas de tamantildeo adecuado siacute al permitir esquemas de memoria virtual
Segmentacioacuten
Con la paginacioacuten la MMU no dispone de informacioacuten sobre las regiones de los procesos y soacutelo entiende de paacuteginas Por esta razoacuten el SO debe mantener una lista de las paacuteginas que componen cada regioacuten lo que supone varias desventajas
Al crear una regioacuten hay que cuidar que todas las paacuteginas asociadas tengan la misma informacioacuten de control
Para poder compartir una regioacuten es preciso que las entradas de varios procesos apunten a los mismos marcos
Segmentacioacuten es un esquema HW que intenta dar soporte directo a las regiones En eacutel se considera el mapa de memoria como compuesto por varios segmentos
Se puede considerar que consisten en una generalizacioacuten de los registros valla base y liacutemite pero usando un par de registros por cada segmento
SEGMENTACIOacuteN
Segmentacioacuten DireccioacutenUna direccioacuten loacutegica estaraacute compuesta por un
nuacutemero de segmento y un desplazamiento en el mismo Traduccioacuten La forma de realizar la traduccioacuten puede
apreciarse en la imagen siguiente
m em oria
tab la de segm entos
liacutem ite base
s d
d irecc ioacuten loacuteg ica
Excepcioacuten
gt +SI
NO
Segmentacioacuten
Tabla de segmentosEn este caso la MMU usa una tabla de segmentos (TS) Organizacioacuten
El SO mantiene una TS por proceso de forma que en cada cambio de contexto se notifica a MMU cuaacutel debe usar
Cada entrada de TS contiene (entre otros) Registro base y liacutemite del segmento proteccioacuten RWX
Problema Fragmentacioacuten Externa En este esquema se produce fragmentacioacuten externa ya que el
almacenamiento de los segmentos se realiza de forma contigua El SO debe mantener una lista que le permita conocer queacute zonas de
memoria estaacuten libres y cuaacuteles ocupadas es decir estructuras de datos que identifiquen huecos y zonas asignadas
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
PAGINACIOacuteN
bull Paacutegina Zona contigua de memoria de determinado tamantildeo (Por motivos de eficiencia se suele trabajar siempre con tamantildeos potencia de 2 Ej4 KB)
bull Organizacioacuten mdash El mapa de memoria del proceso se considera dividido en paacuteginas mdash La memoria principal se considera dividida en marcos de paacutegina
(tamantildeo de marco = tamantildeo de paacutegina) mdash Los marcos contendraacuten paacuteginas de los procesos en ejecucioacutenmdash La tabla de paacuteginas (TP) relaciona cada paacutegina con el marco que
la contiene El hardware de traduccioacuten (MMU) usa la tabla de paacuteginas para traducir direcciones loacutegicas a fiacutesicas
mdash Tiacutepicamente la MMU usa dos tablas de paacuteginas (TP)a) TP del usuario Por ejemplo direcciones loacutegicas que empiezan
por 0b) TP del sistema Por ejemplo direcciones loacutegicas que empiezan
por 1 Estas soacutelo se podraacuten usar en modo sistema
PAGINACIOacuteNCada entrada de la tabla de paacuteginas contendraacute ademaacutes del
nuacutemero de marco asociado con la paacuteginaInformacioacuten de proteccioacuten tipo de acceso permitido RWXBit de paacutegina vaacutelidainvaacutelida para indicar si dicha entrada
contiene una traduccioacuten asociada es decir si se corresponde realmente con un marco
Bit de paacutegina accedida (Ref) activado cuando se accedeBit de paacutegina modificada (Mod) activado cuando se
escribeBit de desactivacioacuten de cacheacute se usa cuando la entrada
corresponde con direcciones de ESTamantildeo de paacutegina La eleccioacuten de tamantildeo de paacutegina estaacute
condicionada por diversos factores entre los que hay que conseguir equilibrioPotencia de 2 y muacuteltiplo del tamantildeo del bloque de discomejor pequentildeo por
Menor fragmentacioacutenSe ajusta mejor al conjunto de trabajo
mejor grande porTablas maacutes pequentildeasMejor rendimiento de dispositivos de ES
Compromiso (entre 2K y 16K)
PAGINACIOacuteN
DireccioacutenUna direccioacuten loacutegica se obtiene a partir de nordm paacutegina + desplazamiento
Problema La paginacioacuten no ofrece una solucioacuten oacuteptima Lo ideal seriacutea que cada palabra del mapa de memoria de un proceso pudiera ubicarse en cualquier direccioacuten Esta solucioacuten es inviable debido al coste de traduccioacutenAl no ser asiacute con la paginacioacuten se asigna a cada proceso un nuacutemero entero de marcos de paacutegina aunque el espacio de su mapa de memoria no sea un muacuteltiplo entero del tamantildeo de paacutegina Por tanto se iraacuten generando huecos (memoria no aprovechada en la uacuteltima de las paacuteginas que no se llena de forma completa) Este proceso se denomina fragmentacioacuten interna (implica que en teacutermino medio cada proceso desperdicia la mitad de una paacutegina)
PAGINACIOacuteN
PAGINACIOacuteN
T Paacuteginas Proceso 1
Paacutegina 0
Paacutegina 1
Paacutegina M
Marco 2
Marco 3
Marco N
T Paacuteginas Proceso 2
Paacutegina 0
Paacutegina 1
Paacutegina P
Marco 4
Marco 1
Marco 0
Marco 0
Memoria
Marco 1
Marco 2
Marco 3
Marco 4
Marco N
Paacuteg 1 Pr 2
Paacuteg 0 Pr 1
Paacuteg 1 Pr 1
Paacuteg M Pr 1
Paacuteg 0 Pr 2
Paacuteg P Pr 2
Problema Fragmentacioacuten la memoria asignada es mayor que la memoria requerida y por lo tanto se desperdicia cierta
cantidad de espacio
Paginacioacuten
Otras cuestiones En este esquema el SO mantiene una tabla de paacuteginas por cada
proceso Cuando se produce un cambio de contexto se indica a la MMU queacute tabla de paacuteginas usar
El SO mantiene una uacutenica tabla de paacuteginas para siacute mismo Asiacute todos los procesos comparten el SO Cuando un proceso se ejecuta en modo sistema accede directamente a su mapa y al del SO
SO mantiene tabla de marcos como forma de mantener informacioacuten de estado de la memoria principal De cada marco se conoce su estado (libre ocupado etc)
SO mantiene tabla de regiones por cada proceso indicando las caracteriacutesticas de cada regioacuten y queacute rango de paacuteginas pertenecen a cada regioacuten
Desperdicio de espacio Mucho mayor gasto en tablas que con asignacioacuten contigua es el precio de mucha mayor funcionalidad
Paginacioacuten Implementacioacuten de la tabla de paacuteginas
Las tablas de paacuteginas se mantiene normalmente en memoria principal Problemas eficiencia y gasto de almacenamiento
Eficiencia cada acceso loacutegico requiere dos accesos a memoria principal a la tabla de paacuteginas + al propio dato o instruccioacuten Solucioacuten cacheacute de traducciones ndashrsaquo TLB
Gasto de almacenamiento tablas muy grandes Ejemplo paacuteginas 4K dir loacutegica 32 bits y 4 bytes por entrada la tabla de paacuteginas de cada proceso tendraacute 4MB Solucioacuten tablas multinivel y tablas invertidas
Valoracioacuten Espacios independientes para procesos mediante tablas de paacuteginas Proteccioacuten mediante tablas de paacuteginas Compartir memoria entradas corresponden con mismo marco (bajo
supervisioacuten del SO dos procesos pueden compartir una paacutegina asociada al mismo marco)
Soporte de regiones bits de proteccioacuten bit de validez no se reserva espacio para huecos
Maximizar rendimiento Si al permitir esquemas de memoria maacutes flexibles Mapas de tamantildeo adecuado siacute al permitir esquemas de memoria virtual
Segmentacioacuten
Con la paginacioacuten la MMU no dispone de informacioacuten sobre las regiones de los procesos y soacutelo entiende de paacuteginas Por esta razoacuten el SO debe mantener una lista de las paacuteginas que componen cada regioacuten lo que supone varias desventajas
Al crear una regioacuten hay que cuidar que todas las paacuteginas asociadas tengan la misma informacioacuten de control
Para poder compartir una regioacuten es preciso que las entradas de varios procesos apunten a los mismos marcos
Segmentacioacuten es un esquema HW que intenta dar soporte directo a las regiones En eacutel se considera el mapa de memoria como compuesto por varios segmentos
Se puede considerar que consisten en una generalizacioacuten de los registros valla base y liacutemite pero usando un par de registros por cada segmento
SEGMENTACIOacuteN
Segmentacioacuten DireccioacutenUna direccioacuten loacutegica estaraacute compuesta por un
nuacutemero de segmento y un desplazamiento en el mismo Traduccioacuten La forma de realizar la traduccioacuten puede
apreciarse en la imagen siguiente
m em oria
tab la de segm entos
liacutem ite base
s d
d irecc ioacuten loacuteg ica
Excepcioacuten
gt +SI
NO
Segmentacioacuten
Tabla de segmentosEn este caso la MMU usa una tabla de segmentos (TS) Organizacioacuten
El SO mantiene una TS por proceso de forma que en cada cambio de contexto se notifica a MMU cuaacutel debe usar
Cada entrada de TS contiene (entre otros) Registro base y liacutemite del segmento proteccioacuten RWX
Problema Fragmentacioacuten Externa En este esquema se produce fragmentacioacuten externa ya que el
almacenamiento de los segmentos se realiza de forma contigua El SO debe mantener una lista que le permita conocer queacute zonas de
memoria estaacuten libres y cuaacuteles ocupadas es decir estructuras de datos que identifiquen huecos y zonas asignadas
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
PAGINACIOacuteNCada entrada de la tabla de paacuteginas contendraacute ademaacutes del
nuacutemero de marco asociado con la paacuteginaInformacioacuten de proteccioacuten tipo de acceso permitido RWXBit de paacutegina vaacutelidainvaacutelida para indicar si dicha entrada
contiene una traduccioacuten asociada es decir si se corresponde realmente con un marco
Bit de paacutegina accedida (Ref) activado cuando se accedeBit de paacutegina modificada (Mod) activado cuando se
escribeBit de desactivacioacuten de cacheacute se usa cuando la entrada
corresponde con direcciones de ESTamantildeo de paacutegina La eleccioacuten de tamantildeo de paacutegina estaacute
condicionada por diversos factores entre los que hay que conseguir equilibrioPotencia de 2 y muacuteltiplo del tamantildeo del bloque de discomejor pequentildeo por
Menor fragmentacioacutenSe ajusta mejor al conjunto de trabajo
mejor grande porTablas maacutes pequentildeasMejor rendimiento de dispositivos de ES
Compromiso (entre 2K y 16K)
PAGINACIOacuteN
DireccioacutenUna direccioacuten loacutegica se obtiene a partir de nordm paacutegina + desplazamiento
Problema La paginacioacuten no ofrece una solucioacuten oacuteptima Lo ideal seriacutea que cada palabra del mapa de memoria de un proceso pudiera ubicarse en cualquier direccioacuten Esta solucioacuten es inviable debido al coste de traduccioacutenAl no ser asiacute con la paginacioacuten se asigna a cada proceso un nuacutemero entero de marcos de paacutegina aunque el espacio de su mapa de memoria no sea un muacuteltiplo entero del tamantildeo de paacutegina Por tanto se iraacuten generando huecos (memoria no aprovechada en la uacuteltima de las paacuteginas que no se llena de forma completa) Este proceso se denomina fragmentacioacuten interna (implica que en teacutermino medio cada proceso desperdicia la mitad de una paacutegina)
PAGINACIOacuteN
PAGINACIOacuteN
T Paacuteginas Proceso 1
Paacutegina 0
Paacutegina 1
Paacutegina M
Marco 2
Marco 3
Marco N
T Paacuteginas Proceso 2
Paacutegina 0
Paacutegina 1
Paacutegina P
Marco 4
Marco 1
Marco 0
Marco 0
Memoria
Marco 1
Marco 2
Marco 3
Marco 4
Marco N
Paacuteg 1 Pr 2
Paacuteg 0 Pr 1
Paacuteg 1 Pr 1
Paacuteg M Pr 1
Paacuteg 0 Pr 2
Paacuteg P Pr 2
Problema Fragmentacioacuten la memoria asignada es mayor que la memoria requerida y por lo tanto se desperdicia cierta
cantidad de espacio
Paginacioacuten
Otras cuestiones En este esquema el SO mantiene una tabla de paacuteginas por cada
proceso Cuando se produce un cambio de contexto se indica a la MMU queacute tabla de paacuteginas usar
El SO mantiene una uacutenica tabla de paacuteginas para siacute mismo Asiacute todos los procesos comparten el SO Cuando un proceso se ejecuta en modo sistema accede directamente a su mapa y al del SO
SO mantiene tabla de marcos como forma de mantener informacioacuten de estado de la memoria principal De cada marco se conoce su estado (libre ocupado etc)
SO mantiene tabla de regiones por cada proceso indicando las caracteriacutesticas de cada regioacuten y queacute rango de paacuteginas pertenecen a cada regioacuten
Desperdicio de espacio Mucho mayor gasto en tablas que con asignacioacuten contigua es el precio de mucha mayor funcionalidad
Paginacioacuten Implementacioacuten de la tabla de paacuteginas
Las tablas de paacuteginas se mantiene normalmente en memoria principal Problemas eficiencia y gasto de almacenamiento
Eficiencia cada acceso loacutegico requiere dos accesos a memoria principal a la tabla de paacuteginas + al propio dato o instruccioacuten Solucioacuten cacheacute de traducciones ndashrsaquo TLB
Gasto de almacenamiento tablas muy grandes Ejemplo paacuteginas 4K dir loacutegica 32 bits y 4 bytes por entrada la tabla de paacuteginas de cada proceso tendraacute 4MB Solucioacuten tablas multinivel y tablas invertidas
Valoracioacuten Espacios independientes para procesos mediante tablas de paacuteginas Proteccioacuten mediante tablas de paacuteginas Compartir memoria entradas corresponden con mismo marco (bajo
supervisioacuten del SO dos procesos pueden compartir una paacutegina asociada al mismo marco)
Soporte de regiones bits de proteccioacuten bit de validez no se reserva espacio para huecos
Maximizar rendimiento Si al permitir esquemas de memoria maacutes flexibles Mapas de tamantildeo adecuado siacute al permitir esquemas de memoria virtual
Segmentacioacuten
Con la paginacioacuten la MMU no dispone de informacioacuten sobre las regiones de los procesos y soacutelo entiende de paacuteginas Por esta razoacuten el SO debe mantener una lista de las paacuteginas que componen cada regioacuten lo que supone varias desventajas
Al crear una regioacuten hay que cuidar que todas las paacuteginas asociadas tengan la misma informacioacuten de control
Para poder compartir una regioacuten es preciso que las entradas de varios procesos apunten a los mismos marcos
Segmentacioacuten es un esquema HW que intenta dar soporte directo a las regiones En eacutel se considera el mapa de memoria como compuesto por varios segmentos
Se puede considerar que consisten en una generalizacioacuten de los registros valla base y liacutemite pero usando un par de registros por cada segmento
SEGMENTACIOacuteN
Segmentacioacuten DireccioacutenUna direccioacuten loacutegica estaraacute compuesta por un
nuacutemero de segmento y un desplazamiento en el mismo Traduccioacuten La forma de realizar la traduccioacuten puede
apreciarse en la imagen siguiente
m em oria
tab la de segm entos
liacutem ite base
s d
d irecc ioacuten loacuteg ica
Excepcioacuten
gt +SI
NO
Segmentacioacuten
Tabla de segmentosEn este caso la MMU usa una tabla de segmentos (TS) Organizacioacuten
El SO mantiene una TS por proceso de forma que en cada cambio de contexto se notifica a MMU cuaacutel debe usar
Cada entrada de TS contiene (entre otros) Registro base y liacutemite del segmento proteccioacuten RWX
Problema Fragmentacioacuten Externa En este esquema se produce fragmentacioacuten externa ya que el
almacenamiento de los segmentos se realiza de forma contigua El SO debe mantener una lista que le permita conocer queacute zonas de
memoria estaacuten libres y cuaacuteles ocupadas es decir estructuras de datos que identifiquen huecos y zonas asignadas
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
PAGINACIOacuteN
DireccioacutenUna direccioacuten loacutegica se obtiene a partir de nordm paacutegina + desplazamiento
Problema La paginacioacuten no ofrece una solucioacuten oacuteptima Lo ideal seriacutea que cada palabra del mapa de memoria de un proceso pudiera ubicarse en cualquier direccioacuten Esta solucioacuten es inviable debido al coste de traduccioacutenAl no ser asiacute con la paginacioacuten se asigna a cada proceso un nuacutemero entero de marcos de paacutegina aunque el espacio de su mapa de memoria no sea un muacuteltiplo entero del tamantildeo de paacutegina Por tanto se iraacuten generando huecos (memoria no aprovechada en la uacuteltima de las paacuteginas que no se llena de forma completa) Este proceso se denomina fragmentacioacuten interna (implica que en teacutermino medio cada proceso desperdicia la mitad de una paacutegina)
PAGINACIOacuteN
PAGINACIOacuteN
T Paacuteginas Proceso 1
Paacutegina 0
Paacutegina 1
Paacutegina M
Marco 2
Marco 3
Marco N
T Paacuteginas Proceso 2
Paacutegina 0
Paacutegina 1
Paacutegina P
Marco 4
Marco 1
Marco 0
Marco 0
Memoria
Marco 1
Marco 2
Marco 3
Marco 4
Marco N
Paacuteg 1 Pr 2
Paacuteg 0 Pr 1
Paacuteg 1 Pr 1
Paacuteg M Pr 1
Paacuteg 0 Pr 2
Paacuteg P Pr 2
Problema Fragmentacioacuten la memoria asignada es mayor que la memoria requerida y por lo tanto se desperdicia cierta
cantidad de espacio
Paginacioacuten
Otras cuestiones En este esquema el SO mantiene una tabla de paacuteginas por cada
proceso Cuando se produce un cambio de contexto se indica a la MMU queacute tabla de paacuteginas usar
El SO mantiene una uacutenica tabla de paacuteginas para siacute mismo Asiacute todos los procesos comparten el SO Cuando un proceso se ejecuta en modo sistema accede directamente a su mapa y al del SO
SO mantiene tabla de marcos como forma de mantener informacioacuten de estado de la memoria principal De cada marco se conoce su estado (libre ocupado etc)
SO mantiene tabla de regiones por cada proceso indicando las caracteriacutesticas de cada regioacuten y queacute rango de paacuteginas pertenecen a cada regioacuten
Desperdicio de espacio Mucho mayor gasto en tablas que con asignacioacuten contigua es el precio de mucha mayor funcionalidad
Paginacioacuten Implementacioacuten de la tabla de paacuteginas
Las tablas de paacuteginas se mantiene normalmente en memoria principal Problemas eficiencia y gasto de almacenamiento
Eficiencia cada acceso loacutegico requiere dos accesos a memoria principal a la tabla de paacuteginas + al propio dato o instruccioacuten Solucioacuten cacheacute de traducciones ndashrsaquo TLB
Gasto de almacenamiento tablas muy grandes Ejemplo paacuteginas 4K dir loacutegica 32 bits y 4 bytes por entrada la tabla de paacuteginas de cada proceso tendraacute 4MB Solucioacuten tablas multinivel y tablas invertidas
Valoracioacuten Espacios independientes para procesos mediante tablas de paacuteginas Proteccioacuten mediante tablas de paacuteginas Compartir memoria entradas corresponden con mismo marco (bajo
supervisioacuten del SO dos procesos pueden compartir una paacutegina asociada al mismo marco)
Soporte de regiones bits de proteccioacuten bit de validez no se reserva espacio para huecos
Maximizar rendimiento Si al permitir esquemas de memoria maacutes flexibles Mapas de tamantildeo adecuado siacute al permitir esquemas de memoria virtual
Segmentacioacuten
Con la paginacioacuten la MMU no dispone de informacioacuten sobre las regiones de los procesos y soacutelo entiende de paacuteginas Por esta razoacuten el SO debe mantener una lista de las paacuteginas que componen cada regioacuten lo que supone varias desventajas
Al crear una regioacuten hay que cuidar que todas las paacuteginas asociadas tengan la misma informacioacuten de control
Para poder compartir una regioacuten es preciso que las entradas de varios procesos apunten a los mismos marcos
Segmentacioacuten es un esquema HW que intenta dar soporte directo a las regiones En eacutel se considera el mapa de memoria como compuesto por varios segmentos
Se puede considerar que consisten en una generalizacioacuten de los registros valla base y liacutemite pero usando un par de registros por cada segmento
SEGMENTACIOacuteN
Segmentacioacuten DireccioacutenUna direccioacuten loacutegica estaraacute compuesta por un
nuacutemero de segmento y un desplazamiento en el mismo Traduccioacuten La forma de realizar la traduccioacuten puede
apreciarse en la imagen siguiente
m em oria
tab la de segm entos
liacutem ite base
s d
d irecc ioacuten loacuteg ica
Excepcioacuten
gt +SI
NO
Segmentacioacuten
Tabla de segmentosEn este caso la MMU usa una tabla de segmentos (TS) Organizacioacuten
El SO mantiene una TS por proceso de forma que en cada cambio de contexto se notifica a MMU cuaacutel debe usar
Cada entrada de TS contiene (entre otros) Registro base y liacutemite del segmento proteccioacuten RWX
Problema Fragmentacioacuten Externa En este esquema se produce fragmentacioacuten externa ya que el
almacenamiento de los segmentos se realiza de forma contigua El SO debe mantener una lista que le permita conocer queacute zonas de
memoria estaacuten libres y cuaacuteles ocupadas es decir estructuras de datos que identifiquen huecos y zonas asignadas
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
PAGINACIOacuteN
PAGINACIOacuteN
T Paacuteginas Proceso 1
Paacutegina 0
Paacutegina 1
Paacutegina M
Marco 2
Marco 3
Marco N
T Paacuteginas Proceso 2
Paacutegina 0
Paacutegina 1
Paacutegina P
Marco 4
Marco 1
Marco 0
Marco 0
Memoria
Marco 1
Marco 2
Marco 3
Marco 4
Marco N
Paacuteg 1 Pr 2
Paacuteg 0 Pr 1
Paacuteg 1 Pr 1
Paacuteg M Pr 1
Paacuteg 0 Pr 2
Paacuteg P Pr 2
Problema Fragmentacioacuten la memoria asignada es mayor que la memoria requerida y por lo tanto se desperdicia cierta
cantidad de espacio
Paginacioacuten
Otras cuestiones En este esquema el SO mantiene una tabla de paacuteginas por cada
proceso Cuando se produce un cambio de contexto se indica a la MMU queacute tabla de paacuteginas usar
El SO mantiene una uacutenica tabla de paacuteginas para siacute mismo Asiacute todos los procesos comparten el SO Cuando un proceso se ejecuta en modo sistema accede directamente a su mapa y al del SO
SO mantiene tabla de marcos como forma de mantener informacioacuten de estado de la memoria principal De cada marco se conoce su estado (libre ocupado etc)
SO mantiene tabla de regiones por cada proceso indicando las caracteriacutesticas de cada regioacuten y queacute rango de paacuteginas pertenecen a cada regioacuten
Desperdicio de espacio Mucho mayor gasto en tablas que con asignacioacuten contigua es el precio de mucha mayor funcionalidad
Paginacioacuten Implementacioacuten de la tabla de paacuteginas
Las tablas de paacuteginas se mantiene normalmente en memoria principal Problemas eficiencia y gasto de almacenamiento
Eficiencia cada acceso loacutegico requiere dos accesos a memoria principal a la tabla de paacuteginas + al propio dato o instruccioacuten Solucioacuten cacheacute de traducciones ndashrsaquo TLB
Gasto de almacenamiento tablas muy grandes Ejemplo paacuteginas 4K dir loacutegica 32 bits y 4 bytes por entrada la tabla de paacuteginas de cada proceso tendraacute 4MB Solucioacuten tablas multinivel y tablas invertidas
Valoracioacuten Espacios independientes para procesos mediante tablas de paacuteginas Proteccioacuten mediante tablas de paacuteginas Compartir memoria entradas corresponden con mismo marco (bajo
supervisioacuten del SO dos procesos pueden compartir una paacutegina asociada al mismo marco)
Soporte de regiones bits de proteccioacuten bit de validez no se reserva espacio para huecos
Maximizar rendimiento Si al permitir esquemas de memoria maacutes flexibles Mapas de tamantildeo adecuado siacute al permitir esquemas de memoria virtual
Segmentacioacuten
Con la paginacioacuten la MMU no dispone de informacioacuten sobre las regiones de los procesos y soacutelo entiende de paacuteginas Por esta razoacuten el SO debe mantener una lista de las paacuteginas que componen cada regioacuten lo que supone varias desventajas
Al crear una regioacuten hay que cuidar que todas las paacuteginas asociadas tengan la misma informacioacuten de control
Para poder compartir una regioacuten es preciso que las entradas de varios procesos apunten a los mismos marcos
Segmentacioacuten es un esquema HW que intenta dar soporte directo a las regiones En eacutel se considera el mapa de memoria como compuesto por varios segmentos
Se puede considerar que consisten en una generalizacioacuten de los registros valla base y liacutemite pero usando un par de registros por cada segmento
SEGMENTACIOacuteN
Segmentacioacuten DireccioacutenUna direccioacuten loacutegica estaraacute compuesta por un
nuacutemero de segmento y un desplazamiento en el mismo Traduccioacuten La forma de realizar la traduccioacuten puede
apreciarse en la imagen siguiente
m em oria
tab la de segm entos
liacutem ite base
s d
d irecc ioacuten loacuteg ica
Excepcioacuten
gt +SI
NO
Segmentacioacuten
Tabla de segmentosEn este caso la MMU usa una tabla de segmentos (TS) Organizacioacuten
El SO mantiene una TS por proceso de forma que en cada cambio de contexto se notifica a MMU cuaacutel debe usar
Cada entrada de TS contiene (entre otros) Registro base y liacutemite del segmento proteccioacuten RWX
Problema Fragmentacioacuten Externa En este esquema se produce fragmentacioacuten externa ya que el
almacenamiento de los segmentos se realiza de forma contigua El SO debe mantener una lista que le permita conocer queacute zonas de
memoria estaacuten libres y cuaacuteles ocupadas es decir estructuras de datos que identifiquen huecos y zonas asignadas
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
PAGINACIOacuteN
T Paacuteginas Proceso 1
Paacutegina 0
Paacutegina 1
Paacutegina M
Marco 2
Marco 3
Marco N
T Paacuteginas Proceso 2
Paacutegina 0
Paacutegina 1
Paacutegina P
Marco 4
Marco 1
Marco 0
Marco 0
Memoria
Marco 1
Marco 2
Marco 3
Marco 4
Marco N
Paacuteg 1 Pr 2
Paacuteg 0 Pr 1
Paacuteg 1 Pr 1
Paacuteg M Pr 1
Paacuteg 0 Pr 2
Paacuteg P Pr 2
Problema Fragmentacioacuten la memoria asignada es mayor que la memoria requerida y por lo tanto se desperdicia cierta
cantidad de espacio
Paginacioacuten
Otras cuestiones En este esquema el SO mantiene una tabla de paacuteginas por cada
proceso Cuando se produce un cambio de contexto se indica a la MMU queacute tabla de paacuteginas usar
El SO mantiene una uacutenica tabla de paacuteginas para siacute mismo Asiacute todos los procesos comparten el SO Cuando un proceso se ejecuta en modo sistema accede directamente a su mapa y al del SO
SO mantiene tabla de marcos como forma de mantener informacioacuten de estado de la memoria principal De cada marco se conoce su estado (libre ocupado etc)
SO mantiene tabla de regiones por cada proceso indicando las caracteriacutesticas de cada regioacuten y queacute rango de paacuteginas pertenecen a cada regioacuten
Desperdicio de espacio Mucho mayor gasto en tablas que con asignacioacuten contigua es el precio de mucha mayor funcionalidad
Paginacioacuten Implementacioacuten de la tabla de paacuteginas
Las tablas de paacuteginas se mantiene normalmente en memoria principal Problemas eficiencia y gasto de almacenamiento
Eficiencia cada acceso loacutegico requiere dos accesos a memoria principal a la tabla de paacuteginas + al propio dato o instruccioacuten Solucioacuten cacheacute de traducciones ndashrsaquo TLB
Gasto de almacenamiento tablas muy grandes Ejemplo paacuteginas 4K dir loacutegica 32 bits y 4 bytes por entrada la tabla de paacuteginas de cada proceso tendraacute 4MB Solucioacuten tablas multinivel y tablas invertidas
Valoracioacuten Espacios independientes para procesos mediante tablas de paacuteginas Proteccioacuten mediante tablas de paacuteginas Compartir memoria entradas corresponden con mismo marco (bajo
supervisioacuten del SO dos procesos pueden compartir una paacutegina asociada al mismo marco)
Soporte de regiones bits de proteccioacuten bit de validez no se reserva espacio para huecos
Maximizar rendimiento Si al permitir esquemas de memoria maacutes flexibles Mapas de tamantildeo adecuado siacute al permitir esquemas de memoria virtual
Segmentacioacuten
Con la paginacioacuten la MMU no dispone de informacioacuten sobre las regiones de los procesos y soacutelo entiende de paacuteginas Por esta razoacuten el SO debe mantener una lista de las paacuteginas que componen cada regioacuten lo que supone varias desventajas
Al crear una regioacuten hay que cuidar que todas las paacuteginas asociadas tengan la misma informacioacuten de control
Para poder compartir una regioacuten es preciso que las entradas de varios procesos apunten a los mismos marcos
Segmentacioacuten es un esquema HW que intenta dar soporte directo a las regiones En eacutel se considera el mapa de memoria como compuesto por varios segmentos
Se puede considerar que consisten en una generalizacioacuten de los registros valla base y liacutemite pero usando un par de registros por cada segmento
SEGMENTACIOacuteN
Segmentacioacuten DireccioacutenUna direccioacuten loacutegica estaraacute compuesta por un
nuacutemero de segmento y un desplazamiento en el mismo Traduccioacuten La forma de realizar la traduccioacuten puede
apreciarse en la imagen siguiente
m em oria
tab la de segm entos
liacutem ite base
s d
d irecc ioacuten loacuteg ica
Excepcioacuten
gt +SI
NO
Segmentacioacuten
Tabla de segmentosEn este caso la MMU usa una tabla de segmentos (TS) Organizacioacuten
El SO mantiene una TS por proceso de forma que en cada cambio de contexto se notifica a MMU cuaacutel debe usar
Cada entrada de TS contiene (entre otros) Registro base y liacutemite del segmento proteccioacuten RWX
Problema Fragmentacioacuten Externa En este esquema se produce fragmentacioacuten externa ya que el
almacenamiento de los segmentos se realiza de forma contigua El SO debe mantener una lista que le permita conocer queacute zonas de
memoria estaacuten libres y cuaacuteles ocupadas es decir estructuras de datos que identifiquen huecos y zonas asignadas
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Paginacioacuten
Otras cuestiones En este esquema el SO mantiene una tabla de paacuteginas por cada
proceso Cuando se produce un cambio de contexto se indica a la MMU queacute tabla de paacuteginas usar
El SO mantiene una uacutenica tabla de paacuteginas para siacute mismo Asiacute todos los procesos comparten el SO Cuando un proceso se ejecuta en modo sistema accede directamente a su mapa y al del SO
SO mantiene tabla de marcos como forma de mantener informacioacuten de estado de la memoria principal De cada marco se conoce su estado (libre ocupado etc)
SO mantiene tabla de regiones por cada proceso indicando las caracteriacutesticas de cada regioacuten y queacute rango de paacuteginas pertenecen a cada regioacuten
Desperdicio de espacio Mucho mayor gasto en tablas que con asignacioacuten contigua es el precio de mucha mayor funcionalidad
Paginacioacuten Implementacioacuten de la tabla de paacuteginas
Las tablas de paacuteginas se mantiene normalmente en memoria principal Problemas eficiencia y gasto de almacenamiento
Eficiencia cada acceso loacutegico requiere dos accesos a memoria principal a la tabla de paacuteginas + al propio dato o instruccioacuten Solucioacuten cacheacute de traducciones ndashrsaquo TLB
Gasto de almacenamiento tablas muy grandes Ejemplo paacuteginas 4K dir loacutegica 32 bits y 4 bytes por entrada la tabla de paacuteginas de cada proceso tendraacute 4MB Solucioacuten tablas multinivel y tablas invertidas
Valoracioacuten Espacios independientes para procesos mediante tablas de paacuteginas Proteccioacuten mediante tablas de paacuteginas Compartir memoria entradas corresponden con mismo marco (bajo
supervisioacuten del SO dos procesos pueden compartir una paacutegina asociada al mismo marco)
Soporte de regiones bits de proteccioacuten bit de validez no se reserva espacio para huecos
Maximizar rendimiento Si al permitir esquemas de memoria maacutes flexibles Mapas de tamantildeo adecuado siacute al permitir esquemas de memoria virtual
Segmentacioacuten
Con la paginacioacuten la MMU no dispone de informacioacuten sobre las regiones de los procesos y soacutelo entiende de paacuteginas Por esta razoacuten el SO debe mantener una lista de las paacuteginas que componen cada regioacuten lo que supone varias desventajas
Al crear una regioacuten hay que cuidar que todas las paacuteginas asociadas tengan la misma informacioacuten de control
Para poder compartir una regioacuten es preciso que las entradas de varios procesos apunten a los mismos marcos
Segmentacioacuten es un esquema HW que intenta dar soporte directo a las regiones En eacutel se considera el mapa de memoria como compuesto por varios segmentos
Se puede considerar que consisten en una generalizacioacuten de los registros valla base y liacutemite pero usando un par de registros por cada segmento
SEGMENTACIOacuteN
Segmentacioacuten DireccioacutenUna direccioacuten loacutegica estaraacute compuesta por un
nuacutemero de segmento y un desplazamiento en el mismo Traduccioacuten La forma de realizar la traduccioacuten puede
apreciarse en la imagen siguiente
m em oria
tab la de segm entos
liacutem ite base
s d
d irecc ioacuten loacuteg ica
Excepcioacuten
gt +SI
NO
Segmentacioacuten
Tabla de segmentosEn este caso la MMU usa una tabla de segmentos (TS) Organizacioacuten
El SO mantiene una TS por proceso de forma que en cada cambio de contexto se notifica a MMU cuaacutel debe usar
Cada entrada de TS contiene (entre otros) Registro base y liacutemite del segmento proteccioacuten RWX
Problema Fragmentacioacuten Externa En este esquema se produce fragmentacioacuten externa ya que el
almacenamiento de los segmentos se realiza de forma contigua El SO debe mantener una lista que le permita conocer queacute zonas de
memoria estaacuten libres y cuaacuteles ocupadas es decir estructuras de datos que identifiquen huecos y zonas asignadas
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Paginacioacuten Implementacioacuten de la tabla de paacuteginas
Las tablas de paacuteginas se mantiene normalmente en memoria principal Problemas eficiencia y gasto de almacenamiento
Eficiencia cada acceso loacutegico requiere dos accesos a memoria principal a la tabla de paacuteginas + al propio dato o instruccioacuten Solucioacuten cacheacute de traducciones ndashrsaquo TLB
Gasto de almacenamiento tablas muy grandes Ejemplo paacuteginas 4K dir loacutegica 32 bits y 4 bytes por entrada la tabla de paacuteginas de cada proceso tendraacute 4MB Solucioacuten tablas multinivel y tablas invertidas
Valoracioacuten Espacios independientes para procesos mediante tablas de paacuteginas Proteccioacuten mediante tablas de paacuteginas Compartir memoria entradas corresponden con mismo marco (bajo
supervisioacuten del SO dos procesos pueden compartir una paacutegina asociada al mismo marco)
Soporte de regiones bits de proteccioacuten bit de validez no se reserva espacio para huecos
Maximizar rendimiento Si al permitir esquemas de memoria maacutes flexibles Mapas de tamantildeo adecuado siacute al permitir esquemas de memoria virtual
Segmentacioacuten
Con la paginacioacuten la MMU no dispone de informacioacuten sobre las regiones de los procesos y soacutelo entiende de paacuteginas Por esta razoacuten el SO debe mantener una lista de las paacuteginas que componen cada regioacuten lo que supone varias desventajas
Al crear una regioacuten hay que cuidar que todas las paacuteginas asociadas tengan la misma informacioacuten de control
Para poder compartir una regioacuten es preciso que las entradas de varios procesos apunten a los mismos marcos
Segmentacioacuten es un esquema HW que intenta dar soporte directo a las regiones En eacutel se considera el mapa de memoria como compuesto por varios segmentos
Se puede considerar que consisten en una generalizacioacuten de los registros valla base y liacutemite pero usando un par de registros por cada segmento
SEGMENTACIOacuteN
Segmentacioacuten DireccioacutenUna direccioacuten loacutegica estaraacute compuesta por un
nuacutemero de segmento y un desplazamiento en el mismo Traduccioacuten La forma de realizar la traduccioacuten puede
apreciarse en la imagen siguiente
m em oria
tab la de segm entos
liacutem ite base
s d
d irecc ioacuten loacuteg ica
Excepcioacuten
gt +SI
NO
Segmentacioacuten
Tabla de segmentosEn este caso la MMU usa una tabla de segmentos (TS) Organizacioacuten
El SO mantiene una TS por proceso de forma que en cada cambio de contexto se notifica a MMU cuaacutel debe usar
Cada entrada de TS contiene (entre otros) Registro base y liacutemite del segmento proteccioacuten RWX
Problema Fragmentacioacuten Externa En este esquema se produce fragmentacioacuten externa ya que el
almacenamiento de los segmentos se realiza de forma contigua El SO debe mantener una lista que le permita conocer queacute zonas de
memoria estaacuten libres y cuaacuteles ocupadas es decir estructuras de datos que identifiquen huecos y zonas asignadas
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Segmentacioacuten
Con la paginacioacuten la MMU no dispone de informacioacuten sobre las regiones de los procesos y soacutelo entiende de paacuteginas Por esta razoacuten el SO debe mantener una lista de las paacuteginas que componen cada regioacuten lo que supone varias desventajas
Al crear una regioacuten hay que cuidar que todas las paacuteginas asociadas tengan la misma informacioacuten de control
Para poder compartir una regioacuten es preciso que las entradas de varios procesos apunten a los mismos marcos
Segmentacioacuten es un esquema HW que intenta dar soporte directo a las regiones En eacutel se considera el mapa de memoria como compuesto por varios segmentos
Se puede considerar que consisten en una generalizacioacuten de los registros valla base y liacutemite pero usando un par de registros por cada segmento
SEGMENTACIOacuteN
Segmentacioacuten DireccioacutenUna direccioacuten loacutegica estaraacute compuesta por un
nuacutemero de segmento y un desplazamiento en el mismo Traduccioacuten La forma de realizar la traduccioacuten puede
apreciarse en la imagen siguiente
m em oria
tab la de segm entos
liacutem ite base
s d
d irecc ioacuten loacuteg ica
Excepcioacuten
gt +SI
NO
Segmentacioacuten
Tabla de segmentosEn este caso la MMU usa una tabla de segmentos (TS) Organizacioacuten
El SO mantiene una TS por proceso de forma que en cada cambio de contexto se notifica a MMU cuaacutel debe usar
Cada entrada de TS contiene (entre otros) Registro base y liacutemite del segmento proteccioacuten RWX
Problema Fragmentacioacuten Externa En este esquema se produce fragmentacioacuten externa ya que el
almacenamiento de los segmentos se realiza de forma contigua El SO debe mantener una lista que le permita conocer queacute zonas de
memoria estaacuten libres y cuaacuteles ocupadas es decir estructuras de datos que identifiquen huecos y zonas asignadas
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
SEGMENTACIOacuteN
Segmentacioacuten DireccioacutenUna direccioacuten loacutegica estaraacute compuesta por un
nuacutemero de segmento y un desplazamiento en el mismo Traduccioacuten La forma de realizar la traduccioacuten puede
apreciarse en la imagen siguiente
m em oria
tab la de segm entos
liacutem ite base
s d
d irecc ioacuten loacuteg ica
Excepcioacuten
gt +SI
NO
Segmentacioacuten
Tabla de segmentosEn este caso la MMU usa una tabla de segmentos (TS) Organizacioacuten
El SO mantiene una TS por proceso de forma que en cada cambio de contexto se notifica a MMU cuaacutel debe usar
Cada entrada de TS contiene (entre otros) Registro base y liacutemite del segmento proteccioacuten RWX
Problema Fragmentacioacuten Externa En este esquema se produce fragmentacioacuten externa ya que el
almacenamiento de los segmentos se realiza de forma contigua El SO debe mantener una lista que le permita conocer queacute zonas de
memoria estaacuten libres y cuaacuteles ocupadas es decir estructuras de datos que identifiquen huecos y zonas asignadas
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Segmentacioacuten DireccioacutenUna direccioacuten loacutegica estaraacute compuesta por un
nuacutemero de segmento y un desplazamiento en el mismo Traduccioacuten La forma de realizar la traduccioacuten puede
apreciarse en la imagen siguiente
m em oria
tab la de segm entos
liacutem ite base
s d
d irecc ioacuten loacuteg ica
Excepcioacuten
gt +SI
NO
Segmentacioacuten
Tabla de segmentosEn este caso la MMU usa una tabla de segmentos (TS) Organizacioacuten
El SO mantiene una TS por proceso de forma que en cada cambio de contexto se notifica a MMU cuaacutel debe usar
Cada entrada de TS contiene (entre otros) Registro base y liacutemite del segmento proteccioacuten RWX
Problema Fragmentacioacuten Externa En este esquema se produce fragmentacioacuten externa ya que el
almacenamiento de los segmentos se realiza de forma contigua El SO debe mantener una lista que le permita conocer queacute zonas de
memoria estaacuten libres y cuaacuteles ocupadas es decir estructuras de datos que identifiquen huecos y zonas asignadas
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Segmentacioacuten
Tabla de segmentosEn este caso la MMU usa una tabla de segmentos (TS) Organizacioacuten
El SO mantiene una TS por proceso de forma que en cada cambio de contexto se notifica a MMU cuaacutel debe usar
Cada entrada de TS contiene (entre otros) Registro base y liacutemite del segmento proteccioacuten RWX
Problema Fragmentacioacuten Externa En este esquema se produce fragmentacioacuten externa ya que el
almacenamiento de los segmentos se realiza de forma contigua El SO debe mantener una lista que le permita conocer queacute zonas de
memoria estaacuten libres y cuaacuteles ocupadas es decir estructuras de datos que identifiquen huecos y zonas asignadas
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Segmentacioacuten
Valoracioacuten
Espacios independientes para procesos mediante su propia TS que crea un espacio loacutegico independiente
Proteccioacuten mediante TS ofreciendo espacios disjuntos de memoria Compartir memoria bajo control del SO es posible que dos o maacutes
procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones bits de proteccioacuten Maximizar rendimiento No lo maximiza por la fragmentacioacuten externa Mapas de tamantildeo adecuado No cumple este objetivo porque no permite
implementar eficientemente un sistema de memoria virtual
Por tanto tal y como se ha presentado se usa en muy pocos SO reales
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Memoria Virtual
La memoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que fiacutesicamente tiene el computador
Ademaacutes la memoria virtual permite aumentar el nuacutemero de procesos en la memoria principal en ejecucioacuten concurrente
En definitiva presenta al usuario una memoria principal aparente mayor que la memoria fiacutesica real
Para implantar la memoria virtual suele utilizarse una de las siguientes teacutecnicas Gestioacuten de memoria por paacuteginas Gestioacuten de memoria segmentada Gestioacuten de memoria segmentadapaginada
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Memoria Virtual
En un sistema de MV se tiene en disco el proceso completo que se considera por la CPU troceado en paacuteginas o segmentos dependiendo del meacutetodo Uacutenicamente se cargan en la memoria principal la paacutegina o paacuteginas (o segmentos en su caso) que en ese momento intervengan en el proceso intercambiando paacuteginas entre disco y memoria principal cuando sea necesario
1048713La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) estaacuten en direcciones muy proacuteximas (principio de localidad temporal)y en que los programas suelen estar redactados con gran linealidad (es decir no suelen abundar los saltos entre posiciones de memoria distantes) (principio de localidad espacial)En otras palabras los programas se ejecutan secuencialmente y los saltos (sobre todo a grandes distancias) son poco probables
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Memoria Virtual La gestioacuten de MV segmentada es maacutes compleja que la del tipo de
paginacioacuten ya que los segmentos son de tamantildeo variable y son maacutes difiacuteciles de gestionar las paacuteginas por el contrario son de capacidad constante y preestablecida Por ello lo habitual es utilizar gestioacuten de memoria por paginacioacuten o por segmentos paginados
En el caso de que el control de un programa llegue a una instruccioacuten (o requiera un dato) de una paacutegina que no esteacute en memoria se dice que se produce un fallo de paacutegina y el SO debe cargar en memoria la paacutegina correspondiente
La MV con paginacioacuten combina las teacutecnicas de paginacioacuten e intercambiabilidad Por lo general se utiliza un meacutetodo de intercambiabilidad perezosa uacutenicamente se lleva a memoria una paacutegina cuando es necesaria para alguacuten proceso (demanda de paacutegina)de esta forma el nuacutemero de procesos en ejecucioacuten concurrente puede aumentar
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Memoria Virtual
Poliacuteticas de Reemplazo
Objetivo Minimizar la tasa de fallos de paacutegina
Cada algoritmo descrito tiene versioacuten local y global Local criterio se aplica a las paacuteginas residentes del proceso Global criterio se aplica a todas las paacuteginas residentes Algoritmos a estudiar
A Oacuteptimo
B FIFO
C Reloj (o segunda oportunidad)
D LRU
E Buffering de paacuteginas
F Retencioacuten de paacuteginas en memoria
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Memoria Virtual
bull FIFOse sustituye la paacutegina que lleve maacutes tiempo en memoria Implementacioacuten con un contador C asociado a cada marco que se incrementa cada vez que se efectuacutee un acceso a memoria Se pone a 0 cuando se carga una nueva paacuteginabull LRUse sustituye la paacutegina que lleve maacutes tiempo sin usar Se basa en el principio de localidad temporal ya que supone que la paacutegina utilizada hace mayor tiempo es menos probable que se use proacuteximamente Implementacioacutencon un contador C asociado a cada marco de paacutegina que se incrementa cada vez que se efectuacutee un acceso a memoria y se pone a 0 cada vez que se accede a su paacuteginabull NRU Se sustituye la paacutegina que menos se haya utilizado recientementeImplementacioacuten Se utiliza una variable R (ldquoreferidordquo) asociada a cada marco que se pone a 1 cuando se referencia el marco De vez en cuando (20ms por ejemplo) se ponen a cero todas las variables R
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Memoria Virtual
Algoritmo del reloj
bull Un puntero va recorriendo los distintos marcos de paacuteginabull En cada fila de la tabla de marcos se incluye un bit (0 oacute 1) de referido (R)bull Cuando se introduce una paacutegina el bit se pone a 0 (R=0)bull Si se accede a un marco se hace R=1 y no se avanza el punterobull Si se produce un fallo de paacutegina se analiza el R al que apunta el puntero
bull Si R=0 se reemplaza la paacutegina y se avanza una posicioacuten el punterobull Si R=1 se cambia a R=0 y asiacute sucesivamente se avanza el puntero hasta encontrar un R=0
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2
Memoria VirtualEJEMPLO (algoritmos de reemplazo)
1048713Memoria con 3 marcos de paacutegina e inicialmente vaciacutea 1048713Se hacen referencia sucesiva a las siguientes paacuteginas 2 3 2 1 5 2
4 5 3 2 5 2