Sunteți pe pagina 1din 19

SISTEMAS OPERATIVOS I

TEMA 4. GESTION DE LA MEMORIA


Para que un proceso est preparado para su ejecucin es necesario cargarlo en memoria principal, ya que ningn proceso se puede activar antes de que se le asigne el espacio de memoria que requiere. La misin del gestor de la memoria es la asignacin de memoria principal a los procesos que lo soliciten. El espacio vacante se puede utilizar para cargar procesos que estn ya preparados para su ejecucin, de forma que el planificador est en mejores condiciones de preparar las tareas que se van a ejecutar. La memoria principal se puede ver como un gran array de palabras, cada una con su propia direccin. SISTEMAS ELEMENTALES DE GESTIN DE LA MEMORIA El esquema de gestin de la memoria ms simple que se puede considerar es aquel que no tiene ningn gestor. En este caso el usuario se encuentra con la mquina desnuda y tiene un control completo sobre el espacio total de la memoria. Esto tiene algunas ventajas: Da mxima flexibilidad al usuario Tiene mxima simplicidad y coste mnimo No es necesario disponer de un computador especfico ni del sistema operativo Pero tambin tiene sus limitaciones:

No da ningn servicio El S.O. no tiene control sobre las interrupciones No hay un monitor residente para procesar las llamadas al sistema

El siguiente esquema en simplicidad se obtiene al dividir la memoria en dos secciones, una para el proceso del usuario y otra para la parte del sistema operativo.

En el MS-DOS para el PC de IBM, la memoria se encuentra dividida en tres zonas, la parte inferior de la memoria RAM est destinada al sistema operativo, la parte central dedicada al nico programa de usuario y la parte superior, en ROM, para los controladores de dispositivos. El programa en ROM se llama BIOS (Sistema Bsico de Entrada/Salida). Estos esquemas suponen que slo se ejecuta un solo proceso a la vez. La forma bsica de trabajar en los PC-IBM con MS-DOS es teclear una orden en el terminal, el S.O. responde cargando el programa desde el disco a la memoria. Cuando el proceso termina, el control vuelve al S.O. que manda un carcter al terminal y espera la entrada de una nueva orden. Actualmente se ha impuesto la multiprogramacin.
http://www.talgo32.es 1

SISTEMAS OPERATIVOS I Multiprogramacin La multiprogramacin permite el entrelazado y el solapamiento de la ejecucin de ms de un programa de forma que se mantenga del modo ms ocupado posible todos los recursos. Se utiliza el trmino multitarea para referirse a la capacidad que tienen los S.O. de ejecutar de forma simultnea varios procesos. El trmino multiprogramacin es ms general pues incluye adems de la posibilidad de multitarea, la capacidad de gestin de memoria y de los ficheros.

GESTIN DE LA MEMORIA CON PARTICIONES FIJAS Una forma de realizar la multiprogramacin consiste en dividir la memoria fsica disponible en varias particiones y asignar cada una de las partes a un proceso. La asignacin de memoria con particiones fijas se denomin MFT (Multiprogramacin con un nmero Fijo de Tareas). La gestin de la memoria con particiones fijas supone que la divisin de sta se ha realizado con anterioridad a la ejecucin de los programas de usuario. El nmero y tamao de las particiones se determinan teniendo en cuenta los factores siguientes: Capacidad de la memoria fsica disponible y el grado de multiprogramacin deseado. Tamaos tpicos de los procesos ejecutados ms frecuentemente. El problema de las particiones fijas es la fragmentacin interna o memoria desaprovechada dentro de una particin. Principio de Operacin En lineas generales, la forma de operacin se puede resumir de la siguiente forma: Cuando llega una tarea, sta se pone en una cola de tareas Una vez definidas las particiones, el S.O. necesita llevar la cuenta de sus estados, libre o en uso para propsitos de asignacin. Si una tarea tiene espacio disponible en memoria, se ubica en una particin, y puede competir por el uso de la CPU. El estado y los atributos de las particiones se recogen en una estructura de datos llamada tabla de descripcin de particiones (TDP). Cada particin est descrita por su direccin inicial base, su tamao y su estado. Los campos de la base y el tamao son fijos. Organizaciones de memoria: Clasificar las tareas segn sus requerimientos de espacio.- Cada particin de memoria tendr una cola de tareas y las tareas se incluyen en la cola de la particin de memoria correspondiente a sus exigencias de memoria. Tiene la desventaja de que la cola de una particin grande puede estar vaca mientras la cola de una particin pequea est llena.

http://www.talgo32.es 2

SISTEMAS OPERATIVOS I

Mantener todas las tareas en una sola cola.- El planificador selecciona la prxima tarea para ser ejecutada y espera hasta que se disponga de una regin de memoria del tamao requerido. Las estrategias de asignacin de particiones usadas son: Primer ajuste Mejor ajuste

Intercambio o Swapping Otro esquema en el uso de la memoria aparece con el concepto de intercambio. El intercambio hace referencia a las operaciones de eliminar de la memoria principal procesos suspendidos, llevarlos al disco y cargar del disco a la memoria principal procesos para su ejecucin. Cuando el planificador decide admitir un nuevo proceso para el que no hay espacio, se puede invocar al intercambiador para liberar una particin. Entre las responsabilidades del planificador destacan: La seleccin de los procesos que hay que eliminar de la memoria principal La seleccin de los procesos que hay que cargar en la memoria principal La asignacin y gestin del espacio de intercambio La seleccin de los procesos en la memoria principal que hay que intercambiar se hace entre aquellos que ocupan particiones suficientemente grandes para los procesos que se les debe asignar espacio en memoria. Se corre el peligro del trasiego o trashing provocado por la retirada repetida de procesos de la memoria casi inmediatamente despus de ser cargados en memoria. Aunque los mecanismos de intercambio son fciles de entender, su realizacin requiere algunas consideraciones, como la definicin de un archivo de intercambio o el proceso de reubicacin. Archivo de Intercambio Un proceso se prepara para su ejecucin y se enva al sistema operativo en la forma de un archivo que contiene un programa en versin ejecutable y sus correspondientes datos. Este archivo puede contener tambin atributos del proceso, como prioridad y requerimientos de memoria. Tal archivo se denomina imagen del proceso. Hay que disponer de un archivo de intercambio para almacenar la imagen dinmica del proceso retirado. Hay dos opciones bsicas para disear el archivo de intercambio: 1. Un nico archivo de intercambio para el sistema completo (global). 2. Diferentes archivos de intercambio para cada uno de los procesos (dedicado). Los algoritmos para la gestin del espacio disponible en el archivo de intercambio son los mismos que los usados para la gestin de la memoria principal.

http://www.talgo32.es 3

SISTEMAS OPERATIVOS I Reubicacin y proteccin Cuando se mantienen diversas tareas en diferentes particiones de memoria se presentan dos problemas esenciales: la reubicacin y la proteccin. El trmino reubicable se refiere a la capacidad de cargar y ejecutar un programa determinado en una posicin arbitraria de memoria, en contraposicin a un nmero fijo de posiciones especificadas en el momento de la traduccin del programa. En este sentido, hay que distinguir entre las direcciones lgicas o virtuales (aquellas que son percibidas por el programador) y las direcciones fsicas en las que el programa y sus datos se almacenan durante una ejecucin dada. Dependiendo de cuando y cmo tenga lugar la traduccin del espacio de direcciones virtuales al espacio de direcciones, se pueden considerar dos tipos de reubicaciones:

1.Reubicacin Esttica.- Se realiza antes o durante la carga del programa en memoria, mediante un

enlazador o cargador reubicable. 2.Reubicacin Dinmica.- Implica que la asignacin del espacio de direcciones lgicas al espacio de direcciones fsicas se realiza en tiempo de ejecucin, generalmente con ayuda de dispositivos hardware. Cuando el proceso se est ejecutando, todas sus referencias a direcciones de memoria se recalculan durante la ejecucin de la instruccin antes de acceder a la memoria fsica. Este proceso se realiza mediante registros base especializados. La direccin fsica ser la direccin lgica ms el valor del registro base. As, si el registro base tiene un valor de 1000000, una instruccin CALL 1000 se interpreta como CALL 1000 + 1000000. Pero en ambos esquemas de la reubicacin queda por resolver el problema de la proteccin, ya que un programa puede construir una direccin fsica que se salga fuera de la particin que se le ha asignado. Una solucin para la proteccin con reubicacin dinmica, es considerar, adems de un registro base, un registro lmite que se cargara con la longitud de la particin. Para cada referencia de memoria se comprueba en el registro lmite si est permitida.

Otro esquema de proteccin, pero para reubicacin esttica, es la proteccin hardware, se consideran registros bordes para cada particin, los cuales se cargan con las direcciones fsicas de comienzo y final de la particin. Este esquema comprueba que la direccin fsica est comprendida entre los dos bordes.

http://www.talgo32.es 4

SISTEMAS OPERATIVOS I Un mtodo diferente de proteccin es comprobar el acceso en la misma memoria, asignando un cdigo de proteccin a cada bloque, es decir, asociando unos cuantos bits de proteccin con grandes bloques de memoria llamados clave. El computador detendra cualquier intento de un proceso en ejecucin si tratase de acceder a una parte de la memoria cuyo cdigo de proteccin fuera distinto al de la clave o contrasea. Seleccin del tamao de la particin: Fragmentacin de la memoria Otro problema de diseo con particiones fijas de memoria es la adecuada seleccin de los tamaos de las particiones. El problema est en decidir cuantas particiones se deben crear y de qu tamao. Existen dos tipos de desaprovechamiento de la memoria: Fragmentacin interna: Consiste en aquella parte de la memoria que no se est usando porque es interna a una particin asignada a una tarea, es decir, la memoria desaprovechada por una tarea ms pequea que la memoria asignada. Fragmentacin externa: Ocurre cuando una particin disponible no se emplea porque es muy pequea para cualquiera de las tareas que esperan.

Ejemplo de Ejercicio

http://www.talgo32.es 5

SISTEMAS OPERATIVOS I

Solucin

Como el sistema de gestin de memoria es de particiones fijas el problema es la fragmentacin interna. En este caso el algoritmo que mejor aprovecha la memoria es el de mejor en ajustarse, ya que la

fragmentacin interna es nula, despus el algoritmo primero en ajustarse con fragmentacin interna de 600 Kb y finalmente los otros dos que producen una fragmentacin interna de 1400 Kb.

GESTIN DE LA MEMORIA CON PARTICIONES VARIABLES Las particiones fijas tienen el inconveniente de que hay que determinar sus mejores tamaos con el fin de minimizar la fragmentacin interna y externa. Pero si se ejecutan un conjunto dinmico de procesos, ser difcil que se encuentre la particin correcta de la memoria. La solucin de este problema est en permitir que los tamaos de las particiones varen dinmicamente. Principio de Operacin El principio de operacin de la gestin de memoria con particiones variables es bastante simple. El Sistema Operativo mantiene una tabla que indica qu partes de la memoria estn libres y cuales estn ocupadas. Inicialmente, toda la memoria est disponible y se considera como un gran bloque. Cuando llega una tarea que requiere memoria, se busca un bloque disponible suficientemente grande. Si se encuentra, se asigna slo la cantidad que necesita, manteniendo el resto disponible para futuras demandas. Por ejemplo, cuando se pide que se cargue una imagen de un proceso en memoria, el mdulo de gestin intenta crear una particin adecuada que asignar al proceso en cuestin, para ello es preciso localizar un rea libre de memoria que sea igual o mayor que el proceso, si es as se fabrica la particin.

http://www.talgo32.es 6

SISTEMAS OPERATIVOS I

Sistemas de registro del uso de la memoria La gestin de la memoria con particiones libres plantea el problema de mantenimiento de un registro de particiones libres y ocupadas que sea eficiente, tanto en tiempo para la asignacin como para el aprovechamiento de la memoria. Las formas de mantener este registro son: Mapa de Bits La memoria se divide en unidades de asignacin. A cada unidad de asignacin le corresponde un bit en el mapa de bits; con el valor 0 se indica si est libre y con 1 si est ocupado o viceversa. Los mapas de bits son una forma sencilla de mantener un registro del uso de la memoria. Su principal inconveniente est en ser un sistema de gestin de memoria lento. Por esta razn los mapas de bits se utilizan poco.

Listas Entrelazadas Una forma ms inteligente de mantener un registro de la memoria est en disponer de listas enlazadas para las particiones libres y asignadas. En este ejemplo se indican con P los bloques de memoria asignados a procesos y con L los bloques libres. Esta lista est ordenada por direcciones, y se pueden utilizar diferentes algoritmos para asignar memoria a un proceso recin creado o intercambiado. Entre las asignaciones ms comunes estn: Primer ajuste.- Se asigna el primer bloque suficientemente grande para la tarea. Siguiente ajuste.- Se asigna no el primer bloque suficientemente grande sino el siguiente. Mejor ajuste.- Asigna el bloque ms pequeo que sea lo suficientemente grande. Peor ajuste.- Busca la particin ms grande disponible.

http://www.talgo32.es 7

SISTEMAS OPERATIVOS I Sistema de los Asociados Aprovecha el hecho de trabajar con direcciones binarias para hacer ms rpida la fusin entre particiones libres adyacentes. Por ejemplo, se mantiene una lista de las particiones libres cuyos tamaos son potencias de 2. Para una memoria de 8 Mb se tendrn 24 listas, desde 1 byte hasta 8 Mb. Al principio toda la memoria est libre. Todas las listas estn vacas excepto la de 8 Mb que tiene un nico elemento. Al entrar el proceso P1, que solicita 600 Kb, se redondea por exceso solicitndose 1 Mb. Como solo hay un bloque de 8 Mb, ste se divide en dos bloques de 4 Mb, llamados socios. Uno de ellos se divide en otros dos socios de 2 Mb, como slo se necesita uno el bloque inferior se vuelve a dividir en dos bloques de 1 Mb, asignndole a P1 un bloque de 1 Mb. Cuando llega P2, que necesita 300 Kb, se divide un bloque de 1 Mb en dos de 512 Kb. Cuando llega P3 de 700 Kb se solicita 1 Mb, por la misma razn de antes se divide el bloque de 2 Mb para asignarle uno de 1 Mb. A P4, que necesita 500 Kb, se le puede asignar directamente el bloque de 512 Kb. Cuando se libera memoria hay que ir fusionando, cuando se pueda, los socios, es decir, aquellos bloques que proceden de la divisin de un mismo bloque. La principal ventaja del sistema de asociados es su mayor rapidez para decidir la fusin de dos bloques. Por el contrario, su desventaja es que no solo se produce fragmentacin externa, sino que tambin se produce fragmentacin interna. Anlisis de la Gestin de la Memoria con Particiones Variables Se ha visto que para los distintos algoritmos de gestin de la memoria se produce una fragmentacin externa de la memoria. La fusin de particiones adyacentes podra paliar este efecto, pero en realidad, este remedio tiende a diferir el impacto de la fragmentacin externa, ms que a prevenir el problema. La razn primaria de la fragmentacin est en la diferencia de vida de los procesos, lo que implica que el patrn para devolver los bloques libres sea distinto del orden de asignacin. Despus de algn tiempo en operacin, los sistemas con asignacin dinmica de memoria tienden a un estado de equilibrio en el que la memoria desperdiciada por un determinado algoritmo se puede estimar y ser usada como un parmetro de comparacin. Hay dos reglas para esta estimacin: Regla del cincuenta por ciento Para el algoritmo de primero en ajustarse con fusin de los bloques libres adyacentes, resulta que si el promedio de procesos en memoria es n, el promedio de particiones libres ser n/2. Cuando dos regiones libres estn adyacentes, se fusionan en una sola regin. Los procesos adyacentes no se fusionan.

http://www.talgo32.es 8

SISTEMAS OPERATIVOS I Fraccin de memoria no utilizada Para su clculo se definen los parmetros siguientes: a) f : la fraccin de memoria ocupada por las particiones libres b) s : el tamao medio de cada uno de los n procesos c) k
*

s : el tamao medio de las particiones libres para algn valor de k > 0.


*

Si el tamao total de la memoria es de m bytes, las n/2 particiones libres ocuparn m - n Es decir:

s bytes.

Luego:

La fraccin de memoria libre es el nmero de particiones libres, n/2, por el tamao medio de las particiones libres, k * s, dividido por el tamao de toda la memoria, m:

Si las particiones libres ocupan la mitad de memoria que los procesos, k= queda libre. Para k =

, el 11 %.

, el 20 % de la memoria

http://www.talgo32.es 9

SISTEMAS OPERATIVOS I PAGINACIN Uno de los principales inconvenientes que se ha visto en los anteriores sistemas de gestin de la memoria es la fragmentacin externa. Generalmente, esta situacin se presenta cuando la memoria disponible no es contigua, sino que est fragmentada en muchos bloques repartidos a lo largo del espacio de direcciones. Como la memoria asignada a un proceso en particular debe ser contigua, esta memoria que est libre, pero al mismo tiempo est dispersa, no se puede usar. Este problema tiene dos soluciones generales: 1) Compactacin: Si la memoria resulta seriamente fragmentada, la nica salida posible es reubicar algunas o todas las particiones en un extremo de la memoria y as combinar los huecos para formar una nica rea libre grande. No se suele usar por su coste en tiempo. 2) Paginacin: Permite que la memoria de un programa no sea contigua, de forma que siempre que se disponga de espacio, aunque ste no sea adyacente, se pueda asignar a un programa. Principio de operacin Bsicamente, en un sistema de gestin de memoria con paginacin, la memoria se divide conceptualmente en un nmero de bloques de tamaos fijos, denominados marcos de pgina. El espacio de direcciones virtuales de un proceso se divide adems en bloques de tamao fijo del mismo tamao llamados pginas. La asignacin de memoria consiste en encontrar un nmero suficiente de marcos de pgina sin usar para cargar las pginas de los procesos solicitadas. Mediante un mecanismo de traduccin de direcciones, se asignan las pginas virtuales a su contrapartida fsica. Puesto que cada pgina se hace corresponder separadamente, los diferentes marcos de pgina asignados a un solo proceso no necesitan ocupar reas contiguas de memoria fsica. Para hacer esta asignacin se usa una tabla de pginas, que se construye cuando se carga el proceso y que contiene tantas entradas como pginas tenga ste. Cada direccin virtual est dividida en dos partes: El nmero de pgina El desplazamiento dentro de esa pgina

En este ejemplo la direccin lgica 0020FF se descompone en dos campos: 002 que es el nmero de pgina y 0FF que es el desplazamiento relativo dentro de la pgina. De la tabla de pginas se comprueba que la pgina 002 le corresponde el marco de pgina 104, luego la direccin fsica se construye sustituyendo, en el primer campo en el que se divide la direccin, el nmero de pgina por el marco de pgina correspondiente, resultando as la direccin fsica 1040FF.

http://www.talgo32.es 10

SISTEMAS OPERATIVOS I Implementacin de las Tablas de Pginas El objetivo de las tablas de pginas es asociar a las pginas un marco de pgina. Esto se puede ver como una funcin matemtica, que tiene como argumento el nmero de pgina y que da como valor el nmero del marco de pgina correspondiente. Con el resultado de esta funcin para construir la direccin fsica se reemplaza el campo de la pgina en la direccin virtual por el marco de pgina. Si el tamao de un proceso dado no es mltiplo entero del tamao de la pgina, el ltimo marco de pgina puede estar parcialmente inutilizado, esto se llama fragmentacin o ruptura de pgina. Para acelerar el proceso de traduccin de direcciones hay que tener en cuenta: La utilizacin de registros especficos para la tabla de pginas es adecuada si la tabla de pginas es pequea. Un mtodo comn es utilizar una memoria asociativa de alta velocidad para almacenar un subconjunto de las entradas de la tabla del mapa de pginas ms frecuentemente utilizadas. Esta memoria se denomina Buffer para Apartado de Traducciones (BAT).

Ejemplo. Prctica de paginacin Supngase que la tabla de pginas de un proceso que se est ejecutando en el procesador es:

Donde: R: es el bit de referencia. R=1 (la pgina ha sido referenciada). M: es el bit de modificacin. M=1 (la pgina ha sido modificada). V: es el bit de presente/ausente. V=1 (la pgina est en memoria principal, tiene un marco asociado) El tamao de las pginas es de 1 Kb. El marco 0 est cargado en la direccin fsica 0 y el resto sucesivamente. Se pide A qu direcciones fsicas corresponden las siguientes direcciones virtuales?: 1. 2. 3. 4. 5. (1, 125) (2, 324) (5, 322) (7, 321) (3, 1026)

El formato en el que se da la direccin virtual corresponde a: (n de pgina, desplazamiento)

http://www.talgo32.es 11

SISTEMAS OPERATIVOS I Solucin: La direccin fsica, de acuerdo con el sistema de paginacin, ser el nmero de marco multiplicado por el tamao de marco ms el desplazamiento dentro de l: Direccin fsica= N de marco x Tamao de marco + Desplazamiento Se ha de tener en cuenta que: - Exista la pgina - El desplazamiento no supere el tamao del marco Si no, en ambos casos se tendr un error de direccionamiento. Adems la pgina ha de tener un marco asociado, si no tendr lugar un fallo de la pgina. 1. Direccin virtual: (1, 125) . Direccin fsica = 7 * 1024 + 125 = 7293 2. Direccin virtual: (2, 324). La pgina 2 no tiene ningn marco asociado, por lo tanto, tiene lugar un fallo de pgina. 3. Direccin virtual: (5, 322) . Direccin fsica = 0 * 1024 + 322 = 322 4. Direccin virtual: (7, 321). Error de direccionamiento porque no existe la pgina 7. 5. Direccin virtual: (3, 1026). Error de direccionamiento porque 1026 es mayor que 1024 por lo que el desplazamiento es mayor que el tamao de marco. SEGMENTACIN En este esquema, el espacio de direcciones lgicas, es un conjunto de segmentos con diferentes nombres y tamaos. Las direcciones especifican el nombre del segmento y el desplazamiento. Un segmento es un objeto lgico, conocido por el programador y que lo utiliza como tal. Un segmento puede tener una determinada estructura o un procedimiento o mdulo, pero normalmente no una mezcla de varios. Los segmentos se forman en tiempo de traduccin del programa mediante la agrupacin de elementos relacionados lgicamente, por ejemplo: pilas, datos, cdigo Principio de operacin El programa de usuario se compila y el compilador constituye automticamente los segmentos de acuerdo con la estructura del programa. El cargador tomar todos estos segmentos y le asignar nmeros de segmentos. Por propsito de reubicacin cada uno de los segmentos se compila comenzando por su propia direccin lgica 0. Las direcciones lgicas, por tanto, constarn de dos componentes: El nombre (nmero) de segmento. El desplazamiento dentro del segmento. En este contexto, el espacio de direcciones es bidimensional, pero la memoria fsica mantiene su organizacin lineal unidimensional, por lo que es necesario disponer de un mecanismo que convierta las direcciones lgicas bidimensionales en su equivalente unidimensional. Esta asignacin se efecta mediante una tabla de segmentos (TDS).
http://www.talgo32.es 12

SISTEMAS OPERATIVOS I En la tabla de segmentos se mantienen registrados los descriptores de cada segmento: la base, que corresponde a la direccin fsica en que comienza el segmento obtenida durante la creacin de la particin y el tamao de cada segmento. El nmero de segmento, primer parmetro de la direccin lgica, se emplea como un ndice dentro de la tabla de segmentos. La direccin fsica se obtiene aadiendo el desplazamiento a la base del segmento. Si el desplazamiento sobrepasara el tamao mximo del segmento registrado en la tabla se producira un error de direccionamiento. Proteccin y Comparticin Una ventaja de la segmentacin es la posibilidad de asociar la proteccin a los segmentos. Puesto que los segmentos son porciones diferentes del programa definidas semnticamente (unos segmentos contendrn solo instrucciones mientras que otros datos), todas las entradas al segmento se usan de la misma manera. La segmentacin tambin facilita la comparticin de cdigo o datos entre varios procesos. Un ejemplo usual es el de las libreras compartidas. Los segmentos son compartidos cuando la entrada a la tabla de segmentos de dos procesos apuntan a la misma posicin fsica. De esta forma, cualquier informacin se puede compartir si se define en un segmento. Sistemas Combinados de Paginacin-Segmentacin Corresponde a la gestin de memoria que combina ambos enfoques con el fin de mantener las ventajas de cada uno. As se mantiene la segmentacin desde el punto de vista del usuario y se divide cada segmento en pginas de tamao fijo. La traduccin de direcciones requiere tanto tablas de segmento como tablas de pginas, pero ahora el desplazamiento del segmento se divide en un nmero de pgina y un desplazamiento dentro de ella. El nmero de pgina se usa como ndice de la tabla de pginas para obtener el nmero del marco de pgina. Este ltimo se combina con el desplazamiento de pgina para obtener la direccin fsica. Las direcciones lgicas requieren tres campos: el nmero de segmento (s), el nmero de pgina (p) y el desplazamiento dentro de la pgina (o).
http://www.talgo32.es 13

SISTEMAS OPERATIVOS I Ejemplo. Prctica de Segmentacin - Paginacin Se tiene un sistema operativo multitarea con las siguientes caractersticas:

a) Cuntos segmentos distintos puede direccionar cualquier proceso del sistema? b) Cuntos marcos de pgina distintos puede haber como mximo?

Solucin: a) Los segmentos distintos que se pueden direccionar con 8 bits son:

28 = 256 segmentos
se obtiene del campo que indica el nmero de segmento en la direccin virtual. b) El marco de pgina es del mismo tamao que la pgina, por lo tanto, es de igual tamao que el campo del desplazamiento en la direccin virtual 212. La memoria real tiene un tamao de 232, por lo tanto, el nmero de marcos vendr dado por:

232/ 212 = 220 marcos de pgina diferentes en memoria fsica.


MEMORIA VIRTUAL Hasta ahora, los sistemas de gestin de la memoria que se han visto, suponen que el proceso a ejecutar se carga por completo en memoria. La memoria virtual es un esquema de gestin de memoria en donde puede que slo una parte del espacio de direcciones lgicas de un proceso residente sea cargada realmente en memoria. En otras palabras, la memoria virtual permite la ejecucin de procesos parcialmente cargados. Esto se consigue manteniendo una imagen del espacio de direcciones virtuales completo de un proceso en memoria secundaria, y trayendo a memoria principal parte de esa imagen cuando sea necesaria. El S.O. mantiene en la memoria principal aquella parte del proceso que se utiliza en cada momento, el resto permanece en el disco. Principio de operacin Uno de los sistemas ms comunes de memoria virtual es el denominado demanda de la pgina, que es similar a un sistema de paginacin con intercambio. La tarea adicional del hardware de traduccin de direcciones en sistemas virtuales es detectar si el elemento referenciado est en memoria real o no. Para ello se aade un bit de presencia a cada entrada de la tabla de pginas (en el caso de gestin paginada).
http://www.talgo32.es 14

SISTEMAS OPERATIVOS I En el caso de que en el momento de la traduccin el bit est a cero, el hardware genera una excepcin por elemento ausente para anunciar el hecho al sistema operativo. A esta excepcin se denomina fallo de pgina.

Por lo tanto el fallo de pgina se produce cuando en la tabla de pginas del proceso no hay asociado un marco de pgina a la pgina que se quiere acceder. Cuando el proceso en ejecucin experimenta un fallo de pgina, ste queda suspendido hasta que la pgina que falta sea incorporada en memoria principal, as el procedimiento a seguir es el siguiente: Se verifica si la direccin es vlida. Si la direccin es invlida se enviara una seal al proceso o se abortara. Si es una referencia vlida, pero an no se ha trado esta pgina, el S.O. detecta un fallo de pgina y determina la pgina virtual requerida para traerla. En este caso la instruccin queda interrumpida y se guarda el estado del proceso, para poder continuarlo en el mismo lugar y estado. Se selecciona un marco libre. Si no existe un marco libre, se tendra que ejecutar. Cuando el marco queda limpio, el S.O. examina la direccin en el disco donde se encuentra la pgina necesaria y planifica una operacin de lectura de la misma. Mientras se carga la pgina el proceso sigue suspendido y se permite ejecutar otro proceso. Cuando se completa la lectura del disco, la pgina de tablas se actualiza para indicar que ya se dispone de la pgina en memoria. La instruccin que produjo el fallo regresa al estado de comienzo y se planifica su ejecucin, pudindose acceder a la pgina como si siempre hubiera estado en memoria. De esta forma se puede ejecutar un programa, aunque algunas porciones del mismo no estn inicialmente disponibles en la memoria principal.

http://www.talgo32.es 15

SISTEMAS OPERATIVOS I Conceptos de Memoria Virtual Una gestin de la memoria basada en el mecanismo de demanda de pgina tiene un considerable efecto sobre el rendimiento del computador. Esto se puede ver calculando el tiempo promedio de acceso (tpa):

tpa = ( 1 - p ) * am + p * fp
Donde:

am = tiempo medio de acceso a memoria


p = probabilidad de que ocurra un fallo

fp = tiempo que lleva resolver un fallo de pgina


Por ejemplo, si el tiempo de acceso medio a memoria es de 100 nseg y el tiempo de resolucin de un fallo de pgina es de 1 mseg. entonces:

tpa = ( 1 - p ) * 100 nseg. + 1 mseg. = 0,1 seg. + 999,9 * p seg.


Muchos procesos no usan todas sus pginas, por tanto no hay que traerlas todas, pudindose ejecutar ms procesos. Por ello, se deben tener polticas de la gestin de la memoria virtual como las siguientes: Poltica de asignacin: qu cantidad de memoria real se asigna a un proceso Poltica de acceso: qu elementos se incorporan y cuando Poltica de sustitucin: si no existe memoria libre cuando se debe aadir un nuevo elemento, que elemento se desaloja. Poltica de ubicacin: dnde se coloca el nuevo elemento. POLTICAS DE SUSTITUCIN DE PGINAS Al producirse un fallo de pgina, el S.O. debe de elegir una pgina de las que estn en memoria, para sustituirla por la que se solicita. La pgina que entra en memoria se escribe directamente encima de la que se retira. Es posible elegir aleatoriamente una pgina para sustituirla por la solicitada, pero el rendimiento es mayor si se elige una pgina que no se usa. Se han estudiado muchos algoritmos para la sustitucin de pginas. A continuacin se describen algunos de los algoritmos ms interesantes. Algoritmo de sustitucin FIFO: Primero en entrar, primero en salir Se sustituye la pgina que lleva ms tiempo en memoria. En realidad, no es necesario guardar el tiempo de entrada, ya que se puede crear una cola segn el orden de entrada, con todas las pginas de la memoria, cuando hay que sustituir una pgina se elige la primera de la cola y la que se trae se inserta al final de la cola. Por ejemplo, se considera la siguiente secuencia de acceso a pginas (8, 1, 2, 3, 1, 4, 1, 5, 3, 4, 1, 4). Si inicialmente la memoria est vaca, cuantos fallos de pgina habr?. Con tres marcos de pgina.

8 F

1 8 F

2 1 8 F

3 2 1 F

3 2 1

4 3 2 F

1 4 3 F

5 1 4 F

3 5 1 F

4 3 5 F

1 4 3 F

1 4 3

Con el algoritmo FIFO se producen 10 fallos de pgina

http://www.talgo32.es 16

SISTEMAS OPERATIVOS I Algoritmo de sustitucin Optimo Se sustituye la pgina que tardar ms en volverse a utilizar. Este algoritmo es irrealizable ya que el sistema operativo no sabe a priori qu pgina se referenciarn en el futuro. Se usa como nivel de medida para los dems algoritmos de sustitucin de pginas, comparndolo mediante simulacin o en una segunda ejecucin. Por ejemplo, considerar la cadena de referencia del ejemplo anterior FIFO y compararla con el algoritmo ptimo. Cadena de referencia (8, 1, 2, 3, 1, 4, 1, 5, 3, 4, 1, 4).

8 F

1 8 F

2 1 8 F

2 1 3 F

2 1 3

4 1 3 F

4 1 3

4 5 3 F

4 5 3

4 5 3

4 1 3 F

4 1 3

Se observa que frente a los diez fallos de pgina del algoritmo FIFO, el algoritmo ptimo presenta siete fallos de pgina. Lo que supone que el algoritmo FIFO es un 43% peor que el ptimo.

Algoritmo de sustitucin LRU: La pgina menos usada ltimamente Es una mejora respecto al FIFO pero necesita un considerable apoyo de recursos de la mquina. Se sustituye la pgina que no ha sido utilizada durante un perodo mayor de tiempo. Es equivalente a aplicar el algoritmo ptimo hacia atrs en el tiempo. El problema es mantener un orden segn el tiempo que hace que se us la pgina. Hay dos posibles realizaciones: Mediante una pila.- La pila mantiene los nmeros de las pginas. Cada vez que una pgina se referencia, su nmero se elimina de la pila y se coloca en la cumbre de la misma. En el fondo de la pila estar la pgina que hace ms tiempo que se us. La eliminacin de una pgina y su colocacin en la cumbre de la pila supone tener que modificar seis punteros. Con registros contadores.- Cada entrada en la tabla de pginas tiene asociado un registro y en la CPU hay un contador que se incrementa cada vez que se hace referencia a memoria. Cada vez que se hace referencia a una pgina, se copia el registro contador en el registro. Cuando hay que hacer una sustitucin, se busca el registro con el valor ms pequeo. Ejemplo con la cadena de referencia (8, 1, 2, 3, 1, 4, 1, 5, 3, 4, 1, 4)

8 F

1 8 F

2 1 8 F

3 2 1 F

1 3 2

4 1 3 F

1 4 3

5 1 4 F

3 5 1 F

4 3 5 F

1 4 3 F

4 1 3

Se producen nueve fallos de pgina. Aunque presenta ms fallos que en el algoritmo ptimo, es una mejora con respecto al algoritmo FIFO.

http://www.talgo32.es 17

SISTEMAS OPERATIVOS I Algoritmo de sustitucin de la Segunda Oportunidad Este algoritmo es una modificacin del algoritmo de sustitucin FIFO. La modificacin consiste bsicamente en examinar el bit de referencia de las pginas que se seleccionan para sustituir. Si el bit de referencia es 0, la pgina no se ha utilizado adems de ser antigua. Si el bit de referencia es 1, entonces se pone a cero y la pgina se coloca al final de la cola. Dicho de otro modo, es una cola circular, con un puntero que indica cual es la pgina que se sustituir a continuacin, cuando se necesita un marco de pgina, el puntero avanza hasta que encuentra una pgina con un bit de referencia a 0, segn avanza el puntero se ponen a cero los bits de referencia. Si ocurre un fallo de pgina, segn el algoritmo FIFO la pgina que se sustituye es la 2 (fig. A). Si esta tiene el bit de referencia a cero se sustituir sin ms, pero si el bit de referencia es uno, esta pgina se coloca al final de la cola y su bit de referencia se pone a cero (fig. B). Bsicamente, la segunda oportunidad busca una pgina antigua que no se haya referenciado. Si todas tienen alguna referencia, este algoritmo degenera en un FIFO puro. Prctica de Poltica de Sustitucin

Solucin:

0 F

1 0 F

2 1 0 F

3 2 1 0 F

3 2 1 0

3 2 1 0

4 3 2 1 F

0 4 3 2 F

1 0 4 3 F

2 1 0 4 F

3 2 1 0 F

4 3 2 1 F

Algoritmo FIFO: 10 Fallos de pgina

0
Algoritmo LRU: 8 Fallos de pgina

1 0 F

2 1 0 F

3 2 1 0 F

0 3 2 1

1 0 3 2

4 1 0 3 F

0 4 1 3

1 0 4 3

2 1 0 4 F

3 2 1 0 F

4 3 2 1 F

http://www.talgo32.es 18

SISTEMAS OPERATIVOS I POLTICAS DE ASIGNACIN Cuando se dan marcos de pginas a un proceso se debe reducir la frecuencia de fallos de pgina, pero dada la capacidad limitada de la memoria fsica, supone tener un menor nmero de procesos activos coexistiendo a la vez en memoria. Por otro lado, si se asignan muy pocos marcos de pgina a un proceso, su frecuencia de fallos de pgina se puede deteriorar en exceso. El nmero mnimo de marcos por proceso viene fijado por la propia arquitectura del computador, mientras que el nmero mximo es definido por la cantidad de memoria fsica disponible. La eleccin del nmero de marcos para cada proceso se har entre estos dos lmites. La poltica de sustitucin de pginas puede ser: Local: La pgina desalojada es del proceso en cuestin. Global: La pgina a desalojar puede ser de cualquier proceso en memoria.

El modelo del conjunto de trabajo Un problema a tener en cuenta si se asignan pocas pginas a los procesos es el de la hiperpaginacin, catstrofe o trashing. La explicacin de esto es que con el alto grado de multiprogramacin es imposible que todos los procesos mantengan suficientes pginas en memoria para que no se generen un gran nmero de fallos de pginas. Esto implica que se satura el canal de transferencia con el disco, que se bloquean muchos procesos esperando un intercambio de pginas y que el procesador queda infrautilizado. Como poltica de asignacin est la teora del conjunto operativo. Dicho conjunto corresponde al conjunto de pginas referenciadas por el programa durante un intervalo reciente de tiempo, dicho intervalo es una ventana cuyo tamao depende del diseo. En las polticas de sustitucin y asignacin se debe seguir la siguiente regla genrica:

El conjunto operativo est basado en el principio de localidad. Del estudio del comportamiento de los programas, se observa que existe una fuerte tendencia de los programas a favorecer ciertos subconjuntos de sus espacio de direcciones durante la ejecucin. A este fenmeno se le conoce como localidad de referencia, y puede ser: Localidad de referencia espacial: Tendencia a referenciar posiciones agrupadas (arrays). Localidad de referencia temporal: Tendencia a referenciar la misma posicin o grupo de posiciones varias veces durante breves intervalos de tiempo (bucles). Una localidad es un pequeo grupo de pginas no necesariamente adyacentes a las cuales aluden la mayora de las referencias a memoria durante un perodo de tiempo.

http://www.talgo32.es 19

S-ar putea să vă placă și