Cap3

21
CAPÍTULO III: ASIGNACIÓN NO CONTINUA 3.1 Paginación 3.1.1 Método Básico 3.1.2 Soporte Hardware 3.1.3 Protección 3.1.4 Compartición 3.2 Segmentación 3.2.1 Método Básico 3.2.2 Soporte Hardware 3.2.3 Protección 3.2.4 Compartición 3.3 Memoria Virtual 3.3.1 Método Básico 3.3.2 Soporte Hardware 3.3.3 Protección 3.3.4 Compartición 3.4 Segmentación con paginación

description

 

Transcript of Cap3

Page 1: 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

Page 2: Cap3

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

Page 3: Cap3

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

Page 4: Cap3

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

Page 5: Cap3

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

Page 6: Cap3

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

Page 7: Cap3

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

Page 8: Cap3

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

Page 9: Cap3

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

Page 10: Cap3

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

Page 11: Cap3

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

Page 12: Cap3

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

Page 13: Cap3

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

Page 14: Cap3

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

Page 15: Cap3

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

Page 16: Cap3

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

Page 17: Cap3

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

Page 18: Cap3

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

Page 19: Cap3

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

Page 20: Cap3

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

Page 21: Cap3

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