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
PAGINACIÓN Página:  Zona contigua de memoria de determinado tamaño . (Por motivos de eficiencia se suele trabajar siempre con tamaños potencia de 2. Ej:4 KB.) Organización :  El mapa de memoria del proceso se considera  dividido en páginas .  La memoria principal se considera  dividida en marcos  de página (tamaño de marco = tamaño de página).  Los marcos contendrán páginas de los procesos en ejecución La  tabla de páginas  (TP) relaciona cada página con el marco que la contiene. El hardware de traducción (MMU) usa la tabla de páginas para traducir direcciones lógicas a físicas Típicamente la MMU usa dos tablas de páginas (TP): TP del usuario : Por ejemplo, direcciones lógicas que empiezan por 0 TP del sistema : Por ejemplo, direcciones lógicas que empiezan por 1. Estas sólo se podrán usar en modo sistema
PAGINACIÓN Cada entrada de la tabla de páginas contendrá, además del número de marco asociado con la página: Información de protección : tipo de acceso permitido RWX Bit de página válida/inválida : para indicar si dicha entrada contiene una traducción asociada, es decir, si se corresponde realmente con un marco  Bit de página accedida ( Ref ) : activado cuando se accede Bit de página modificada ( Mod ) : activado cuando se escribe Bit de desactivación de caché : se usa cuando la entrada corresponde con direcciones de E/S Tamaño de página : La  elección de tamaño de página  está condicionada por diversos factores, entre los que hay que conseguir equilibrio: Potencia de 2 y múltiplo del tamaño del bloque de disco mejor pequeño por: Menor fragmentación Se ajusta mejor al conjunto de trabajo mejor grande por: Tablas más pequeñas Mejor rendimiento de dispositivos de E/S Compromiso (entre 2K y 16K)
PAGINACIÓN Dirección :Una dirección lógica se obtiene a partir de:  nº página + desplazamiento Problema :  La paginación  no ofrece una solución óptima . Lo  ideal  sería que cada palabra del mapa de memoria de un proceso pudiera ubicarse en cualquier dirección. Esta solución es inviable debido al coste de traducción Al no ser así, con la paginación se asigna a  cada proceso un número entero de marcos  de página, aunque el espacio de su mapa de memoria no sea un múltiplo entero del tamaño de página. Por tanto, se irán generando huecos (memoria no aprovechada, en la última de las páginas que no se llena de forma completa). Este proceso se denomina  fragmentación interna  (implica que, en término medio, cada proceso desperdicia la mitad de una página)
PAGINACIÓN
PAGINACIÓN Problema : Fragmentación, la memoria asignada es mayor que la memoria requerida  y por lo tanto, se desperdicia cierta cantidad de espacio T. Páginas Pr oceso  1 Página 0 Página 1 Página M Marco 2 Marco 3 Marco N .............. T. Páginas Pr oceso  2 Página 0 Página 1 Página P Marco 4 Marco 1 Marco 0 .............. Marco 0 Memoria Marco 1 Marco 2 Marco 3 Marco 4 Marco N Pág. 1 Pr. 2 ............ Pág. 0 Pr. 1 Pág. 1 Pr. 1 Pág. M Pr. 1 Pág. 0 Pr. 2 Pág. P Pr. 2
Paginación Otras cuestiones : En este esquema, el S.O. mantiene una  tabla de páginas por cada proceso . Cuando se produce un cambio de contexto se indica a la MMU qué tabla de páginas usar El S.O. mantiene  una única tabla de páginas para sí mismo . Así, todos los procesos comparten el SO. Cuando un proceso se ejecuta en modo sistema accede directamente a su mapa y al del SO S.O. mantiene tabla de marcos , como forma de mantener información de estado de la memoria principal. De cada marco se conoce su estado (libre, ocupado, etc) S.O. mantiene  tabla de regiones por cada proceso , indicando las características de cada región y qué rango de páginas pertenecen a cada región Desperdicio de espacio : Mucho mayor gasto en tablas que con asignación contigua : es el precio de mucha mayor funcionalidad
Paginación Implementación de la tabla de páginas : Las tablas de páginas  se mantiene  normalmente en memoria principal . Problemas: eficiencia y gasto de almacenamiento Eficiencia : cada acceso lógico requiere dos accesos a memoria principal, a la tabla de páginas + al propio dato o instrucción. Solución:  caché  de traducciones –› TLB Gasto de almacenamiento : tablas muy grandes. Ejemplo: páginas 4K, dir. lógica 32 bits y 4 bytes por entrada, la tabla de páginas de cada proceso tendrá 4MB. Solución:  tablas multinivel  y  tablas invertidas Valoración   : Espacios independientes  para procesos: mediante tablas de páginas Protección : mediante tablas de páginas Compartir memoria : entradas corresponden con mismo marco (bajo supervisión del SO dos procesos pueden compartir una página asociada al mismo marco) Soporte de regiones : bits de protección,  bit de validez:  no se reserva espacio para huecos Maximizar rendimiento : Si, al permitir esquemas de memoria más flexibles Mapas de tamaño adecuado : sí, al permitir esquemas de memoria virtual
Segmentación Con la paginación la MMU no dispone de información sobre las  regiones de los procesos  y sólo entiende de páginas. Por esta razón, el SO debe mantener una  lista de las páginas que componen cada región , lo que supone varias desventajas: Al  crear una región  hay que cuidar que todas las páginas asociadas tengan la misma  información de control Para poder  compartir  una región es preciso que las entradas de varios procesos  apunten a los mismos marcos Segmentación : es un esquema HW que intenta dar soporte directo a las regiones. En él se considera el mapa de memoria como compuesto por varios segmentos. Se puede considerar que consisten en una  generalización de los registros valla base y límite , pero usando un par de registros por cada segmento
SEGMENTACIÓN
Segmentación Dirección :Una dirección lógica estará compuesta por un número de  segmento  y un desplazamiento en el mismo.  Traducción : La forma de realizar la traducción puede apreciarse en la imagen siguiente:
Segmentación Tabla de segmentos :En este caso, la MMU usa una tabla de segmentos (TS).  Organización :  El SO mantiene una TS por proceso, de forma que en cada cambio de contexto se notifica a MMU cuál debe usar Cada entrada de TS contiene (entre otros): Registro base y límite del segmento protección: RWX Problema :  Fragmentación Externa En este esquema se produce fragmentación externa, ya que el almacenamiento de los segmentos se realiza de  forma contigua . El SO debe mantener una lista que le permita conocer qué zonas de memoria están libres y cuáles ocupadas: es decir,  estructuras de datos que identifiquen huecos y zonas asignadas
Segmentación Valoración : Espacios independientes para procesos : mediante su propia TS, que crea un espacio lógico independiente Protección : mediante TS, ofreciendo espacios disjuntos de memoria Compartir memoria : bajo control del SO es posible que dos o más procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones : bits de protección Maximizar rendimiento  : No lo maximiza, por la fragmentación externa Mapas de tamaño 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
Segmentación Valoración : Espacios independientes para procesos : mediante su propia TS, que crea un espacio lógico independiente Protección : mediante TS, ofreciendo espacios disjuntos de memoria Compartir memoria : bajo control del SO es posible que dos o más procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones : bits de protección Maximizar rendimiento  : No lo maximiza, por la fragmentación externa Mapas de tamaño 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 físicamente tiene el computador.  Además, la memoria virtual permite aumentar el número de procesos en la memoria principal, en ejecución concurrente. En definitiva presenta al usuario una memoria principal aparente mayor que la memoria física real. Para implantar la memoria virtual suele utilizarse una de las siguientes técnicas: Gestión de memoria por páginas,  Gestión de memoria segmentada,  Gestión de memoria segmentada/paginada
Memoria Virtual En un sistema de MV se tiene en disco el proceso completo, que se considera por la CPU troceado en páginas o segmentos, dependiendo del método. Únicamente se cargan en la memoria principal la página o páginas (o segmentos, en su caso) que en ese momento intervengan en el proceso, intercambiando páginas entre disco y memoria principal cuando sea necesario. 􀂉 La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) están en direcciones muy próximas ( 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 gestión de MV segmentada es más compleja que la del tipo de paginación, ya que los segmentos son de tamaño variable y son más difíciles de gestionar; las páginas, por el contrario, son de capacidad constante y preestablecida. Por ello lo habitual es utilizar gestión de memoria por paginación, o por segmentos paginados. En el caso de que el control de un programa llegue a una instrucción (o requiera un dato) de una página que no esté en memoria, se dice que se produce un  fallo de página  y el SO debe cargar en memoria la página correspondiente. La MV con paginación combina las técnicas de paginación e intercambiabilidad. Por lo general se utiliza un método de intercambiabilidad "perezosa": únicamente se lleva a memoria una página cuando es necesaria para algún proceso  (demanda de página), de esta forma el número de procesos en ejecución concurrente puede aumentar.
Memoria Virtual Políticas de Reemplazo Objetivo : Minimizar la tasa de fallos de página. Cada algoritmo descrito tiene versión local y global: Local : criterio se aplica a las páginas residentes del proceso Global : criterio se aplica a todas las páginas residentes  Algoritmos a estudiar Óptimo FIFO Reloj (o segunda oportunidad) LRU B uffering  de páginas Retención de páginas en memoria
Memoria Virtual FIFO :se sustituye la página que lleve más tiempo en memoria.  Implementación:  con un contador, C, asociado a cada marco que se incrementa cada vez que se efectúe un acceso a memoria. Se pone a 0 cuando se carga una nueva página. LRU :se sustituye la página que lleve más tiempo sin usar. Se basa en el principio de localidad temporal ya que supone que la página utilizada hace mayor tiempo, es menos probable que se use próximamente.  Implementación: con un contador, C, asociado a cada marco de página, que se incrementa cada vez que se efectúe un acceso a memoria; y se pone a 0 cada vez que se accede a su página. NRU  Se sustituye la página que menos se haya utilizado recientemente. Implementación:  Se utiliza una variable R (“referido”) 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 Un puntero va recorriendo los distintos marcos de página. En cada fila de la tabla de marcos se incluye un bit (0 ó 1) de referido (R). Cuando se introduce una página, el bit se pone a 0 (R=0). Si se accede a un marco, se hace R=1, y no se avanza el puntero Si se produce un fallo de página: se analiza el R al que apunta el puntero Si R=0, se reemplaza la página y se avanza una posición el puntero Si R=1, se cambia a R=0, y así sucesivamente se avanza el puntero hasta encontrar un R=0.
Memoria Virtual EJEMPLO (algoritmos de reemplazo): 􀂃 Memoria con 3 marcos de página, e inicialmente vacía. 􀂃 Se hacen referencia sucesiva a las siguientes páginas: 2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2

Cap3

  • 1.
    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
  • 2.
    PAGINACIÓN Página: Zona contigua de memoria de determinado tamaño . (Por motivos de eficiencia se suele trabajar siempre con tamaños potencia de 2. Ej:4 KB.) Organización : El mapa de memoria del proceso se considera dividido en páginas . La memoria principal se considera dividida en marcos de página (tamaño de marco = tamaño de página). Los marcos contendrán páginas de los procesos en ejecución La tabla de páginas (TP) relaciona cada página con el marco que la contiene. El hardware de traducción (MMU) usa la tabla de páginas para traducir direcciones lógicas a físicas Típicamente la MMU usa dos tablas de páginas (TP): TP del usuario : Por ejemplo, direcciones lógicas que empiezan por 0 TP del sistema : Por ejemplo, direcciones lógicas que empiezan por 1. Estas sólo se podrán usar en modo sistema
  • 3.
    PAGINACIÓN Cada entradade la tabla de páginas contendrá, además del número de marco asociado con la página: Información de protección : tipo de acceso permitido RWX Bit de página válida/inválida : para indicar si dicha entrada contiene una traducción asociada, es decir, si se corresponde realmente con un marco Bit de página accedida ( Ref ) : activado cuando se accede Bit de página modificada ( Mod ) : activado cuando se escribe Bit de desactivación de caché : se usa cuando la entrada corresponde con direcciones de E/S Tamaño de página : La elección de tamaño de página está condicionada por diversos factores, entre los que hay que conseguir equilibrio: Potencia de 2 y múltiplo del tamaño del bloque de disco mejor pequeño por: Menor fragmentación Se ajusta mejor al conjunto de trabajo mejor grande por: Tablas más pequeñas Mejor rendimiento de dispositivos de E/S Compromiso (entre 2K y 16K)
  • 4.
    PAGINACIÓN Dirección :Unadirección lógica se obtiene a partir de: nº página + desplazamiento Problema : La paginación no ofrece una solución óptima . Lo ideal sería que cada palabra del mapa de memoria de un proceso pudiera ubicarse en cualquier dirección. Esta solución es inviable debido al coste de traducción Al no ser así, con la paginación se asigna a cada proceso un número entero de marcos de página, aunque el espacio de su mapa de memoria no sea un múltiplo entero del tamaño de página. Por tanto, se irán generando huecos (memoria no aprovechada, en la última de las páginas que no se llena de forma completa). Este proceso se denomina fragmentación interna (implica que, en término medio, cada proceso desperdicia la mitad de una página)
  • 5.
  • 6.
    PAGINACIÓN Problema :Fragmentación, la memoria asignada es mayor que la memoria requerida y por lo tanto, se desperdicia cierta cantidad de espacio T. Páginas Pr oceso 1 Página 0 Página 1 Página M Marco 2 Marco 3 Marco N .............. T. Páginas Pr oceso 2 Página 0 Página 1 Página P Marco 4 Marco 1 Marco 0 .............. Marco 0 Memoria Marco 1 Marco 2 Marco 3 Marco 4 Marco N Pág. 1 Pr. 2 ............ Pág. 0 Pr. 1 Pág. 1 Pr. 1 Pág. M Pr. 1 Pág. 0 Pr. 2 Pág. P Pr. 2
  • 7.
    Paginación Otras cuestiones: En este esquema, el S.O. mantiene una tabla de páginas por cada proceso . Cuando se produce un cambio de contexto se indica a la MMU qué tabla de páginas usar El S.O. mantiene una única tabla de páginas para sí mismo . Así, todos los procesos comparten el SO. Cuando un proceso se ejecuta en modo sistema accede directamente a su mapa y al del SO S.O. mantiene tabla de marcos , como forma de mantener información de estado de la memoria principal. De cada marco se conoce su estado (libre, ocupado, etc) S.O. mantiene tabla de regiones por cada proceso , indicando las características de cada región y qué rango de páginas pertenecen a cada región Desperdicio de espacio : Mucho mayor gasto en tablas que con asignación contigua : es el precio de mucha mayor funcionalidad
  • 8.
    Paginación Implementación dela tabla de páginas : Las tablas de páginas se mantiene normalmente en memoria principal . Problemas: eficiencia y gasto de almacenamiento Eficiencia : cada acceso lógico requiere dos accesos a memoria principal, a la tabla de páginas + al propio dato o instrucción. Solución: caché de traducciones –› TLB Gasto de almacenamiento : tablas muy grandes. Ejemplo: páginas 4K, dir. lógica 32 bits y 4 bytes por entrada, la tabla de páginas de cada proceso tendrá 4MB. Solución: tablas multinivel y tablas invertidas Valoración : Espacios independientes para procesos: mediante tablas de páginas Protección : mediante tablas de páginas Compartir memoria : entradas corresponden con mismo marco (bajo supervisión del SO dos procesos pueden compartir una página asociada al mismo marco) Soporte de regiones : bits de protección, bit de validez: no se reserva espacio para huecos Maximizar rendimiento : Si, al permitir esquemas de memoria más flexibles Mapas de tamaño adecuado : sí, al permitir esquemas de memoria virtual
  • 9.
    Segmentación Con lapaginación la MMU no dispone de información sobre las regiones de los procesos y sólo entiende de páginas. Por esta razón, el SO debe mantener una lista de las páginas que componen cada región , lo que supone varias desventajas: Al crear una región hay que cuidar que todas las páginas asociadas tengan la misma información de control Para poder compartir una región es preciso que las entradas de varios procesos apunten a los mismos marcos Segmentación : es un esquema HW que intenta dar soporte directo a las regiones. En él se considera el mapa de memoria como compuesto por varios segmentos. Se puede considerar que consisten en una generalización de los registros valla base y límite , pero usando un par de registros por cada segmento
  • 10.
  • 11.
    Segmentación Dirección :Unadirección lógica estará compuesta por un número de segmento y un desplazamiento en el mismo. Traducción : La forma de realizar la traducción puede apreciarse en la imagen siguiente:
  • 12.
    Segmentación Tabla desegmentos :En este caso, la MMU usa una tabla de segmentos (TS). Organización : El SO mantiene una TS por proceso, de forma que en cada cambio de contexto se notifica a MMU cuál debe usar Cada entrada de TS contiene (entre otros): Registro base y límite del segmento protección: RWX Problema : Fragmentación Externa En este esquema se produce fragmentación externa, ya que el almacenamiento de los segmentos se realiza de forma contigua . El SO debe mantener una lista que le permita conocer qué zonas de memoria están libres y cuáles ocupadas: es decir, estructuras de datos que identifiquen huecos y zonas asignadas
  • 13.
    Segmentación Valoración :Espacios independientes para procesos : mediante su propia TS, que crea un espacio lógico independiente Protección : mediante TS, ofreciendo espacios disjuntos de memoria Compartir memoria : bajo control del SO es posible que dos o más procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones : bits de protección Maximizar rendimiento : No lo maximiza, por la fragmentación externa Mapas de tamaño 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
  • 14.
    Segmentación Valoración :Espacios independientes para procesos : mediante su propia TS, que crea un espacio lógico independiente Protección : mediante TS, ofreciendo espacios disjuntos de memoria Compartir memoria : bajo control del SO es posible que dos o más procesos tengan un segmento asociado a la misma zona de memoria Soporte de regiones : bits de protección Maximizar rendimiento : No lo maximiza, por la fragmentación externa Mapas de tamaño 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
  • 15.
    Memoria Virtual Lamemoria virtual (MV) permite ejecutar programas de capacidad superior a la memoria que físicamente tiene el computador. Además, la memoria virtual permite aumentar el número de procesos en la memoria principal, en ejecución concurrente. En definitiva presenta al usuario una memoria principal aparente mayor que la memoria física real. Para implantar la memoria virtual suele utilizarse una de las siguientes técnicas: Gestión de memoria por páginas, Gestión de memoria segmentada, Gestión de memoria segmentada/paginada
  • 16.
    Memoria Virtual Enun sistema de MV se tiene en disco el proceso completo, que se considera por la CPU troceado en páginas o segmentos, dependiendo del método. Únicamente se cargan en la memoria principal la página o páginas (o segmentos, en su caso) que en ese momento intervengan en el proceso, intercambiando páginas entre disco y memoria principal cuando sea necesario. 􀂉 La memoria virtual parte de la idea de que las instrucciones de un programa que se ejecutan sucesivamente (en un corto intervalo detiempo) están en direcciones muy próximas ( 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.
  • 17.
    Memoria Virtual Lagestión de MV segmentada es más compleja que la del tipo de paginación, ya que los segmentos son de tamaño variable y son más difíciles de gestionar; las páginas, por el contrario, son de capacidad constante y preestablecida. Por ello lo habitual es utilizar gestión de memoria por paginación, o por segmentos paginados. En el caso de que el control de un programa llegue a una instrucción (o requiera un dato) de una página que no esté en memoria, se dice que se produce un fallo de página y el SO debe cargar en memoria la página correspondiente. La MV con paginación combina las técnicas de paginación e intercambiabilidad. Por lo general se utiliza un método de intercambiabilidad "perezosa": únicamente se lleva a memoria una página cuando es necesaria para algún proceso (demanda de página), de esta forma el número de procesos en ejecución concurrente puede aumentar.
  • 18.
    Memoria Virtual Políticasde Reemplazo Objetivo : Minimizar la tasa de fallos de página. Cada algoritmo descrito tiene versión local y global: Local : criterio se aplica a las páginas residentes del proceso Global : criterio se aplica a todas las páginas residentes Algoritmos a estudiar Óptimo FIFO Reloj (o segunda oportunidad) LRU B uffering de páginas Retención de páginas en memoria
  • 19.
    Memoria Virtual FIFO:se sustituye la página que lleve más tiempo en memoria. Implementación: con un contador, C, asociado a cada marco que se incrementa cada vez que se efectúe un acceso a memoria. Se pone a 0 cuando se carga una nueva página. LRU :se sustituye la página que lleve más tiempo sin usar. Se basa en el principio de localidad temporal ya que supone que la página utilizada hace mayor tiempo, es menos probable que se use próximamente. Implementación: con un contador, C, asociado a cada marco de página, que se incrementa cada vez que se efectúe un acceso a memoria; y se pone a 0 cada vez que se accede a su página. NRU Se sustituye la página que menos se haya utilizado recientemente. Implementación: Se utiliza una variable R (“referido”) 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.
  • 20.
    Memoria Virtual Algoritmodel reloj Un puntero va recorriendo los distintos marcos de página. En cada fila de la tabla de marcos se incluye un bit (0 ó 1) de referido (R). Cuando se introduce una página, el bit se pone a 0 (R=0). Si se accede a un marco, se hace R=1, y no se avanza el puntero Si se produce un fallo de página: se analiza el R al que apunta el puntero Si R=0, se reemplaza la página y se avanza una posición el puntero Si R=1, se cambia a R=0, y así sucesivamente se avanza el puntero hasta encontrar un R=0.
  • 21.
    Memoria Virtual EJEMPLO(algoritmos de reemplazo): 􀂃 Memoria con 3 marcos de página, e inicialmente vacía. 􀂃 Se hacen referencia sucesiva a las siguientes páginas: 2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2