top of page

La memoria principal descrita sin abstracción de memoria.

La memoria principal (RAM) es un importante recurso que debe administrarse con cuidado. Aunque actualmente una computadora doméstica promedio tiene 10,000 veces más memoria que la IBM 7094, la computadora más grande en el mundo a principios de la década de 1960, los programas están creciendo con más rapidez que las memorias. Parafraseando la ley de Parkinson diría que “los programas se expanden para llenar la memoria disponible para contenerlos”. En este capítulo estudiaremos la forma en que los sistemas operativos crean abstracciones de la memoria y cómo las administran.

La parte del sistema operativo que administra (parte de) la jerarquía de memoria se conoce como administrador de memoria. Su trabajo es administrar la memoria con eficiencia: llevar el registro de cuáles partes de la memoria están en uso, asignar memoria a los procesos cuando la necesiten y des-asignarla cuando terminen.

SIN ABSTRACCION DE MEMORIA.
ADMINISTRACIÓN DE MEMORIA.
  • Opciones posibles de organización a.El S.O. puede estar en la parte inferior de la RAM b. El S.O. puede estar en la ROM c. Controladores en ROM y S.O en RAM.
     

  • Los modelos ay tienen la desventaja que un error en el programa de usuario puede borrar el sistema operativo.
     

  • En estos modelos solo se puede ejecutar un proceso a la vez.
     

  • Se ejecuta un comando, el S.O. copia el programa del disco a memoria y lo ejecuta.
     

  • Devuelve resultado y espera nuevo comando Tanenbaum, 2009 Se utilizó en mainframes pero actualmente no se emplea Antiguas computadoras de bolsillo y sistemas integrados Primeros computadores personales. ROM: BIOS. S.O.: MS-DOS.

JERARQUÍA DE MEMORIA.
SIN ABSTRACCIÓN DE MEMORIA.
ADMINISTRADOR DE MEMORIA
  • Administrador de memoria: parte del sistema operativo que administra (pate de) la jerarquía de memoria.
     

  • Su trabajo es administrar la memoria con eficiencia
     

  • Llevar el registro de cuales partes de la memoria están en uso
     

  • Asignar memoria a los procesos cuando la necesiten •Desasignar la memoria cuando los procesos terminen

SIN ABSTRACCIÓN DE MEMORIA
UNA ABSTRACCION DE MEMORIA ESPACIOS DE MEMORIA

Espacio de direcciones.

​

El espacio de direcciones es una abstracción de la memoria para los programas.
Es un conjunto de direcciones que puede utilizar un proceso para direccionar la memoria.
Cada proceso tiene su propio espacio de direcciones, independiente de los que pertenecen a otros procesos.

La finalidad es proporcionar a cada programa su propio espacio de direcciones, de manera que la dirección 28 en un programa indique una ubicación distinta de la dirección 28 en otro programa.

​

Reubicación dinámica.

Consiste en asociar el espacio de direcciones de cada proceso sobre una parte distinta de la memoria física. 

Se equipa cada CPU con dos registros de hardware especiales, conocidos como los registros base y límite.

​

¿Cómo funciona el registro base y el registro límite?

  1. Cuando se ejecuta un proceso, el registro base se carga con la dirección física donde empieza el programa en memoria.

  2. El registro límite se carga con la longitud del programa.

POR EJEMPLO:

Los valores base y límite que se cargarían en estos registros al ejecutar el primer programa son 0 y 16384.

Los valores utilizados cuando se ejecuta el segundo programa son 16384 y 16412.

​

¿Cómo se detecta un fallo?

Cada vez que un proceso hace referencia a la memoria, ya sea para obtener una instrucción de memoria, para leer o escribir una palabra de datos, el hardware de la CPU suma de manera automática el valor base a la dirección generada por el proceso antes de enviar la dirección al bus de memoria. 

Al mismo tiempo comprueba si la dirección ofrecida es igual o mayor que el valor resultante de sumar los valores de los registros límite y base, en cuyo caso se genera un fallo y se aborta el acceso.

​

¿Qué dio origen al espacio de direcciones?

En las primeras computadoras como por ejemplo la IBM 360, existía la necesidad de resolver dos problemas para permitir que haya varias aplicaciones en memoria al mismo tiempo sin que interfieran entre sí: Protección y Reubicación.


Una abstracción de memoria: Espacio de direcciones.

If 

Dirección => Registro Base + Registro límite

Then

!ERROR

LA NOCION DE UN ESPACIO DE DIRECCIONES

Definición de Espacio de direcciones.

​

(address space). En computación, un espacio de direcciones define un rango de direcciones discretas, donde cada una puede corresponder a un registro de memoria físico o virtual, un dispositivo periférico, un host de red, un sector de disco, u otra entidad lógica o física.

Una dirección de memoria, identifica la ubicación física en una memoria de computadora, como lo haría una dirección de una calle (dirección de memoria) en una ciudad (memoria).
El espacio de direcciones sería como un área de ubicaciones (un vecindario, una ciudad o un país, siguiendo con la comparación anterior).

Dos direcciones podrían ser numéricamente iguales, pero refiriéndose a diferentes ubicaciones, si es que pertenecen a diferentes espacios de direcciones.

Se denomina intercambio (swap) a una zona de disco que se utiliza como memoria auxiliar.

Todo proceso para ejecutarse debe estar en memoria. Utilizando una zona de disco como intercambio puede aumentarse el grado de multiprogramación.

Si el planificador selección un proceso que está en el intercambio, es necesario traerlo a memoria principal, lo que aumenta el tiempo del cambio de contexto

Para poder intercambiar procesos que están pendientes de una operación de e/s, todas las operaciones de e/s se hacen sobre los buffers del sistema

En sistemas antiguos se intercambiaban procesos enteros para aumentar el grado de multiprogramación.

  • Es lo que se denomina swapping

En sistemas modernos, con memoria virtual, lo que se intercambia son las páginas poco referenciadas de los procesos

  • Es lo que se denomina paging

La zona de intercambio puede ser una partición dedicada o un fichero de disco

Utilizar un archivo de intercambio es más flexible, puede cambiarse fácilmente su ubicación y/o su tamaño

Un archivo de intercambio es menos eficiente, puesto que utiliza las indirecciones del sistema de archivos

Los sistemas windows utilizan archivo de intercambio, y en los sistemas UNIX es más usual utilizar partición de intercambio, aunque puede utilizarse también archivo de intercambio.

ADMINISTRACION DE MEMORIA LIBRE.

Administración de Memoria.

Los métodos actuales tienen como base la administración de memoria que se usaban antiguamente.

Los programas deben ser llevados a la memoria y convertirse en procesos para ser ejecutados. Cola de entrada – colección de programas en disco que esperan para ser llevados a la memoria para ejecución.

La parte del sistema operativo que administra la memoria se llama administrador de memoria. La memoria principal es un depósito de datos a los que se puede acceder rápidamente y que son compartidos por la cpu y los dispositivos de E/S.

​

Funciones: Que memoria se está usando, quien la usa, que procesos pueden cargarse, asignación y liberaciones de memoria.

​

Cuando un programa se carga en memoria principal se convierte en procesos.

Las técnicas que existen para la carga de programas en la memoria son: partición fija, que es la división de la memoria libre en varias partes (de igual o distinto tamaño) y la partición dinámica, que son las particiones de la memoria en tamaños que pueden ser variables, según la cantidad de memoria que necesita cada proceso.

Entre las principales operaciones que desarrolla la administración de memoria se encuentran la reubicación, que consiste en trasladar procesos activos dentro y fuera de la memoria principal para maximizar la utilización del procesador; la protección, mecanismos que protegen los procesos que se ejecutan de interferencias de otros procesos; uso compartido de códigos y datos, con lo que el mecanismo de protección permite que ciertos procesos de un mismo programa que comparten una tarea tengan memoria en común.

MEMORIA VIRTUAL.

Es una combinación entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha más memoria principal (RAM) que la que realmente posee. Aunque la memoria virtual podría estar implementada por el software del sistema operativo, en la práctica casi siempre se usa una combinación de hardware y software, dado el esfuerzo extra que implicaría para el procesador.

Este método es invisible a los procesos.

Debido a que sólo la parte de memoria virtual que está almacenada en la memoria principal, es accesible a la CPU.

La memoria virtual ha llegado a ser un componente esencial de la mayoría de los S.O actuales. Y como en un instante dado, en la memoria sólo se tienen unos pocos fragmentos de un proceso dado, se pueden mantener más procesos en la memoria. Es más, se ahorra tiempo, porque los fragmentos que no se usan no se cargan ni se descargan de la memoria. Sin embargo, el S.O debe saber cómo gestionar este esquema.

La memoria virtual también simplifica la carga del programa para su ejecución llamado reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física.

 La cantidad de memoria máxima que se puede hacer ver que hay tiene que ver con las características del procesador. Por ejemplo, en un sistema de 32 bits, el máximo es 232, lo que da 4096 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de aplicaciones mucho más fácil, al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria.

​

VENTAJAS Y DESVENTAJAS DE LA MEMORIA VIRTUAL.

Ventajas:

  • Permite optimizar uso de memoria

  • Mantiene más procesos en memoria principal

  • Mantiene en disco partes del proceso poco usadas (rutinas de atención a errores poco frecuentes, funciones de uso esporádico, datos no usados, …) .

  • Permite que un proceso sea más grande que toda la memoria principal

  • Se encarga el Sistema Operativo: evita al usuario la preocupación por programar con superposición.

  • Con respecto a la performance del sistema: Se cuenta con una memoria virtualmente más extensa con la misma memoria real. Se utiliza mucho más eficientemente la memoria real.

  • Con respecto al desarrollo de aplicaciones: Al eliminar las restricciones de memoria permite diseñar los sistemas más fácilmente, en menor tiempo y a menos costo. Hace más sencillo el mantenimiento y la ampliación de los programas. Hace más justificable el diseño e implementación de algunas aplicaciones, cuyos requerimientos de memora varíen bastante en su ejecución de acuerdo al volumen y complejidad de las transacciones. con respecto a la operación del computador: Permite que un equipo de una memoria real menor pueda ser usado sin dificultad como back-up en caso de necesidad. Hace innecesario efectuar ciertos procedimientos cuyo único propósito es un mejor aprovechamiento de la memoria real. Simplifica las actividades de planificación
     

Desventajas:

 

  • Sobrecarga por gestión compleja de memoria

  • Costo asociado a la transformación de direcciones;

  • Memoria adicional que requiere para almacenar las tablas que debe mantener el sistema operativo (memoria real de la parte residente del sistema operativo)para indicar: l a cantidad de memoria real implementada, las secciones que están presente en la memoria real y sus direcciones de ubicación, y elementos de juicio para determinar qué secciones se tratarán de dejar en memoria real y cuáles no, o que sección será desplazada cuando otra sección de memoria virtual deba ser llevada a memoria real; pequeño desperdicio de memoria que se produce en la última página de un programa (ya que rara vez el tamaño del programa es múltiplo del tamaño de las páginas); merma en el rendimiento del computador si es incorrectamente utilizada; posible incremento del tiempo de ejecución de cada programa como consecuencia de la paginación (operaciones de entrada/salida que demorarán la ejecución del programa).

  • La memoria virtual puede ser una herramienta poderosa para incrementar la performance del computador. Pero ello depende de ciertos factores, tales como:

  • Velocidad de los dispositivos que contendrán la memoria virtual: La actividad de paginación afecta adversamente a la performance del equipo cuando el procesador real está frecuentemente esperando que termine una operación de entrada/salida de paginación; por tanto se debe procurar que los requerimientos de operaciones de paginación estén por debajo de lo necesario para aprovechar convenientemente la multiprogramación. En caso contrario se incrementarán los tiempos ociosos del órgano de comando. Velocidad del procesador: Una relación desbalanceada entre la velocidad del procesador y la del dispositivo de paginación puede alterar el rendimiento. Tamaño de la memoria real y virtual: La cantidad de memoria real de la CPU (en relación con el tamaño de la memoria virtual) afectará el número de páginas faltantes que deberán ser traídas del dispositivo de paginación. Si el tamaño de la memoria real es igual al de la virtual que están usando los programas en ejecución no habrá páginas faltantes ya que todas estarán en memoria real. En cambio cuando la memoria real sea menor, la cantidad de páginas faltantes estará dada por la razón de la memoria virtual usada por la memoria real disponible. Estructura de los programas: La cantidad de memoria virtual que usa un programa no es un factor tan significativo en la performance del equipo como la forma en que la usa. Algunas formas para incrementar el rendimiento del equipo son:

  • Usar áreas de entrada/salida más largas: Reduce el tiempo en que las páginas del programa estarán en memoria real. Sin embargo un aumento muy significativo podría afectar negativamente el rendimiento en equipos con poca memoria real.

  • Aumentar la capacidad de manejo de páginas faltantes cuando la actividad de paginación causa frecuentes desactivaciones de programas: Esto puede ser realizado:

  • Usando un dispositivo de mayor velocidad; estableciendo más dispositivos de paginación; reduciendo o eliminado archivos del dispositivo de paginación; reduciendo la actividad del canal que corresponde al dispositivo de paginación; o aumentando un poco la memoria real.

PAGINACION.

EN QUE CONSISTE LA PAGINACION.

El término memoria virtual se asocia normalmente con sistemas que emplean paginación, aunque también se puede usar memoria virtual basada en la segmentación. El uso de la paginación en la memoria virtual fue presentado por primera vez en el computador Atlas.

​

Cada proceso tiene su propia tabla de páginas y cuando carga todas sus páginas en la memoria principal, se crea y carga en la memoria principal una tabla de páginas. Cada entrada de la tabla de páginas contiene el número de marco de la página correspondiente en la memoria principal. Puesto que sólo algunas de las páginas de un proceso pueden estar en la memoria principal, se necesita un bit en cada entrada de la tabla para indicar si la página correspondiente está presente (P) en la memoria principal o no. Si el bit indica que la página está en la memoria, la entrada incluye también el número de marco para esa página.

​

Otro bit de control necesario en la entrada de la tabla de páginas es el bit de modificación (M), para indicar si el contenido de la página correspondiente se ha alterado desde que la página se cargó en la memoria principal. Si no ha habido cambios, no es necesario escribir la página cuando sea sustituida en el marco que ocupa actualmente.

Permite que la memoria de un proceso no sea contigua, y que a un proceso se le asigne memoria física donde quiera que ésta esté disponible.

​

Evita el gran problema de acomodar trozos de memoria de tamaño variable en el almacenamiento auxiliar.

Cuando es necesario intercambiar fragmento de códigos o datos que residen en la memoria principal, hay que encontrarles espacio en el almacenamiento auxiliar. Por sus ventajas la paginación es de uso común en muchos SO.

​

EN QUE CONSISTE LA SEGMENTACION.

La segmentación es un esquema de administración de memoria que apoya la perspectiva que el usuario tiene de la memoria. Un espacio de direcciones lógicas se compone de un conjunto de segmentos, cada uno de los cuales tiene un nombre y una longitud. Las direcciones especifican el nombre del segmento y el desplazamiento dentro de él, de manera que el usuario especifica cada dirección con dos cantidades: el nombre del segmento y un desplazamiento.

​

Implicaciones de la memoria virtual.

La segmentación permite al programador contemplar  la memoria como si constara de varios espacios de direcciones o segmentos. Los segmentos pueden ser de distintos tamaños, incluso de forma dinámica. Las referencias a la memoria constan de una dirección de la forma (número de segmento, desplazamiento).

Esta organización ofrece al programador varias ventajas sobre un espacio de direcciones no segmentado:

 

  1. Simplifica la gestión de estructuras de datos crecientes. Si el programador no conoce a priori cuán larga puede llegar a ser una estructura de datos determinada, es necesario suponerlo a menos que se permitan  tamaños de segmentos dinámicos. Con memoria virtual segmentada, a la estructura de datos se le puede asignar a su propio segmento y el S.O expandirá o reducirá el segmento cuando se necesite.

  2. Permite modificar y recopilar los programas independientemente, sin que sea necesario recopilar o volver  a montar el conjunto de programas por completo.

  3. Se presta a la compartición entre procesos. Un programador puede situar un programa de utilidades o una tabla de datos en un segmento que puede ser referenciado por otros procesos.

  4. Se presta a la protección. Puesto que un segmento puede ser construido para albergar un conjunto de procedimientos y datos bien definido, el programador o el administrador del sistema podrá asignar los permisos de acceso de la forma adecuada.

TABLA DE PÁGINACION.

Las tablas de paginación o tablas de páginas son una parte integral del Sistema de Memoria Virtual en sistemas operativos, cuando se utiliza paginación. Son usadas para realizar las traducciones de direcciones de memoria virtual (o lógica) a memoria real (o física) y en general el sistema operativo mantiene una por cada proceso corriendo en el sistema.

​

Dado que las tablas de paginación pueden ocupar un espacio considerable de la memoria principal, estas también podrían estar sujetas a paginación, lo que da lugar a una organización paginada de múltiples niveles(o tabla de páginas multinivel). En los sistemas con un tamaño de direcciones muy grande ( 64 bits ), podría usarse una tabla de páginas invertidas, la cual utiliza menos espacio, aunque puede aumentar el tiempo de búsqueda de la página.

Las tablas son mantenidas por el sistema operativo y utilizadas por la Unidad de Gestión De Memoria (MMU) para realizar las traducciones. Para evitar un acceso a las tablas de paginación, hay un dispositivo llamado Buffer de Traducción Adelantada (TLB,TranslationLookasideBuffer ), acelerando el proceso de traducción.

​

Cada página tiene un número que se utiliza como índice en la tabla de páginas, lo que da por resultado el número del marco correspondiente a esa página virtual. Si el bit presente /ausente es 0, se provoca un señalamiento (trap) hacia el sistema operativo. Si el bit es 1, el número de marco que aparece en la tabla de páginas se copia en los bits de mayor orden del registro de salida, junto con el ajuste (offset) de 12bits, el cual se copia sin modificaciones de la dirección virtual de entrada. Juntos forman una dirección física de 15 bits.

​

En teoría, la asociación de las direcciones virtuales con las físicas se efectúa según lo descrito. El número de página virtual se divide en un número de página virtual(los bits superiores)y un ajuste (los bits inferiores). El número de página virtual se utiliza como un índice en la tabla de páginas para encontrar la entrada de esa página virtual. El número de marco (si existe) se determina a partir de la tabla de páginas. El número de marco se asocia al extremo superior del ajuste y reemplaza al número de página virtual para formar una dirección física que se puede enviar a la memoria. La finalidad de la tabla de páginas es asociar las páginas virtuales con los marcos.

ACELERACION.

La asociación de una dirección virtual a una dirección física debe ser rápida

La asociación memoria virtual a memoria física debe realizarse cada que se extrae un dato de la memoria, por lo que por cada instrucción se necesitan hacer dos o más referencias a la tabla de páginas.

Si una instrucción requiere 1 nseg, la búsqueda en tabla de páginas debe realizarse en menos de 0.2 nseg. para que no se haga un cuello de botella.

​

Translation Lookaside Buffer (Buffer de traducción adelantada) memoria asociativa

Un pequeño dispositivo de hardware que por lo general se encuentra dentro de la MMU

Consiste en un pequeño número de entradas que contienen información acerca de una página incluyendo:

  1. Número de página virtual

  2. Un bit de modificado

  3. Código de protección para lectura/escritura/ejecución

  4. El marco de página físico en que se encuentra la página

  5. Bit de entrada válida (si está en uso o no está en uso)

  6. ​

Ejemplo del funcionamiento del TLB cuando se presenta una dirección virtual a la MMU

  1. EL HW comprueba si su número de página virtual está presente en el TLB al compararla con todas las entradas simultaneamente en paralelo.

  2. Si se encuentra una coincidencia valida y el acceso no viola los bits de protección, el marco de página se toma directamente del TLB, sin pasar por la tabla de páginas.

  3. Si el número de página virtual está presente en el TLB, pero la instrucción está tratando de escribir en una página de solo lectura se genera un fallo por protección.

  4. Si el número de página virtual no está en el TLB, la MMU detecta que no está y realiza una busqueda ordinaria en la tabla de páginas.

  5. Desaloja una de las entradas del TLB y la reemplaza con la entrada en la tabla de páginas que acaba de buscar.

  6. Si esa página se utiliza pronto otra vez, la segunda vez se producirá un acierto en el TLB.
     

¿Cómo reducir la cantidad y costo de los fallos del TLB?

El S.O. averigua cuáles páginas tienen más probabilidad de ser utilizadas y precarga entradas para ellas en el TLB. Disminuyendo así la oportunidad de ocurrir fallos.

Si el espacio de direcciones virtuales es grande, la tabla de páginas será grande

Con un tamaño de página de 4KB, un espacio de direcciones de 32 bits, tiene 1 millón de páginas y por lo tanto la tabla de páginas debe tener 1 millón de entradas y cada proceso necesita su propia tabla de páginas ya que tiene su propio espacio de direcciones virtuales.

Buffer de traducción adelantada

​

EL PROBLEMA:

Cuando una instrucción de 1 byte copia un registro a otro, la paginación requiere realizar dos referencias a memoria, reduciendo el rendimiento a la mitad.

​

LA OBSERVACIÓN:

La mayor parte de los programas tienden a hacer un gran número de referencias a un pequeño número de páginas, sólo se lee con mucha frecuencia una pequeña fracción de las entradas en la tabla de páginas, el resto se utiliza muy pocas veces.

​

LA SOLUCIÓN:

El dispositivo TLB(Translatión Lookaside Buffer), Bufer de traducción adelantada.

En este caso las entradas del TLB se cargan de manera explícita mediante el S.O.

Si no se encuentra una coincidencia en el TLB, en vez de que la MMU vaya a las tablas de páginas para buscar y obtener la referencia a la página, sólo se genera un fallo del TLB y se pasa el problema al S.O.

Al fallar el TLB, el S.O. toma el control

  1. El S.O. debe buscar la página,.

  2. Eliminar una entrada del TLB.

  3. Introducir la nueva página

  4. Reiniciar la instrucción que originó el fallo.

  5. Administración de TLB mediante Software

ACELERACION.
TABLA DE PAGINAS PARA MEMORIAS EXTENSAS.

Los TLBs se pueden utilizar para acelerar las traducciones de direcciones virtuales a direcciones físicas sobre el esquema original de la tabla de páginas en memoria. Pero ese no es el único problema que debemos combatir. Otro problema es como lidiar con espacios de direcciones virtuales muy extensos. A continuación veremos dos maneras de hacerlo:

​

  • Tablas de páginas multinivel.

MULTINIVEL: sistema de distribución, muy extendido que trabajan en varios niveles. El secreto del método de la tabla de páginas multinivel es evitar mantenerlas en memoria todo el tiempo, y en especial, aquellas que no se necesitan. Por ejemplo, suponga que un proceso necesita 12 megabytes: los 4 megabytes inferiores de memoria para el texto del programa, lo siguientes 4 megabytes para datos y los 4 megabytes superiores para la pila. Divide espacios de direcciones lógicas en múltiples tablas de páginas se puede expandir a tres, cua-tro o más niveles. Entre más niveles se obtiene una mayor flexibilidad, pero es improbable que la complejidad adicional sea de utilidad por encima de tres niveles.

​

  • Tablas de páginas invertidas.

Al buscar el marco al que corresponde la página se debe ir a memoria donde esta almacenada la tabla de páginas. Una entrada por cada marco de memoria. Una entrada contiene la dirección virtual de la página almacenada en el marco con información sobre el proceso que la posee.

ALGORITMO DE REEMPLAZO DE PÁGINAS.

Los Algoritmos de reemplazo de página son aquellos algoritmos de sistemas operativos que están diseñados para solucionar el problema de decidir qué página de las que reside en memoria bajo un frame o marco debe salir para dejar entrar a otra que está siendo referenciada. Al ser los reemplazos de página fundamentales para la paginación bajo demanda, es importante que los sistemas operativos implementen los algoritmos más efectivos. Algunos de los presentados son algoritmos creados para concretizar la idea de reemplazo, otros son ideales pero imposibles o difíciles de implementar y están aquellos que con ciertos costos son perfectamente implementables, pero todo algoritmo debe apuntar a tener la menor cantidad de fallos de página, lo que implica, por ejemplo, la reducción sustancial de I/O a memoria secundaria.

​

Los algoritmos son evaluados con cadenas de referencias, que son cadenas de números que indican las páginas que son referenciadas. La idea es simular cómo actúan los distintos algoritmos para estas cadenas, de forma tal de conocer su eficiencia.

EL ALGORITMO DE REEMPLAZO DE PÁGINAS ÓPTIMO

Descripción:

​

Este algoritmo debe de tener el menor índice de fallos de página de todos los algoritmos. En teoría, este algoritmo debe de reemplazar la página que no va a ser usada por el periodo más largo de tiempo.

Desafortunadamente, el algoritmo de reemplazo óptimo es fácil en teoría, pero prácticamente imposible de implementar, dado que requiere conocer a futuro las necesidades del sistema.

Tal algoritmo existe y ha sido llamado OPT o MIN, pero se usa únicamente para estudios de comparaciones

​

Características:

​

  • Es el que produce menos fallos de página para cualquier cantidad de marcos

  • Se reemplaza la página que va a tardar más tiempo en ser referenciada

  • No puede implementarse pues implicaría conocer de antemano las páginas que va a referenciar el proceso.

  • Aunque no puede implementarse se utiliza como referencia para los demás algoritmos
     

Ejemplo La cadena de referencia 2 3 2 1 5 2 4 5 3 2 5 2 con tres marcos produce 3 fallos

EL ALGORITMO DE REEMPLAZO DE PÁGINAS NO USADAS RECIENTEMENTE

Este algoritmo favorece a las páginas que fueron usadas recientemente. Funciona de la siguiente manera: cuando una página es referenciada, fija el bit de referencia para esa página. Similarmente, cuando una página es modificada, fija su bit de modificación. Usualmente estas operaciones son realizadas por el hardware, aunque puede hacerse también por software. En un tiempo fijo, el sistema operativo pone en 0 los bits de referencia de todas las páginas, de modo que las páginas con su bit de referencia en 1 son las que fueron referenciadas dentro del último intervalo de reloj. Cuando una página debe ser reemplazada, el sistema operativo divide las páginas en cuatro categorías:

​

  • Categoría 1: no referenciada, no modificada

  • Categoría 2: no referenciada, modificada ( Categoria sin logica alguna)

  • Categoría 3: referenciada, no modificada

  • Categoría 4: referenciada, modificada
     

Las mejores páginas para cambiar son las que se encuentran en la categoría 0, mientras que las peores son las de la categoría 3. Se desaloja al azar una página de la categoría más baja que no esté vacía. Este algoritmo se basa en la suposición de que es mejor desalojar una página modificada a la que no se ha hecho referencia en al menos un tic de reloj, en vez de una página limpia que se está usando mucho.

En este método el sistema operativo sólo tiene que guardar en qué orden las páginas fueron cargadas, de modo que al necesitar hacer espacio pueda fácilmente elegir la primera página cargada. Se usa una cola, al cargar una página nueva se ingresa en el último lugar. Aunque las colas FIFO son simples e intuitivas, no se comportan de manera aceptable en la aplicación práctica, por lo que es raro su uso en su forma simple. Uno de los problemas que presentan es la llamada Anomalía FIFO o Anomalía de Belady. Belady encontró ejemplos en los que un sistema con un número de marcos de páginas igual a tres tenía menos fallos de páginas que un sistema con cuatro marcos de páginas. El problema consiste en que podemos quitar de memoria una página de memoria muy usada, sólo porque es la más antigua.

FIFO(First-In, First-Out)

Conserva una lista encadenada de todas las páginas en el orden en que llegaron a la memoria.

​

–Trata los marcos de página ocupados como si se tratase de un buffer circular

–Las páginas se remplazan mediante una estrategia cíclica de tipo round-robin

–Es una de las políticas de reemplazo más sencilla de implementar

–Se reemplaza la página que lleva en memoria más tiempo

–Estas páginas podrían necesitarse de nuevo muy pronto

•Se reemplazan las páginas al principio de la lista

•Desventaja

–Las páginas que más estén en la memoria no necesariamente son las más usadas

FIFO Y ANOMALÍA DE BELADY M
RELOJ, SEGUNDA OPORTUNIDAD

Es una pequeña modificación al algoritmo FIFO, que funciona bastante mejor que el FIFO. En este caso cuando una página debe ser sacada se toma la primera en la cola, y en vez de sacarla, consulta el valor de un bit de referencia. En caso de estar fijado (en 1) se cambia el bit a 0 y se lo coloca al final de la obstrucción, autorizando su tiempo de carga como si recién hubiera llegado al procesador. De esta forma, se le da una segunda oportunidad. Si el bit se encuentra sin fijar(en 0), la página se saca de memoria. Cada vez que la MMU accede a una página, fija su bit de referencia a 1. Para esto es necesario soporte para bit de referencia por hardware.

 

Existe una variante de este algoritmo que sobre la misma idea presenta una mejora en la implementación. Es el algoritmo del reloj, que lo que hace es tener una lista circular, de forma que al llegar al último elemento de la lista, pasa automáticamente al primero. Los elementos no se mueven al final de la cola cuando son accedidos, simplemente se pone su bit de referencia a 1. Esto nos evita tener que hacer movimientos de punteros en el caso de implementarlo con una lista enlazada. De hecho, se puede implementar con un array perfectamente, ahorrando así memoria.

MENOS USADA RECIENTEMENTE (LEAST RECENTLY USED, LRU)

Este algoritmo difiere del de ‘No usada recientemente’ en el hecho de que aquel sólo se fija en el intervalo de tiempo desde que se pusieron en 0 los bits de referencia de las páginas, mientras que el algoritmo de ‘Menos usada recientemente’ intenta proveer un comportamiento casi óptimo mediante la observación de las páginas que menos fueron usadas recientemente. Este tipo de páginas, estadísticamente son las que tienen menor probabilidad de ser usadas nuevamente.

 

Aunque este algoritmo provee un buen comportamiento en teoría, es caro de implementar, en cuanto a recursos consumidos. Hay varias implementaciones que intentan mantener bajo el costo y lograr un rendimiento considerable. Un método consiste en tener una lista enlazada y ordenada de todas las páginas en memoria. En el final de la lista está la página menos usada recientemente, y al principio la más usada recientemente. El costo alto de este método es porque cada vez que se referencia una página debe ser movida en la lista, algo que consume mucho tiempo. Otra forma, que requiere soporte de hardware, consiste en tener un contador que es incrementado en cada instrucción del CPU. Cada vez que una página es accedida, gana el número del contador en ese momento. Cuando una página debe ser retirada de memoria, simplemente hay que buscar cuál es la que tiene el menor número, que es la que fue usada hace más tiempo. En el presente no existen contadores tan grandes para permitir esto. Debido al alto costo del LRU, se proponen algoritmos similares, pero que permiten implementaciones menos costosas, como los que siguen.

  • Conjunto de trabajo (working set) es el numero de paginas mínimo que un programa necesita para ejecutarse

  • El algoritmo debe garantizar en un espacio de tiempo el conjunto de páginas requeridas este presente.

  • Se utiliza un bit de referencia y una estampa de tiempo

  • Se mira en todas las páginas el bit de referencia

  • Coloco en el tiempo actual el último tiempo

  • Se saca a la pagina que no está referenciada

CUESTIÓN DE DISEÑO PARA LOS SISTEMAS DE PAGINACIÓN

POLÍTICAS DE ASIGNACIÓN LOCAL CONTRA LAS DE ASIGNACIÓN GLOBAL

Se considera dos tipos de reemplazo, local y global. Los algoritmos locales corresponden de manera efectiva a asignar a cada proceso una fracción fija de la memoria. Los algoritmos globales asignan marcos de página de manera dinámica entre los procesos ejecutables.

CONTROL DE CARGA

Aun con lo mejor en diseño, es posible que un sistema se sobrepagine. Una buena forma de reducir el número de procesos que compiten por la memoria es intercambiar algunos de ellos enviándolos al disco y liberar todas las páginas que ellos mantienen. El proceso de intercambiar procesos para liberar la carga en la memoria es semejante a la planificación de dos niveles, donde ciertos procesos se colocan en disco y se utiliza un planificador de corto plazo para planificar los procesos restantes.

PRIMERA EN ENTRAR, PRIMERA EN SALIR (FIFO, FIRST IN, FIRST OUT)

El tamaño de pagina es un parámetro que el SO puede escoger. Un tamaño de página grande hará que haya mayor proporción de programa que no se utiliza en la memoria que si usan las páginas pequeñas. El empleo de páginas pequeñas implica que los programas, y la tabla de páginas será grande.

​

En algunos ordenadores, la tabla de páginas debe cargarse en registros de hardware que cada CPU conmuta de un proceso a otro.

ESPACIOS SEPARADOS DE INSTRUCCIONES Y DE DATOS

En una computadora con este diseño, ambos espacios de direcciones se pueden paginar de manera independiente. Cada uno tiene su propia tabla de páginas, con su propia asignación de páginas virtuales a marcos de páginas físicas. Cuando el hardware desea obtener una instrucción, sabe que debe utilizar el espacio I y la tabla de páginas de este espacio.

Otra ventaja de la paginación es la posibilidad de compartir programas de uso corriente. Esto es particularmente importante en un entorno de tiempo compartido. Consideremos un sistema que soporta 40 usuarios, cada uno de los cuales ejecuta un editor de textos. Si el editor de textos consta de 30K de código y 5K de espacio para datos, necesitaríamos 1400K para permitir a los 40 usuarios. No obstante, si el programa es reentrante, podría compartirse

​

  • Compartir un código común

  • El código compartido debe estar en el mismo lugar en el espacio de direcciones lógicas de todos los procesos

  • Código reentrante:

  • no puede modificarse a sí mismo

  • nunca cambia durante la ejecución

  • Dos o más procesos pueden ejecutar el mismo código al mismo tiempo.

  • Se pueden compartir: editores de texto, compiladores, sistemas de bases de datos, etc.

  • Cada proceso tiene una copia separada del código

BIBLIOTECAS COMPARTIDAS

Es posible que desee desarrollar un conjunto de recursos comunes y ponerlos a disposición para varias aplicaciones. Si desea desplegar y gestionar solo una copia de esos recursos comunes, utilice una biblioteca compartida.

​

Una biblioteca compartida se puede desplegar directamente para un servidor de integración. Cualquier aplicación puede hacer referencia a los recursos en esa biblioteca compartida desplegada. Si esa biblioteca compartida se actualiza, todas las aplicaciones que hacen referencia recogen los cambios inmediatamente. Las bibliotecas que se han introducido en WebSphere Message Broker Versión 8.0 son bibliotecas estáticas. Si utiliza una biblioteca estática para que contenga recursos, cada aplicación que haga referencia a esa biblioteca estática se despliega con su propia copia privada de dicha biblioteca. Si se actualiza una biblioteca estática, cada aplicación que haga referencia debe volver a empaquetarse y volver a desplegarse con la biblioteca estática actualizada.

​

Se debe desplegar una biblioteca compartida con o antes de una aplicación que haga referencia a ella. Si despliega recursos arrastrándolos hacia un servidor de integración, antes despliegue la biblioteca compartida. Si despliega recursos añadiéndolos a un archivo BAR, asegúrese de incluir todas las bibliotecas compartidas a las que haga referencia la aplicación. De forma similar, no puede eliminar una biblioteca compartida desplegada mientras haya aplicaciones que hacen referencia a ella.

​

Las condiciones siguientes se aplican a la referencia de bibliotecas compartidas:

  • Las bibliotecas compartidas pueden hacer referencia a otras bibliotecas pero no pueden hacer referencia a bibliotecas estáticas.

  • Las bibliotecas estáticas y los proyectos de integración no pueden hacer referencia a bibliotecas compartidas.

  • Si una aplicación hace referencia a más de una biblioteca compartida, la aplicación tiene visibilidad de los recursos en todas las bibliotecas compartidas, pero cada biblioteca compartida no tiene automáticamente visibilidad de los recursos en las otras bibliotecas compartidas.

  • Si una biblioteca compartida (A) hace referencia a otra biblioteca compartida (B), la biblioteca compartida A tiene visibilidad de los recursos de la biblioteca compartida B, pero la biblioteca compartida B no tiene visibilidad sobre los recursos en la biblioteca compartida A.

  • Si una biblioteca compartida (A) hace referencia a otra biblioteca compartida (B), la biblioteca compartida B no puede crear una referencia a la biblioteca compartida A.

TAMAÑO DE PÁGINA
PÁGINAS COMPARTIDAS

ASIGNATURA:

SISTEMAS OPERATIVOS
 

PERIODO/NIVEL/SEMESTRE:

SEGUNDO “A”,  “B” Y “C”

DOCENTE:

ING. MARIO MARCILLO MERINO
 

Gracias por visitar nuestra pagina si te gusto el contenido deja tu comentario

CLICK...

26/07/2017 “A”

19/07/2017 “B”

25/07/2017 “C”

28/07/2017 “A”

28/07/2017 “B”

27/07/2017 “C”

04/08/2017 “A”

04/08/2017 “B”

03/08/2017 “C”

Título del sitio

Modificación hecha por: Alex León

1
bottom of page