Unidad3

27
Sistemas Operativos I Unidad 3 Universidad Autónoma de Nayarit 1 3. ADMINISTRACIÓN DE MEMORIA 3.1 MANEJO DE LA MEMORIA REAL La organización y administració n de la Memoria principal, memoria primaria o memoria real de un sistema de cómputo ha sido uno de los factores más importantes que influyen en el diseño de los sistemas operativos. Los términos memoria y almacenamiento se han utilizado como sinónimos en la literatura. Los programas y datos deben residir en la memoria principal para poderlos ejecutar o para hacer referencia directamente a ellos. El almacenamiento secundario (el medio más común es el disco magnético), proporciona capacidad barata y en gran escala para los numerosos programas y datos que deben mantenerse disponibles para su procesamiento. 3.1.1 ORGANIZACIÓN Y ADMINISTRACIÓN DEL ALMACENAMIENTO Por organización del almacenamiento se entiende la forma de considerar el almacenamiento principal. Esto es, la manera como se estructura la memoria en sentido físico. La administración del almacenamiento se orienta a lograr determinado comportamiento de una organización de almacenamiento cuando se siguen diferentes políticas. 3.1.2 JERARQUÍA DEL ALMACENAMIENTO Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer referencia de ellos. Los programas o datos que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario hasta que se necesiten y en ese momento se transfieren al almacenamiento principal para ser ejecutados o hacer referencia a ellos. Los medios de almacenamiento secundario, como cintas o discos, son en general menos costosos que el almacenamiento principal y su capacidad es mucho mayor. Normalmente es mucho más rápido el acceso al almacenamiento principal que al secundario. En los sistemas con varios niveles de almacenamiento hay muchas transferencias constantes de programas y datos entre los diferentes niveles. Estas trasferencias consumen recursos del sistema, como tiempo de la CPU, que de otro modo podría utilizarse con provecho. En los años sesenta se hizo evidente que la jerarquía del almacenamiento podría extenderse un nivel más con una clara mejora del rendimiento y la utilización. Este nivel adicional, la memoria caché, es un almacenamiento de alta velocidad, mucho más rápido que el almacenamiento principal. La memoria caché es extremadamente cara, comparada con la memoria principal, por lo que sólo se utilizan memorias caché relativamente pequeñas. La memoria caché introduce un nivel adicional de transferencia de información en el sistema. Los programas en memoria principal se pasan a la memoria caché antes de ejecutarse. En la memoria caché se pueden ejecutar mucho más rápido que en la principal. La esperanza de los diseñadores que utilizan el concepto de memoria caché es que el trabajo extra requerido por la transferencia de los programas sea mucho menor que el aumento del rendimiento obtenido por la rápida ejecución que es posible en la memoria caché.

description

Información de la Unidad III de la materia de S.O.

Transcript of Unidad3

Page 1: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 1

3. ADMINISTRACIÓN DE MEMORIA 3.1 MANEJO DE LA MEMORIA REAL La organización y administración de la Memoria principal, memoria primaria o memoria real de un sistema de cómputo ha sido uno de los factores más importantes que influyen en el diseño de los sistemas operativos. Los términos memoria y almacenamiento se han utilizado como sinónimos en la literatura. Los programas y datos deben residir en la memoria principal para poderlos ejecutar o para hacer referencia directamente a ellos. El almacenamiento secundario (el medio más común es el disco magnético), proporciona capacidad barata y en gran escala para los numerosos programas y datos que deben mantenerse disponibles para su procesamiento. 3.1.1 ORGANIZACIÓN Y ADMINISTRACIÓN DEL ALMACENAMIENTO Por organización del almacenamiento se entiende la forma de considerar el almacenamiento principal. Esto es, la manera como se estructura la memoria en sentido físico. La administración del almacenamiento se orienta a lograr determinado comportamiento de una organización de almacenamiento cuando se siguen diferentes políticas. 3.1.2 JERARQUÍA DEL ALMACENAMIENTO Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer referencia de ellos. Los programas o datos que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario hasta que se necesiten y en ese momento se transfieren al almacenamiento principal para ser ejecutados o hacer referencia a ellos. Los medios de almacenamiento secundario, como cintas o discos, son en general menos costosos que el almacenamiento principal y su capacidad es mucho mayor. Normalmente es mucho más rápido el acceso al almacenamiento principal que al secundario. En los sistemas con varios niveles de almacenamiento hay muchas transferencias constantes de programas y datos entre los diferentes niveles. Estas trasferencias consumen recursos del sistema, como tiempo de la CPU, que de otro modo podría utilizarse con provecho. En los años sesenta se hizo evidente que la jerarquía del almacenamiento podría extenderse un nivel más con una clara mejora del rendimiento y la utilización. Este nivel adicional, la memoria caché, es un almacenamiento de alta velocidad, mucho más rápido que el almacenamiento principal. La memoria caché es extremadamente cara, comparada con la memoria principal, por lo que sólo se utilizan memorias caché relativamente pequeñas. La memoria caché introduce un nivel adicional de transferencia de información en el sistema. Los programas en memoria principal se pasan a la memoria caché antes de ejecutarse. En la memoria caché se pueden ejecutar mucho más rápido que en la principal. La esperanza de los diseñadores que utilizan el concepto de memoria caché es que el trabajo extra requerido por la transferencia de los programas sea mucho menor que el aumento del rendimiento obtenido por la rápida ejecución que es posible en la memoria caché.

Page 2: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 2

3.1.3 ESTRATEGIAS DE ADMINISTRACIÓN DEL ALMACENAMIENTO Los recursos caros se administran intensivamente para obtener una mejor utilización. Las estrategias de la administración del almacenamiento se ajustan para obtener el mejor aprovechamiento posible del recurso de almacenamiento principal. Las estrategias de la administración del almacenamiento se dividen en las siguientes categorías.

1. Estrategias de obtención a) Estrategias de obtención por demanda b) Estrategias de obtención anticipada

2. Estrategias de colocación 3. Estrategias de reemplazo

Las estrategias de obtención determinan cuándo debe obtenerse la siguiente parte del programa o los datos que se van a transferir del almacenamiento secundario al principal. Las estrategias de colocación tienen que ver con la determinación de la parte del almacenamiento principal donde se colocará un programa entrante. Las estrategias de reemplazo están relacionadas con la determinación de qué parte del programa o de los datos se debe desalojar para dejar espacio a los programas entrantes. 3.1.4 ASIGNACIÓN DEL ALMACENAMIENTO CONTIGUO Y NO CONTIGUO Los primeros sistemas de cómputo requerían una asignación de almacenamiento contiguo: cada programa tenía que ocupar un único bloque contiguo de localidades de memoria. No fue sino hasta que se intentó hacer multiprogramación con particiones variables cuando quedó claro que podía ser útil la asignación de almacenamiento no contiguo. En la asignación de almacenamiento no contiguo un programa se divide en varios bloques o segmentos que se pueden colocar en el almacenamiento principal en fragmentos que no necesitan ser adyacentes. Es más difícil para un sistema operativo controlar la asignación del almacenamiento no contiguo, pero la ventaja es que, si el almacenamiento principal tiene muchos huecos pequeños disponibles en lugar de un único hueco grande, el sistema operativo a menudo puede cargar y ejecutar un programa que en otro caso tendría que esperar. 3.1.5 ASIGNACIÓN DE ALMACENAMIENTO CONTIGUO PARA UN USUARIO ÚNICO Los primeros sistemas de cómputo permitían que sólo una persona a la vez utilizara la máquina. Todos los recursos de la máquina estaban a disposición del usuario. El cobro del uso del computador era muy simple: como el usuario disponía de toda la máquina, se le cobraban todos los recursos, ya fuera que sus trabajos los utilizaran o no. De hecho, el mecanismo de cobro normal se basaba en el tiempo de reloj. La máquina se asignaba a un usuario por algún tiempo determinado y se le cobraba una tarifa fija por hora Algunos de los sistemas compartidos actuales tienen algoritmos de cobro mucho más complejos. Originalmente, cada usuario escribía todo el código necesario para realizar una aplicación específica, incluyendo las detalladas instrucciones de entrada/salida a nivel de la máquina. Muy pronto el código de entrada/salida requerido para realizar las funciones básicas se consolidó en un sistema de control de entrada/salida (input/output control system, IOCS).

Page 3: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 3

Los usuarios que querían hacer entrada/salida ya no tenían que codificar directamente las instrucciones, sino que llamaban a las rutinas de IOCS para realizar el trabajo. Ello simplificaba y aceleraba mucho el proceso de codificación. La implantación de los sistemas de control de entrada/salida bien pudo haber constituido el comienzo del concepto actual de sistemas operativos. La figura lateral ilustra la organización del almacenamiento en un sistema representativo de asignación de almacenamiento contiguo con un único usuario. En tamaño de los programas está limitado por la cantidad de memoria principal, pero es posible ejecutar programas más grandes que el almacenamiento principal utilizando superposiciones (overlay). La figura de abajo ilustra el concepto. Si una sección de un programa no se necesita durante el resto de la ejecución del programa, entonces se puede traer del almacenamiento secundario otra sección del programa para ocupar el espacio utilizado por la que ya no se necesita. Las superposiciones ofrecen al programador una forma de ampliar el almacenamiento principal limitado. Sin embargo, la superposición manual exige una cuidadosa planificación y lleva mucho tiempo.

Page 4: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 4

Protección en los sistemas de usuario único En los sistemas de asignación de almacenamiento contiguo para un solo usuario, este último tiene un control absoluto sobre todo el almacenamiento principal. La memoria se divide en una parte en la que residen las rutinas del sistema operativo, otra en la que residen los programas del usuario y otra no utilizada. La cuestión de la protección es sencilla. Si el programa del usuario se desvía puede destruir el sistema operativo. Si esto resulta fatal y el usuario no puede proseguir, sabrá que algo anda mal, terminará la ejecución, arreglará el problema y volverá a intentar la ejecución de su programa. En tales circunstancias no resulta evidente la necesidad de proteger el sistema operativo. Pero supóngase que el usuario destruye el sistema operativo más "sutilmente". Por ejemplo, supóngase que ciertas rutinas de entrada/salida son modificadas por accidente, de tal modo que pueden estar truncados todos los registros de salida. El trabajo puede seguir en ejecución; pero si los resultados no se examinan sino hasta que se completa el trabajo, entonces se estarán desperdiciando los recursos de máquina. Peor aún, el daño al sistema operativo puede hacer que se produzcan salidas cuyos errores no san evidentes. Sin duda es obvio que el sistema operativo se debe proteger del usuario. La protección se realiza con un registro de límites único integrado en la CPU, como se muestra en la figura siguiente. Cada vez que un programa de usuario hace referencia a una dirección de memoria, se revisa el registro de límites para verificar que el usuario no está a punto de destruir el sistema operativo. El registro de límites contiene la dirección más alta utilizada por el sistema operativo. Si el usuario intenta entrar en el sistema operativo, se intercepta la instrucción y el trabajo termina con un mensaje de error apropiado.

Page 5: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 5

Naturalmente, el usuario necesita entrar de vez en cuando en el sistema operativo para utilizar algunos servicios, como la entrada/salida. El problema se resuelve dando al usuario una instrucción específica con la cual puede solicitar los servicios del sistema operativo (es decir, una instrucción de llamada al supervisor). El usuario que desee leer en una cinta enviará una instrucción solicitando al sistema operativo que lo haga por él. El sistema operativo realizará la función deseada y después devolverá el control al programa del usuario. A medida que se han vuelto más complejos los sistemas operativos ha sido necesario llevar a la práctica mecanismos más avanzados para proteger al sistema operativo de los usuarios y proteger a éstos entre sí. 3.1.6 MULTIPROGRAMACIÓN CON PARTICIONES FIJAS Aun con los sistemas operativos de procesamiento por lotes, los sistemas de usuario único siguen desperdiciando una gran cantidad de los recursos de cómputo. La siguiente Figura ejemplifica la situación. El programa consume el recurso de la CPU hasta que se necesita una entrada o una salida. Cuando se genera la solicitud de E/S, es frecuente que el trabajo no pueda continuar sino hasta que se envíen o reciban los datos requeridos. Las velocidades de entrada y salida son muy bajas, en comparación con las velocidades de la CPU.

Los diseñadores vieron que otra vez podrían aumentar notablemente el aprovechamiento de la CPU mediante una administración intensiva. Esta vez decidieron realizar sistemas de multiprogramación en los cuales varios usuarios compiten al mismo tiempo por los recursos del sistema. El trabajo que está esperando la terminación de una operación E/S cederá la CPU a otro trabajo que esté listo para realizar cálculos, si es que hay uno en espera. De esta forma pueden efectuarse simultáneamente las operaciones de E/S y los cálculos de la CPU. Esto mejora mucho el aprovechamiento de la CPU y los resultados del sistema.

Page 6: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 6

Para aprovechar al máximo la multiprogramación, es necesario que varios trabajos residan al mismo tiempo en el almacenamiento principal del computador. Así, cuando un trabajo solicita E/S, la CPU puede conmutarse de inmediato a otro y realizar cálculos sin retraso. Cuando este nuevo trabajo abandona la CPU, otro puede estar listo para utilizarla. La multiprogramación requiere por lo regular mucho más almacenamiento que un sistema de usuario único. Sin embargo, la mejor utilización de la CPU y los dispositivos periféricos justifica de sobra el costo del almacenamiento adicional. 3.1.7 MULTIPROGRAMACIÓN CON PARTICIONES VARIABLES Al observar los diseñadores de sistemas operativos los problemas de la multiprogramación con particiones fijas, decidieron que una mejora evidente sería permitir que los trabajos ocuparon tanto espacio como necesitaran (pero no todo el almacenamiento real). No se impondrían límites fijos, sino que se daría a los trabajos todo el almacenamiento que necesitaran. Este esquema se denomina multiprogramación con particiones variables. En la figura siguiente se ilustra la asignación inicial de las particiones en un sistema de multiprogramación con particiones variables.

Aquí sólo se tratarán los esquemas de asignación contigua: un trabajo debe ocupar localidades de memoria contiguas. En la multiprogramación con particiones variables no se hacen suposiciones sobre el tamaño de los trabajos (excepto que no deben ser mayores que el almacenamiento principal disponible en el computador). Si cuando llega un trabajo los mecanismos de planificación deciden que debe proseguir, se le asigna tanto espacio como necesite. No hay desperdicio, pues la partición de un trabajo tiene exactamente el tamaño del trabajo. No obstante, todo esquema de organización del almacenamiento implica algún grado de desperdicio.

Page 7: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 7

En la multiprogramación con particiones variables, el desperdicio no se hace evidente sino hasta que los trabajos empiezan a terminar y dejan huecos en el almacenamiento principal. Como se muestra en la siguiente figura. Otros trabajos pueden utilizar dichos huecos, pero entonces los huecos restantes se hacen más pequeños, acabando por ser tan reducidos que no pueden contener nuevos trabajos. Así pues, en la multiprogramación con particiones variables también hay desperdicio.

Condensación de Huecos Cuando termina un trabajo en un sistema de multiprogramación con particiones variables, se puede comprobar si el almacenamiento liberado colinda con otras áreas libres del almacenamiento (huecos). Si es así, se puede registrar en la lista de almacenamiento libre ya sea (1) un hueco adicional o (2) un hueco único que refleje la unión del hueco existente y del nuevo hueco adyacente.

El proceso de fusionar huecos adyacentes para formar un solo hueco más grande se denomina condensación y se ilustra en la figura siguiente. Mediante la condensación de huecos se pueden recuperar los bloques contiguos de almacenamiento más grandes que sean posibles.

Page 8: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 8

Compactación del almacenamiento. A pesar de la condensación de los huecos, muchas veces resulta que los huecos individuales distribuidos a lo largo del almacenamiento principal constituyen una parte significativa del almacenamiento. A veces, cuando un trabajo pide cierta cantidad de almacenamiento principal, ningún hueco individual es lo bastante grande para contenerlo, aunque la suma de todos los huecos sea mayor que el almacenamiento requerido por el nuevo trabajo.

La técnica de compactación del almacenamiento implica trasladar todas las áreas ocupadas del almacenamiento a algún extremo de la memoria principal. Esto deja un gran hueco único de almacenamiento libre, en lugar de los numerosos huecos pequeños característicos de la multiprogramación con particiones variables. Ahora todo el almacenamiento libre está contiguo, así que un trabajo en espera puede ejecutarse si sus necesidades de memoria son satisfechas por el hueco único resultante de la compactación. A veces, y en forma por demás pintoresca, la compactación del almacenamiento se denomina eructo del almacenamiento (burping the storage). Un nombre más convencional es recolección de basura (garbage collection).

La compactación presenta los siguientes inconvenientes. ü Consume recursos del sistema que podrían utilizarse en forma productiva. ü El sistema debe detener todas sus actividades mientras realiza la compactación. Ello puede ocasionar tiempos de

respuestas irregulares para usuarios interactivos y podría ser devastador en sistemas de tiempo real. ü La compactación implica reubicar los trabajos que estén en el almacenamiento. Eso significa que la información

requerida para realizar la reubicación, que se pierde por lo regular cuando se carga un programa, debe ahora mantenerse accesible.

ü Con una combinación normal de trabajos que cambia rápidamente, a menudo es necesario compactar. Los recursos del sistema que se consuman quizá no justifiquen las ventajas de la compactación.

Page 9: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 9

Estrategias de colocación en almacenamiento Las estrategias de colocación en almacenamiento sirven para determinar en qué lugar del almacenamiento principal se deben colocar los programas y datos entrantes. En la figura siguiente se ilustran tres estrategias mencionadas a menudo en la literatura. ü Estrategia del mejor ajuste: Un trabajo

que entre en el sistema se colocará en el hueco del almacenamiento principal en el que quepa mejor y que deje la menor cantidad posible de espacio sin utilizar. Para muchos, el mejor ajuste parece ser intuitivamente la estrategia más atractiva.

ü Estrategia del primer ajuste: Un trabajo que entre en el sistema se colocará en el almacenamiento principal en el primer hueco disponible lo bastante grande para contenerlo. Intuitivamente, el primer ajuste también es atractivo, pues permite decidir con rapidez dónde se colocará un trabajo.

ü Estrategia del peor ajuste: A primera vista ésta parecería una elección extravagante, pero después de un examen más cuidadoso, el peor ajuste también posee un fuerte atractivo intuitivo. El peor ajuste consiste en colocar un programa en el almacenamiento primar io en el hueco donde peor se ajusta, es decir, en el hueco más grande posible. El atractivo intuitivo es sencillo: Después de colocar el programa en ese gran hueco, el hueco restante a menudo será también grande y por consiguiente podrá contener un nuevo programa relativamente grande.

Una variante de la estrategia del primer ajuste, denominada estrategia del siguiente ajuste, comienza cada búsqueda de un hueco disponible en el lugar donde terminó la búsqueda anterior. 3.1.8 MULTIPROGRAMACIÓN CON INTERCAMBIO DE ALMACENAMIENTO En algunos sistemas de intercambio (Swapping), un trabajo ocupa el almacenamiento principal de una vez. Ese trabajo se ejecuta hasta que no puede continuar y entonces cede el almacenamiento y la CPU al siguiente trabajo. Así todo el almacenamiento está dedicado a un trabajo por un periodo breve; después se saca ese trabajo (es decir, se intercambia con el de afuera) y se carga el siguiente (es decir, se intercambia con el de adentro).

Page 10: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 10

Un trabajo normalmente será intercambiado en ambos sentidos repetidas veces antes de completarse.

Muchos de los primeros sistemas de tiempo compartido se efectuaron con esta técnica de intercambio. Se podían garantizar tiempos de respuesta razonables para unos pocos usuarios, pero los diseñadores sabían que se necesitarían mejores técnicas para manejar un gran número de usuarios. Los sistemas de intercambio de principios de los años sesenta dieron lugar a los sistemas de paginación de uso común en la actualidad. Se han desarrollado sistemas de intercambio más avanzados que permiten mantener en memoria principal varias imágenes (copias) de usuario al mismo tiempo. En estos sistemas una imagen de usuario se saca sólo cuando su almacenamiento es requerido por una imagen de usuario entrantes. Con suficiente espacio de almacenamiento, tales sistemas reducen considerablemente el tiempo gastado en los intercambios.

Page 11: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 11

3.2 ORGANIZACIÓN DE LA MEMORIA VIRTUAL El término almacenamiento virtual suele asociarse con la capacidad para obtener acceso a direcciones en un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de un sistema de cómputo determinado. El almacenamiento virtual no es un concepto nuevo. Apareció por primera vez en el sistema de cómputo Atlas construido en la Universidad de Manchester, Inglaterra, en 1960. No obstante, el empleo generalizado de los sistemas de almacenamiento virtual es relativamente reciente. Los microprocesadores actuales manejan el almacenamiento virtual. Los dos métodos más comunes para poner en práctica el almacenamiento virtual son la paginación y la segmentación. Algunos sistemas de almacenamiento virtual emplean una técnica u otra, mientras que algunos otros utilizan ambas. Todos los sistemas de almacenamiento virtual tienen la propiedad de que las direcciones calculadas por programas en ejecución no son necesariamente las disponibles en el almacenamiento primario. De hecho, las direcciones virtuales se seleccionan por lo regular de un conjunto de direcciones mucho más grande que el disponible en el almacenamiento primario. 3.2.1 EVOLUCIÓN DE LA ORGANIZACIÓN DEL ALMACENAMIENTO La figura muestra cómo ha evolucionado la organización del almacenamiento desde los sistemas de almacenamiento real dedicados a un solo usuario hasta los sistemas de almacenamiento virtual que combinan técnica paginación y segmentación. Real Real Virtual

3.2.2 ALMACENAMIENTO VIRTUAL: CONCEPTOS BÁSICOS La clave del concepto de almacenamiento virtual es la disociación de las direcciones a las que hace referencia un proceso en ejecución de las direcciones disponibles en el almacenamiento primario. Las direcciones a las que hace referencia un proceso en ejecución se conocen como direcciones virtuales. Las direcciones disponibles en el almacenamiento primario se conocen como direcciones reales. El intervalo de direcciones virtuales a las que puede hacer referencia un proceso en ejecución se conoce como espacio de direcciones virtuales, V, del proceso.

Page 12: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 12

El intervalo de direcciones reales disponibles en un sistema de cómputo determinando se conoce como espacio de direcciones reales, R, del computador. El número de direcciones en V se denota |V|, y el número de direcciones en R, |R|. En los sistemas de almacenamiento virtual ya implantados lo normal es que |V| >> |R|, aunque se han construido sistemas en los cuales |V| < |R|. Aunque los procesos sólo hacen referencia a direcciones virtuales, deben ejecutarse en el almacenamiento real. Por tanto, es preciso establecer la correspondencia entre las direcciones virtuales y las reales durante la ejecución de un proceso. Esto debe hacerse con rapidez, pues en caso contrario el rendimiento del sistema se degradaría a niveles inaceptables, eliminando así las ganancias logradas por el empleo del concepto de almacenamiento virtual (figura 3.17)

Almacenamiento virtual

3.2.3 PAGINACIÓN: CONCEPTOS BÁSICOS Teniendo en cuenta la complejidad del manejo de bloques de tamaño variable en la multiprogramación con particiones variables, lo más conveniente es comenzar con la correspondencia de bloques de tamaño fijo; es decir, la paginación.

Figura 3.19 Formato de dirección virtual en un sistema de paginación pura.

Una dirección virtual en un sistema de paginación es un par ordenado (p, d) en el cual p es el número de la página del almacenamiento virtual en la que reside el elemento al que se hace referencia, y d es el desplazamiento dentro de la página p donde se localiza dicho elemento(figura 3.19). Un proceso puede ejecutarse si su página activa se encuentra en el almacenamiento primario. Las páginas se transfieren del almacenamiento secundario al primario y se colocan dentro de bloques llamados marcos de página que tienen el mismo tamaño que las páginas entrantes. Los marcos de página comienzan en direcciones de almacenamiento real que son múltiplos enteros del tamaño fijo de la página. Una página entrante puede colocarse en cualquier marco de página disponible.

Page 13: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 13

Nota: Los marcos de pagina son receptáculos, nichos o huecos donde se van a depositar bloques de información. La traducción dinámica de direcciones en la paginación se realiza de la siguiente forma. Un proceso en ejecución hace referencia a una dirección de almacenamiento virtual v=(p, d). Un mecanismo de correspondencia de páginas busca la página p en una tabla de correspondencia de páginas y determina que la página p se encuentra en el marco de página p’ . La dirección de almacenamiento real se forma concatenando p’ y d. Ahora consideremos el proceso con mayor detalle.

Debido sobre todo a que normalmente no todos las páginas del proceso se encuentran en el almacenamiento primario al mismo tiempo, la tabla de correspondencia de páginas debe indicar si la página a la que se hace referencia se encuentra o no en el almacenamiento primario; si sí está, donde se encuentra y si no, dónde puede encontrarse en el almacenamiento secundario. La figura de la siguiente pagina muestra una tabla de correspondencia de páginas representat ivas. Un bit de residencia de página, r, tiene valor 0 si la pagina no se encuentra en el almacenamiento primario, entonces s es su dirección en el almacenamiento secundario.

Page 14: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 14

Si la página se encuentra en el almacenamiento primario, entonces p’ es su número de marco de página. Obsérvese que p’ no es una dirección real en el almacenamiento primario; la dirección de almacenamiento primario en la cual comienza el marco de página, p’’ es el producto de p’ y el tamaño fijo de la página (suponiendo que los marcos de páginas estén numerados consecutivamente a partir de cero).

Traducción de direcciones en la paginación por correspondencia directa Un proceso en ejecución hace referencia a una dirección virtual v = (p,d). Antes de que un proceso comience su ejecución, el sistema carga (durante la conmutación de contexto) la dirección en almacenamiento primario de la tabla de correspondencia de páginas en el registro de origen de la tabla de correspondencia de páginas. La dirección base, b, de la tabla de correspondencia de páginas se suma al número de página, p, para formar la dirección en almacenamiento primario, b + p, de la entrada de la página p en la tabla de correspondencia de páginas. Esta entrada indica que el marco de página p' corresponde a la página virtual p. Después, p' se concatena con el desplazamiento, d, para formar la dirección real, r Se dice que éste es un ejemplo de correspondencia directa porque la tabla de correspondencia de páginas contiene una entrada para cada página del almacenamiento virtual del proceso.

Page 15: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 15

Si el proceso tiene n páginas en su almacenamiento virtual, entonces la tabla de correspondencia de páginas con correspondencia directa del proceso contiene entradas sucesivas para las páginas 0, 1, 2,..., n -1. La correspondencia directa se parece mucho al acceso a un elemento de un arreglo mediante índices; cualquier entrada de la tabla puede localizarse directamente con un solo acceso a la tabla, véase la figura siguiente. Tanto la dirección virtual que se traduce, como la dirección base de la tabla de correspondencia de páginas, se conservan en registros de alta velocidad en el procesador central, de manera que las operaciones en las que participan pueden realizarse con rapidez dentro de un solo ciclo de ejecución de instrucciones. Pero la tabla de correspondencia de páginas con correspondencia directa, que puede ser muy grande, se conserva por lo regular en almacenamiento primario. En consecuencia, la referencia a la tabla requiere un ciclo completo de almacenamiento primario. Como el tiempo de un ciclo de almacenamiento primario representa la mayor parte de un ciclo de ejecución de instrucciones y se necesita un ciclo de ejecución de almacenamiento primario adicional para la correspondencia de páginas, el empleo de traducción de direcciones de páginas mediante correspondencia directa puede hacer que el sistema ejecute los programas a la mitad de la velocidad, lo cual es inadmisible. Por tanto, para lograr una traducción más rápida, la mayor parte de los sistemas actuales colocan la tabla completa de correspondencia directa de páginas en una memoria caché de muy alta velocidad. Tal cosa ha sido posible gracias a que los costos de la memoria caché han disminuido constantemente debido a los avances en la tecnología de memorias. Traducción de direcciones en la paginación por correspondencia asociativa Una forma de acelerar la traducción dinámica de direcciones, es colocar toda tabla de correspondencia de páginas dentro de un almacenamiento asociativo accesible por contenido (y no por dirección), el cual tiene ciclos de un orden de magnitud más rápidos que los del almacenamiento primario. La figura lateral muestra cómo se realiza la traducción dinámica de direcciones con una correspondencia asociativa pura. Un programa en ejecución hace referencia a una dirección virtual V = (p,d). Cada entrada en el almacenamiento asociativo se revisa en forma simultánea en busca de la página p. Se devuelve p' como el marco de página que corresponde a p, y p' se concatena con d para formar la dirección real, r. Obsérvese que las flechas dirigidas al mapa de correspondencias asociativo entran realmente en cada celda del mapa. Esto indica que se revisa al mismo tiempo cada celda del almacenamiento asociativo en busca de p. Ésta es la razón de que el almacenamiento asociativo tenga un costo prohibitivo, aun comparado con la memoria caché, por lo que nunca se utiliza la correspondencia asociativa pura; aquí se muestra por si alguna vez se vuelve económica la correspondencia asociativa. De nuevo, el dilema que se presenta es que la traducción dinámica de direcciones debe ejecutarse con rapidez para hacerse práctico el concepto de almacenamiento virtual.

Page 16: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 16

3.2.4 SEGMENTACIÓN En la multiprogramación con particiones variables, la colocación de los programas en el almacenamiento se realiza con una técnica del primer ajuste, mejor ajuste o peor ajuste. No obstante, persis te la limitación de ejecutar los programas en un bloque de localidades contiguas de almacenamiento real. En los sistemas de almacenamiento real con segmentación se elimina dicha restricción y un programa (y sus datos) pueden ocupar muchos bloques separados de almacenamiento real. Los bloques no tienen que ser del mismo tamaño y sí deben estar formados por localidades contiguas, pero no es forzoso que ellos sean adyacentes.

Page 17: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 17

Figura 3.28 Protección de almacenamiento con claves en una asignación de almacenamiento no contigua en un sistema de

multiprogramación. Mientras la clave de protección de la UCP sea 2 (correspondiente al usuario B), el programa del usuario B sólo podrá hacer referencia a otros bloques de almacenamiento con la misma clave de protección. Estas claves

están bajo el estricto control del sistema operativo y sólo pueden manipularse mediante instrucciones privilegiadas. Esto da pie a varios problemas interesantes. Por ejemplo, el problema de evitar que un usuario sea destruido por otros resulta ahora más complejo. Ya no es suficiente con un par de registros de límites. Así mismo, resulta más difícil limitar el intervalo de acceso de un programa. Uno de los esquemas para lograr la protección del almacenamiento en los sistemas con segmentación es el empleo de claves de protección del almacenamiento, como se ilustra en la figura 3.28. En los sistemas de almacenamiento virtual con segmentación, una dirección virtual es un par ordenado v = (s, d), donde s es el número de segmento en almacenamiento virtual en el que se encuentra el elemento al que se hace referencia y d es el desplazamiento dentro del segmento s en donde se localiza dicho elemento (Figura 3.29). Un proceso sólo se puede ejecutar si su segmento activo (como mínimo) se encuentra en el almacenamiento primario. Los segmentos se transfieren del almacenamiento secundario al primario como unidades completas. Todas las localidades del segmento se colocan en localidades contiguas del almacenamiento primario. Un segmento entrante puede colocarse en cualquier área disponible del almacenamiento primario cuyo tamaño sea suficiente para contenerlo. Las estrategias de colocación para la segmentación son idénticas a las empleadas en la multiprogramación con particiones variables, y las técnicas más comunes son las del primer ajuste y del mejor ajuste.

Page 18: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 18

Dirección virtual

v= (s,d)

Figura 3.29 Formato de dirección virtual en un sistema de segmentación pura. La traducción dinámica de direcciones en la segmentación se realiza de la siguiente forma. Un proceso en ejecución hace referencia a una dirección de almacenamiento virtual v = (s, d) (Figura 3.30). Un mecanismo de correspondencia de segmentos busca el segmento s en la tabla de correspondencia de segmentos y determina que el segmento s se encuentra en el almacenamiento real a partir de la dirección s’. La dirección de almacenamiento real correspondiente a la dirección de almacenamiento virtual v = (s, d) se forma sumando s’ y d.

3.2.5 SISTEMAS CON PAGINACIÓN/SEGMENTACIÓN Tanto la segmentación como la paginación ofrecen ventajas significativas como organizaciones del almacenamiento virtual. A partir de los sistemas construidos a mediados de los años sesenta, en particular Multics y el TSS de IBM, se han construido muchos sistemas que combinan la paginación con la segmentación. Tales sistemas ofrecen las ventajas de ambas técnicas de organización del almacenamiento virtual.

Page 19: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 19

Los segmentos tienen por lo general un tamaño múltiplo de páginas; no es necesario que todas las páginas de un segmento estén en almacenamiento primario a la vez, y las páginas que son contiguas en el almacenamiento virtual no son por fuerza contiguas en el almacenamiento real. Las direcciones son tridimensionales, y una dirección de almacenamiento virtual, v, es una tripleta ordenada v = (s,p,d), donde s es el número de segmento, p el número de página dentro del segmento y d el desplazamiento dentro de la página donde se encuentra el elemento deseado (Figura 3.35).

Dirección virtual v= (s,p,d)

Figura 3.35 Formato de dirección virtuales en un sistema con paginación y

segmentación. Traducción dinámica de direcciones en sistemas con paginación/segmentación Considérese ahora la traducción dinámica de direcciones virtuales a direcciones reales en un sistema con paginación/segmentación que utiliza correspondencia combinada asociativa/directa como se muestra en la figura 3.36A. Un proceso en ejecución hace referencia a una dirección virtual v=(s,p,d). Las páginas a las que se ha hecho referencia más recientemente tienen entradas en un almacenamiento parcialmente asociativo. Se realiza una búsqueda asociativa para tratar de localizar (s,p) en el almacenamiento asociativo. Si se encuentra (s,p), entonces el marco de página del almacenamiento primario p’ en el cual reside la página p del segmento s, se concatena con el desplazamiento d para formar la dirección real, r, correspondiente a la dirección virtual v=(s,p,d), con lo cual finaliza la traducción de la dirección. Por lo regular, la mayor parte de las peticiones de traducción de direcciones son satisfechas mediante la búsqueda en el almacenamiento asociativo. Cuando esto no es posible, se establece una correspondencia directa de la siguiente forma. La dirección base, b, de la tabla de mapa de correspondencia de segmentos (en almacenamiento primario) se suma el número de segmentos, s, para formar la dirección, b + s, de la entrada para el segmento s en la tabla de mapa de correspondencia de segmentos en el almacenamiento primario. La entrada en dicha tabla índica la dirección base s’, de la tabla de páginas (en el almacenamiento primario) para el segmento s. El número de página, p, se suma a s’ para firmar la dirección p+s’, de la tabla de páginas para la página p del segmento s. Esta tabla indica que p’ es el número de marco de página que corresponde a la página virtual p. El número de marco, p’, se concatena con el desplazamiento, d, para formar la dirección real, r, correspondiente a la dirección virtual v=(s,p,d).

Número de segmento s

Número de página p

Desplazamiento d

Page 20: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 20

Figura 3.36A Traducción de direcciones virtuales con correspondencias asociativa / directa combinada en un sistema

con paginación y segmentación

Page 21: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 21

Figura 3.36B Traducción de direcciones virtuales con correspondencia directa en un sistema con paginación y

segmentación combinados. Este proceso de traducción da por hecho, desde luego, que cada elemento de información se encuentra donde se supone que debe estar. Pero hay muchos pasos donde puede fallar el proceso. La búsqueda en la tabla de mapa de correspondencia de segmentos puede indicar que el segmento s no se encuentra en el almacenamiento primario, lo que ocasiona una falla por falta de segmentos y hace que el sistema operativo localice el segmento en el almacenamiento secundario, cree una tabla de páginas para el segmento y cargue la página apropiada en el almacenamiento primario, reemplazando posiblemente una página existente de ese proceso o de algún otro. Si el segmento se encuentra en el almacenamiento primario, la referencia a la tabla de mapa de correspondencia de páginas puede indicar que la página deseada no se encuentra en el almacenamiento primario. Ello generaría una falla de página, haciendo que el sistema operativo tome el control, localice la página en el almacenamiento secundario y la cargue (una vez más, reemplazando posiblemente otra página).

Page 22: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 22

Al igual que en la segmentación pura, una dirección de almacenamiento virtual puede rebasar el final del segmento, generando así una excepción por desbordamiento de segmento. Por otra parte, los bits de protección también pueden indicar que no está permitida la operación que se va a realizar sobre la dirección virtual a la que se hace referencia, con lo que se genera así una excepción por protección del segmento. El sistema operativo debe manejar todas estas posibilidades. 3.3 ADMINISTRACIÓN DE LA MEMORIA VIRTUAL 3.3.1 ESTRATEGIAS DE ADMINISTRACIÓN DE MEMORIA VIRTUAL ü Estrategias de obtención. Determinan cuándo se debe transferir una página o un segmento del

almacenamiento secundario al primario. Las estrategias de obtención por demanda esperan a que un proceso en ejecución haga referencia a una página o un segmento antes de extraer la página o el segmento al almacenamiento primario. Los esquemas de obtención anticipada intentan determinar por adelantado a cuáles páginas o segmentos hará referencia un proceso. Si la probabilidad de una referencia es alta y hay espacio disponible, entonces se trae al almacenamiento primario la página o el segmento antes de que se haga la referencia explícita.

ü Estrategias de colocación. Determinan en qué lugar del almacenamiento primario se debe colocar una página o un segmento entrante. Los sistemas de paginación vuelven trivial la decisión de la colocació n, porque una página entrante se puede ubicar en cualquier marco de la página disponible. Los sistemas con segmentación requieren estrategias de colocación como las tratadas en el contexto de los sistemas de multiprogramación con particiones variables.

ü Estrategias de reemplazo. Sirven para decidir cuál página o segmento se debe desplazar para dejar espacio a una página o segmento entrante cuando está completamente ocupado el almacenamiento primario.

3.3.2 ESTRATEGIAS DE REEMPLAZO DE PÁGINAS En los sistemas con paginación es común que estén en uso todos los marcos de páginas. En este caso, las rutinas de administración del almacenamiento del sistema operativo deben decidir que página del almacenamiento primario se debe desplazar para dejar espacio a una página entrante. Se verán las siguientes estrategias de reemplazo de páginas: ü El principio de optimalidad ü Reemplazo de páginas aleatorio ü Primeras entradas-primeras salidas (PEPS) ü La menos recientemente utilizada (LRU) ü La menos frecuentemente utilizada (LFU) ü La no utilizada recientemente (NUR) ü Modificaciones de PEPS ü Frecuencia de fallas de página ü Paginación por demanda ü Paginación Anticipada

El principio de optimalidad El principio de optimalidad establece que, para obtener un rendimiento optimo, la página que se debe remplazar es aquélla que tardará más tiempo en volver a ser utilizada. Se puede demostrar la optimalidad de esta estrategia, pero desde luego ésta es irrealizable puesto que no podemos predecir el futuro. Esta estrategia óptima de reemplazo se denomina OPT o MIN. Por tanto, para lograr un buen rendimiento se intenta una aproximación al principio de optimalidad utilizado técnicas de reemplazo de páginas que se aproximen al reemplazo óptimo de páginas.

Page 23: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 23

Reemplazo de páginas aleatorio Si se busca una estrategia de reemplazamiento, el reemplazo de páginas aleatorio es una técnica sencilla para lograrlo. Así, todas las páginas que se encuentran en el almacenamiento principal tienen la misma probabilidad de ser elegidas para el reemplazo. Esta estrategia podría seleccionar cualquier página para ser remplazada, incluyendo la siguiente página a la que se hará referencia (lo cuál constituye, por supuesto, la peor elección de reemplazo de páginas). Las decisiones de reemplazo aleatorio de páginas se pueden tomar rápidamente, y con un número significativo de marcos de páginas donde elegir sólo habría una pequeña probabilidad de reemplazar una página a la que se vaya hacer referencia de nuevo casi de inmed iato. Sin embargo, este esquema casi no se utiliza debido a su enfoque aleatorio para acertar o errar. Reemplazo de páginas de primeras entradas-primeras salidas (PEPS) En el reemplazo de páginas de primeras entradas-primeras salidas (PEPS), para cada página se registra el instante en que entró en el almacenamiento primario. Cuando se necesita reemplazar una página, se escoge la que ha permanecido en el almacenamiento primario. Cuando se necesita reemplazar una página, se escoge la que ha permanecido en el almacenamiento durante mayor tiempo. Por lo tanto esta estrategia parece razonable, pues esa página ha tenido su oportunidad y es tiempo de darle una oportunidad a otra página. Lamentablemente, es probable que esta estrategia reemplace páginas muy utilizadas, ya que si una página permanece en el almacenamiento primario durante mucho tiempo puede deberse a que está en uso constante. Por ejemplo en los grandes sistemas de tiempo compartido es común que muchos usuarios compartan una copia de un editor de texto cuando capturan y corrigen sus programas. La estrategia de reemplazo de páginas de primeras entradas-primeras salidas en tales sistemas podría decidir reemplazar una página muy utilizada del editor, y esta será sin duda una mala elección, porque la página se volvería a transferir al almacenamiento principal casi de inmediato. Dicha estrategia también se podría poner en práctica con una simple cola PEPS: a medida que llega una página, se coloca al final de la cola, y las páginas que se reemplaza son las de principio de cola. Reemplazo de páginas de la menos recientemente utilizada (LRU). Esta estrategia selecciona, para su reemplazo, aquella página que no ha sido utilizada durante el mayor tiempo. La estrategia se basa en la heurística de localidad según la cual el pasado reciente es un buen indicador del futuro cercano, de modo que LRU exige que se marque cada página con el instante en que se hace referencia a ella. Esto podría requerir mucho trabajo adicional, por lo que la estrategia LRU pese a ser atractiva, no se usa a menudo en los sistemas actuales; lo que se hace es utilizar estrategias que se aproximen a la LRU y que no ocasionen esos grandes costos. La estrategia LRU se puede realizar con una estructura de listas que contenga una entrada por cada marco de página ocupado. Cada vez que se hace referencia a un marco de páginas, la entrada correspondiente a esa página se coloca al principio de la lista, y las entradas más antiguas se llevan al final de la lista. Cuando hay que reemplazar una página para dejar espacio a otra entrante, se selecciona la entrada final de la lista, se libera el marco de página correspondiente (lo cual posiblemente requiera escribir una página modificada en el almacenamiento secundario), se coloca la página entrante en el marco de página y la entrada correspondiente a ese marco de página se coloca al principio de la lista, porque esa página es la que ha sido utilizada más recientemente. Este esquema llevaría a la práctica fielmente la estrategia LRU, pero también incurre en un considerable trabajo extra.

Page 24: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 24

Siempre hay que tener cuidado al aplicar razonamiento heurísticos en los sistemas operativos. Por ejemplo, en la estrategia LRU, la página menos recientemente usada podría ser la siguiente en ser utilizada, si un programa realiza un ciclo grande que abarque varias páginas. Si se reemplazara la página LRU, el sistema se encontraría a sí mismo transfiriendo esa página de nuevo al almacenamiento principal casi de inmediato. Dicho fenómeno también podría ocurrir en un sistema con una serie de llamadas a procedimientos profundamente anidados; a medida que los procedimientos llamados volvieran a la página que contenía la llamada original, esa página podría reemplazarse fácilmente como página LRU justo antes del retorno final. Reemplazo de páginas de la menos frecuente utilizada (LFU) Una aproximación a LRU es la estrategia de “la menos frecuentemente utilizada”(LFU), en la cual lo importante es la intensidad con la que se ha utilizado cada página; la página por remplazar es aquella que se ha utilizado menos frecuentemente o a la que se ha hecho referencia con menos frecuencia. De nuevo, el atractivo intuitivo es real, pero con toda facilidad se podría seleccionar para reemplazo una página equivocada. Por ejemplo, la página menos frecuentemente utilizada podría ser aquella que se trajo al almacenamiento principal más recientemente. Esa página ha sido utilizado una sola vez, mientras que las demás páginas que se encuentran en almacenamiento principal podrían haber sido utilizadas en varias ocasiones. El mecanismo de reemplazo de páginas reemplazará esta página, aunque de hecho tenga una alta probabilidad de ser utilizada de inmediato. Al parecer, todos los esquemas de reemplazo de páginas corren cierto riesgo de tomar decisiones equivocadas. Esto sucede por el simple hecho de que no se puede predecir con precisión el futuro. Por tanto es deseable una estrategia de reemplazo de paginas que tomo decisiones razonables la mayor parte del tiempo y que implique un gasto extra reducido. Reemplazo de páginas de la no utilizada recientemente (NUR) Un esquema popular de aproximación a la LRU con poco trabajo extra es el de “la no utilizada recientemente” (NUR). No es probable que sean utilizadas pronto las páginas que no sean utilizadas recientemente, por lo que pueden reemplazarse con páginas entrantes. Cuando es deseable reemplazar una página que no ha sido modificada mientras estaba en el almacenamiento primario, la estrategia NUR se lleva a la práctica con la adición de dos bits de hardware por página. Esos bits son :

a) bit de referencia = 0 si no se ha hecho referencia a la página = 1 se ha hecho referencia a la página b) bit de modificación = 0 si la página no ha sido modificada = 1 si la página ha sido modificada

El bit de modificación se denomina a menudo bit sucio. La estrategia NUR trabaja en la forma siguiente. Inicialmente los bits de referencia de todas las páginas valen cero. Cuando ocurre una referencia a una página, su bit de referencia toma el valor 1. Inicialmente, los bits de modificación de todas las páginas valen cero. Cuando una página se modifica, su bit de modificación toma el valor 1. Cuando se va a reemplazar una página, primero se intenta encontrar una página a la que no se ha hecho referencia (por que estamos aproximando la estrategia LRU). De otro modo, no queda más elección que remplazar una página a la que se hizo referencia. Si una página no ha sido objeto de una referencia, se comprueba si ha sido modificada. Si no ha sido se reemplaza, pues requiere menos trabajo que el reemplazo de una página modificada, la cual debe escribirse en el almacenamiento secundario. De otro modo, hay que reemplazar una página modificada. Modificaciones de PEPS; reemplazo de páginas por reloj y reemplazo de páginas con segunda oportunidad

Page 25: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 25

La evidente debilidad de la estrategia PEPS es que puede decidir reemplazar una página muy utilizada que ha permanecido en memoria durante mucho tiempo. Esta posibilidad se puede evitar reemplazando solo aquellas páginas cuyos bits de referencia valgan 0. La variante de PEPS denominada “con segunda oportunidad” examina el bit de referencia de la página más antigua; si este bit vale 0, se selecciona de inmediato la página para ser remplazada. Si el bit de referencia vale 1, se le asigna el valor 0 y la página se pasa al final de la lista y se considera en esencia como una página nueva; gradualmente, dicha página se desplaza hacia el principio de la lista, donde será seleccionada para reemplazo sólo si su bit de referencia sigue valiendo 0. En esencia esto da a la página una segunda oportunidad de permanecer en el almacenamiento principal si su bit de referencia cambia a 1 antes de que la página llegue al principio de la lista. La variación “por reloj” del algoritmo de la segunda oportunidad dispone las páginas en una lista circular, en lugar de una lista lineal. Un apuntador a la lista se desplaza alrededor de la lista circular en la misma forma que gira la manecilla de un reloj. Cuando el bit de referencia de una página toma el valor 0, el apuntador se mueve al siguiente elemento de la lista (simulando el movimiento de esta página al final de la lista PEPS). Reemplazo de páginas por frecuencia de fallas de páginas Una medida de la eficiencia con que se ejecuta un proceso en un ambiente de paginación es su tasa de fallas de página. Los procesos que fallan constantemente pueden estar hiperpaginando por que tienen muy pocos marcos de páginas y no pueden mantener sus conjuntos de trabajo en almacenamiento primario. Los procesos que casi nunca fallan pueden tener de hecho demasiados marcos de páginas y estar impidiendo el proceso de otros procesos del sistema. Idealmente, los procesos deben operar en algún punto entre esos extremos. El algoritmo de frecuencia de fallas de página (page fault frequency, PFF) ajusta el conjunto de páginas residentes de un proceso (es decir aquellas páginas que están actualmente en la memoria) basándose en la frecuencia con que el proceso tiene fallas de página (o, alternativamente, según el tiempo que hay entre fallas de página denominado entre fallas). El PFF registra el tiempo entre la ultima falla de página y el vigente. Si ese tiempo es mayor que un valor límite superior, entonces se liberan todas las páginas a las que no se haya hecho referencia en ese intervalo. Si el tiempo es menor que un valor limite inferior, la página entrante se convierte en un miembro del conjunto de páginas residentes del proceso. Lo práctico del PFF es que ajusta dinámicamente el conjunto de páginas residentes de un proceso en respuesta al comportamiento cambiante del proceso. Si un proceso esta conmutándose a un conjunto de trabajo mayor, entonces tendrá fallas frecuentes de páginas y el PFF le dará más marcos de páginas. Una vez que se acumule el nuevo conjunto de trabajo, la frecuencia de fallas de páginas se reducirá y el PFF mantendrá el conjunto de páginas residentes o incluso podrá reducirlo Evidentemente, la clave para la obtención adecuada y efic iente del PFF es mantener los limites en valores apropiados. Una ventaja del PFF con respecto al reemplazo de páginas con conjunto de trabajo es que ajusta el conjunto de páginas residentes sólo después de cada falla de pagina, mientras que un mecanismo de conjunto de trabajo debe operar después de cada referencia a la memoria.

Page 26: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 26

Paginación por demanda El sentido común indica que las páginas de un proceso deben cargarse por demanda. No se debe transferir ninguna página del almacenamiento secundario al primario hasta que un proceso en ejecución haga explícitamente referencia a ella. Hay varias razones por las cuales es atractiva esta estrategia. ?? Los resultados de la teoría de la computabilidad, es específicamente el problema de la detención, indican que no se pueden predecir con precisión la trayectoria de ejecución que seguirá un programa. Así pues, cualquier intento de carga páginas con anticipación a su uso puede hacer que se carguen las páginas equivocadas. ?? La paginación por demanda garantiza que las únicas páginas que se transfieren al almacenamiento principal son aquellas que requieren los procesos. ?? El trabajo extra requerido para decir cuáles páginas se deben transferir al almacenamiento principal es mínimo. Las estrategias de obtención anticipada de páginas pueden requerir mucho tiempo de ejecución adicional. Paginación anticipada En la paginación anticipada, el sistema operativo intenta predecir cuáles páginas necesitará un proceso y entonces carga dichas páginas cuando hay espacio disponible. Si se toman las decisiones correctas, se puede reducir considerablemente el tiempo de ejecución total del proceso. Mientras el proceso se ejecuta con sus páginas actuales, el sistema carga nuevas página, que estarán disponibles cuando las requiera el proceso. Ventajas de la paginación anticipada. ü Si se pueden tomar las decisiones correctas en casi todos los casos, se reducirá bastante el

tiempo de ejecución de un proceso. Así pues, es importante tratar desarrollar mecanismo de paginación anticipada, aunque no puedan ser cien por ciento precisos.

ü En muchos casos se puede tomar decisiones precisas. Si la toma de decisiones se puede realizar con relativamente poco trabajo extra, entonces la ejecución de un proceso dado se puede acelerar en gran medida sin afectar negativamente otros procesos activos.

ü Como el hardware de la computadora se vuelve cada vez más económico, las consecuencias de una mala decisión son menos serias. Se puede adquirir almacenamiento principal extra para manejar la acumulación de páginas excedentes que un mecanismo de anticipación transferiría al almacenamiento principal.

Liberación de páginas En una administración del almacenamiento mediante conjuntos de trabajos, los procesos indican por referencia explícita cuáles páginas desean utilizar. Los procesos que ya no requieran páginas específicas deberán desechar tales páginas de sus conjuntos de trabajo. Por lo regular, hay un tiempo durante el cual permanecen en el almacenamiento principal las páginas que ya no se requieren. Cuando es evidente que ya no será necesaria una página, un usuario podría dar una orden de liberación voluntaria de página para liberar el marco de página. Esto eliminaría el retraso que implica dejar que el proceso deseche poco a poco la página de su conjunto de trabajo. La liberación voluntaria de páginas podría eliminar el desperdicio y acelerar la ejecución de un programa, pero la mayoría de los usuarios de los sistemas de cómputo actuales ni siquiera saben qué es una página y no se les puede pedir que tomen decisiones al nivel del sistema. La incorporación de mandatos de liberación de páginas en los programas de usuario podría ser mucho más lento el desarrollo de las aplicaciones.

Page 27: Unidad3

Sistemas Operativos I Unidad 3

Universidad Autónoma de Nayarit 27

La esperanza real en esta área es que los compiladores y sistemas operativos detecten automáticamente las situaciones en las que debe liberar una página, y mucho antes de lo que es posible con las estrategias que emplean conjuntos de trabajo. TAMAÑO DE PÁGINAS En los sistemas de paginación, el almacenamiento real se divide normalmente en marcos de página de tamaño fijo. ¿Qué factores determinan si una página debe ser grande o pequeña? Aquí se resumen algunos de ellos: ?? Cuanto menor sea el tamaño de la página, más páginas y más marcos de páginas habrá y mayores tendrán que ser las tablas de páginas. En los sistemas en los que las tablas de páginas ocupan el almacenamiento primario, hay una necesidad de páginas más grandes. El desperdicio de almacenamiento debido a tablas excesivamente grandes se denomina Fragmentación de tablas. Cabe señalar que este argumento es menos válido hoy día gracias a la disponibilidad de memorias muy grandes y económicas. ü Con tamaño de páginas grandes, se paginan en el almacenamiento primario grandes cantidades

de información a la que quizá nunca se haga referencia. Esto indica la necesidad de páginas más pequeña.

ü Dado que las transferencias de E/S desde el disco son relativamente lentas, se desea reducir al mínimo el número de transferencias a que se somete un programa a medida que se ejecuta. Esto parece indicar la necesidad de tamaño de páginas grades.

ü Los programas tienden a exhibir la propiedad de localidad de referencia y esas localidades tienden a ser más pequeñas. Así, un tamaño de página más pequeño ayudará a un programa a establecer un conjunto trabajo más ajustado; es decir, las páginas del conjunto de trabajo que se mantienen en el almacenamiento real contendrán más elementos de información a los que se hará referencia intensamente.

ü Debido a que las unidades de procedimientos y datos rara vez comprenden un número entero de páginas, los sistemas con paginación experimentan fragmentación interna, como se ilustra en la figura lateral.

Existe la misma posibilidad de que un segmento de longitud s tenga su última página casi llena o casi vacía y, por tanto, en promedio hay media página de fragmentación interna (con la restricción de que una página no puede contener partes de más de un segmento). Cuanto menor sea el tamaño de la página, menor será la fragmentación interna.