Anda di halaman 1dari 38

TEORA DE LOS SISTEMAS OPERATIVOS

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL.


INTRODUCCIN.

La memoria real se puede nombrar de distintas maneras: memoria principal, memoria primaria, memoria interna, memoria fsica, etc., sin embargo todos estos nombres tienen un significado equivalente. En un sistema monoprogramado, la memoria principal esta dividida en dos partes: una para el sistema operativo y otra para el programa que se est ejecutando en ese momento. En un sistema multiprogramado, la parte de memoria utilizada por el usuario, debe subdividirse aun ms, para hacer sitio a varios procesos. La tarea de subdivisin la realiza el sistema operativo dinmicamente y toma el nombre de gestin de memoria. La organizacin y administracin de la memoria principal, tiene una importancia vital para mantener la actividad del procesador, por lo tanto, debe ser uno de los factores ms importante a considerar en el diseo de los sistemas operativos. En este tema se plantea un enfoque de la tecnologa, que se puede aplicar a la organizacin y administracin de memoria, considerando los distintos esquemas de gestin que se pueden utilizar, partiendo de la necesidad de que un programa, para que se pueda ejecutar, tiene que estar cargado en la memoria principal. La gestin de memoria consiste principalmente, en la asignacin de una parte de la memoria fsica, que tiene una capacidad finita, a los procesos que la soliciten, ya que ningn proceso puede ser activado, antes de que una cierta cantidad de memoria real le haya sido asignada. Una segunda funcin de la gestin de memoria consiste en que los procesos que estn temporalmente inactivos, pueden ser retirados de la memoria, con objeto de dejar espacio libre a otros procesos. En conjunto, la utilizacin de los recursos as como otros criterios de ejecucin de un sistema informtico, son afectados por la actuacin del modulo de gestin de memoria. La coexistencia de mltiples espacios de direcciones, pertenecientes a los procesos residentes en la memoria principal, requiere algunos procedimientos de proteccin, para evitar que los accesos a ellos realizados, equivocadamente o intencionadamente, puedan destruir contenidos de sus espacios de direcciones. Al mismo tiempo, procesos que cooperan entre s, deben de estar provistos de algn medio de compartir datos comunes. Una buena gestin de memoria, en un entorno de multiprogramacin, debe soportar ambas protecciones simultneamente, es decir, aislamiento para separar los espacios de direcciones y uso compartido, permitiendo que los procesos que cooperan entre s, puedan acceder a reas comunes de memoria. Se analizarn los distintos esquemas para la gestin de memoria, basados en la asignacin de espacio contiguo, es decir, la asignacin de memoria es llevada a cabo de tal manera, que cada objeto lgico colocado en memoria, ocupa un conjunto de posiciones consecutivas. A continuacin se analizarn los esquemas para la gestin de memoria no contigua, en los cuales la memoria se asigna de tal modo, que las partes de un solo objeto lgico, pueden ser colocadas en reas no contiguas de la memoria fsica.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

Una manera muy comn de abordar la asignacin de espacio contiguo, consiste en dividir la memoria fsica disponible en particiones y posteriormente satisfacer las peticiones de memoria, asignando las particiones libres si existen. Cuando un proceso residente en la memoria termina, su particin es liberada y queda disponible para ser asignada a otro peticionario. Las particiones de memoria pueden ser definidas estticamente durante la generacin del sistema o dinmicamente en respuesta a las demandas del usuario. Cuando el particionamiento es esttico, se produce un desaprovechamiento de la memoria, cuando se carga un objeto de menor tamao que la particin y al espacio que se desaprovecha, se le denomina fragmentacin interna. El particionamiento dinmico, elimina este problema, haciendo cada particin tan grande como sea necesario para ajustarse al objeto dado, por lo tanto, cuando se lleva un objeto fuera de la memoria, la particin ocupada por l, se devuelve a la reserva de espacio libre. Despus de algn tiempo de funcionamiento, el particionamiento dinmico produce una dispersin de espacio libre en reas discontinuas, que son de un tamao insuficiente para albergar otro objeto. A este tipo de desaprovechamiento de la memoria, se le denomina fragmentacin externa. Respecto a la manera de abordar la asignacin de memoria no contigua, se pueden utilizar las dos tcnicas siguientes: La Paginacin. La Segmentacin.

En la Paginacin, la memoria principal se divide en un conjunto de marcos de pgina de igual tamao y cada proceso se divide en una serie de pginas del mismo tamao, que los marcos de pgina en que se ha dividido la memoria principal. El proceso se cargar situando todas sus pginas en los marcos libres, que no necesariamente sern contiguos. La utilizacin de la Paginacin, elimina la fragmentacin externa, pero puede producirse una pequea fragmentacin externa en la ltima pgina de un proceso. En la Segmentacin los programas se dividen en mdulos y cada mdulo se convierte en un segmento durante la compilacin del programa. Un proceso se cargar, situando todos sus segmentos, en particiones dinmicas, que no necesariamente tienen que ser contiguas. La utilizacin de la Segmentacin, elimina totalmente la fragmentacin interna, pero puede producirse fragmentacin externa, que se elimina con la compactacin. Independientemente del tipo de asignacin de la memoria que se utilice, la posible eficacia de un gestor de memoria, es mayor en sistemas donde los programas son reubicables, es decir, que puedan ser cargados en las distintas reas de memoria, disponibles en un momento dado. Con objeto de proporcionar unas bases comunes, para la evaluacin de cada esquema analizado, se establecen los siguientes criterios de medida: Memoria desaprovechada. Complejidad en el tiempo. Procesos suplementarios de acceso a memoria.

La memoria desaprovechada se considera que es la fraccin de memoria fsica sin usar, que un esquema de gestin de memoria dado, es incapaz de asignar, cuando procesa una secuencia de peticiones de memoria.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

La complejidad en el tiempo, se refiere a la dificultad del clculo que es preciso realizar, para la asignacin o desasignacin de la memoria, utilizado por un esquema determinado de gestin de la memoria. Los procesos suplementarios de los accesos a memoria, se refieren a la duracin de las operaciones adicionales, llevadas a cabo por un esquema de gestin de memoria dado, cuando accede a la memoria. Una definicin ms amplia de la memoria desaprovechada, consiste en la posibilidad de mantener residentes en memoria, mltiples copias de un nico objeto comn, debido a un deficiente o restringido uso compartido. Un gestor de memoria ideal debe: Minimizar: La memoria desaprovechada. La complejidad en el tiempo. Los procesos suplementarios de acceso a memoria. Una buena proteccin de memoria. Un uso compartido flexible.

Proporcionar:

Estos requerimientos no son realizables simultneamente, por los esquemas de gestin de memoria que se van a describir, por lo tanto, un diseador de un sistema operativo, tendr que identificar y establecer la prioridad de un diseo particular, para crear un esquema de gestin de memoria apropiado a los requerimientos del sistema dado.
REQUISITOS PARA LA GESTIN DE MEMORIA.

Al realizar un estudio de los diversos mecanismos y polticas relacionadas con la gestin de memoria, conviene tener presente los requisitos que se deben satisfacer, en el diseo de un mdulo de gestin de memoria: Reubicacin. Proteccin. Comparticin. Organizacin lgica. Organizacin fsica.

Respecto a la reubicacin, se podra decir que en un sistema multiprogramado, la memoria disponible se encuentra compartida por varios procesos y adems en ciertos momentos, ser preciso poder cargar y descargar los procesos activos, que se encuentran en la memoria principal, para maximizar el uso del procesador, manteniendo una gran reserva de procesos listos para ejecutarse. Cuando un proceso haya sido descargado al almacenamiento secundario, ser preciso conocer, si cuando ese proceso vuelva a ser cargado, debe situarse en la misma regin de memoria principal, en la que estaba situado anteriormente o bien, puede situarse en posiciones diferentes a las que tena en el instante en que fue descargado. Esta situacin plantea algunos asuntos tcnicos relativos al direccionamiento, tal y como se expresa, en la figura que representa la imagen de un proceso. Sin duda alguna, el sistema operativo tiene que conocer, la ubicacin de la informacin de control del proceso y de la pila de ejecucin, as como el punto de partida para comenzar la ejecucin del proceso.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

Puesto que el sistema operativo, gestiona la memoria y es el responsable de traer el proceso a la memoria principal, todas las direcciones necesarias para la ejecucin del proceso deben ser fciles de conseguir, por lo tanto, el hardware del procesador y el software del sistema operativo, deben ser capaces de traducir las referencias a la memoria lgica encontradas en el cdigo del programa, a las direcciones fsicas reales, que reflejen la posicin actual del programa en memoria principal.
PUNTO DE ENTRADA AL PROGRAMA

CDIGO

CIMA ACTUAL DE LA PILA

DATOS PILA

BLOQUE DE CONTROL DE PROCESO

B.C.P

Durante ejecuciones diferentes de un mismo programa, pueden ser asignadas direcciones de carga diferentes, por tanto, es preciso distinguir, una direccin lgica o virtual, que es la que percibe el usuario, de una direccin fsica o real, que es el lugar de la memoria, donde el programa y sus datos son almacenados, durante una determinada ejecucin. Ms especficamente, podramos decir, que las direcciones lgicas o virtuales son identificaciones usadas para referenciar la informacin, dentro del espacio de direcciones de un proceso, mientras que las direcciones fsicas, designan la posicin actual de la memoria real, donde los elementos de informacin son almacenados en tiempo de ejecucin. Dependiendo de cuando y como tiene lugar, la proyeccin desde el espacio de direcciones lgicas o virtuales, hacia el espacio de direcciones fsicas o reales, en un esquema de gestin de memoria dado, la reubicacin del programa, puede ser considerada como esttica o dinmica. La reubicacin esttica implica, que la reubicacin es llevada a cabo, durante la carga del programa en memoria, por un programa que se denomina cargador reubicable. El programa traductor normalmente prepara l modulo objeto, suponiendo que la direccin fsica cero, es la direccin de comienzo del programa. Cuando el programa es cargado en la memoria por el mdulo del sistema operativo denominado cargador, todas las posiciones del programa, que necesitan reubicacin, son modificadas de acuerdo con la direccin fsica de la memoria, que le ha sido asignada al proceso. Una vez que el proceso est en memoria los valores que necesitan reubicacin, no se distinguen de aquellos que no la necesitan, por lo tanto, los valores de reubicacin se pierden despus de la carga y un programa reubicable estticamente, ejecutado en parte en un rea de memoria, no puede ser trasladado a otra y esperar que contine ejecutndose correctamente. En consecuencia, en sistemas con reubicacin esttica, un proceso que fue descargado dinmicamente, debe ser cargado, en la misma particin de memoria, donde estaba situado, antes de que se realizara la descarga dinmica. La reubicacin dinmica, implica que la proyeccin del espacio de direcciones lgicas o virtuales, en el espacio de direcciones fsicas o reales, es llevado a cabo en tiempo de ejecucin, normalmente con alguna asistencia del hardware de la maquina. Los procesos imagen en sistemas con reubicacin dinmica, se preparan tambin, suponiendo que la direccin de comienzo es la direccin lgica o virtual cero y se cargan en la memoria sin ninguna modificacin debida a la reubicacin.
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

Cuando dichos procesos son ejecutados, todas sus referencias a memoria son reubicadas durante la ejecucin de las instrucciones, antes de que se acceda a la memoria fsica o real. Este proceso es implementado, por medio de un registro base, que contiene la direccin fsica de la memoria, donde est cargado el proceso y este valor se obtiene del correspondiente Bloque de Control de Proceso (BCP). Cada referencia a memoria generada por la ejecucin del proceso, se convierte en la correspondiente direccin fsica, con solo sumarle el contenido del registro base.
1.000 100 CPU
DIRECCIN LGICA

1.100 +
DIRECCIN FSICA

1.000
P IMAGEN

MEMORIA

Un proceso imagen preparado suponiendo que la direccin de comienzo es la direccin lgica o virtual cero, se mantendr inalterada, antes y despus de ser cargado en la memoria. La reubicacin dinmica, hace posible mover un proceso parcialmente ejecutado en un rea de memoria a otra, sin que se produzcan inconvenientes de direccionamiento, en los accesos a las instrucciones y datos en el nuevo espacio. Esta caracterstica es muy provechosa para mantener la descarga dinmica, sin tener que ligar los procesos a las particiones y por tanto, podr ser utilizado en el particionamiento dinmico, que estudiaremos posteriormente. Respecto a la proteccin, no hay duda de que cada proceso debe protegerse contra las interferencias no deseada de otros procesos, tanto las que se produzcan de forma accidental como las intencionadas. De esta manera, el cdigo de un proceso no puede hacer referencia a posiciones de memoria de otros procesos sin la debida autorizacin. Hasta cierto punto, satisfacer las exigencias de reubicacin aumenta la dificultad de satisfacer las exigencias de proteccin, puesto que se desconoce la ubicacin de un proceso en la memoria principal y es imposible comprobar las direcciones absolutas durante la compilacin, para asegurar la proteccin. Todas las referencias a memoria generadas por un proceso, deben comprobarse durante la ejecucin, para asegurar que solo hacen referencia al espacio de memoria destinado a dicho proceso y como se ver posteriormente, los mecanismos que respaldan la reubicacin, tambin forman parte bsica del cumplimiento de las necesidades de proteccin. Las exigencias de proteccin de memoria pueden ser satisfechas por el procesador (hardware) en lugar de por el sistema operativo (software) para ello es preciso extender el sistema de proteccin establecido anteriormente para el sistema operativo, es decir, colocar un bit de proteccin en cada posicin de memoria, a un sistema multiprogramado, en el cual sera necesario colocar ms de un bit. Este problema se podra resolver estableciendo la proteccin por reas de memoria de 1 K, 2 K, 4K, etc.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

6 0
200.000 300.000 500.000 800.000

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

MONITOR REG. BASE = 300.000 REG, LIMITE = 200.000


REG. BASE REG. BASE + TAMAO.

TRABAJO 1 TRABAJO 2 TRABAJO 3

PROCESADOR

SI

SI

NO
ERROR DE DIRECCIN

<
NO
ERROR DE DIRECCIN

M E M O R I A

Respecto a la comparticin, es preciso considerar, que cualquier mecanismo de proteccin que se implemente, debe tener la flexibilidad necesaria, para permitir el acceso de varios procesos a la misma zona de memoria principal, ya que si varios procesos estn ejecutando el mismo programa, lo normal es, que todos ellos puedan acceder a la misma copia del programa, del mismo modo, si varios procesos tienen que cooperar en la misma tarea, debern poder acceder a unas estructuras de datos comunes. Por ejemplo en un sistema de uso compartido, utilizado fundamentalmente para el desarrollo de programas. Si consideramos que una media de 20 usuarios, estn editando sus programas y el editor ocupa 50 Kb de memoria, sin la utilizacin del uso compartido, estos usuarios estarn ocupando 1 Mb de memoria para situar las 20 copias del editor, sin embargo, utilizando el uso compartido, con una nica copia del editor sera suficiente. El sistema de gestin de memoria debe permitir accesos controlados a las reas compartidas de la memoria, sin comprometer la proteccin bsica y de nuevo ser preciso repetir, que los mecanismos empleados para respaldar la reubicacin, forman parte de las capacidades de comparticin. Respecto a la organizacin lgica se puede decir, que actualmente la mayora de los programas se organizan en mdulos, alguno de los cuales no son modificables, es decir, que son de solo lectura, solo ejecucin, etc. Otros en cambio, contienen datos que se pueden modificar.

MDULO PRINCIPAL

MDULO 1

ESTRUCTURAS DE DATOS MDULO 2 MDULO 3

Si el sistema operativo y el hardware del computador, pueden tratar de forma efectiva los programas de usuario y los datos que necesitan en forma de mdulos de algn tipo, se conseguirn las siguientes ventajas:
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

Los mdulos se pueden escribir y compilar independientemente, mientras que el sistema operativo resuelve durante la ejecucin, todas las referencias de un mdulo a otro. Con un escaso coste adicional, pueden otorgarse varios grados de proteccin a los distintos mdulos, es decir, solo lectura, solo ejecucin, etc. Es posible introducir mecanismos, mediante los cuales, los procesos puedan compartir mdulos y la ventaja de ofrecer comparticin a nivel mdulo es que esto se corresponde con la visin del problema que tiene el usuario y por lo tanto, es fcil para el usuario especificar la comparticin que desea.

El mtodo que ms fcilmente satisface estas necesidades es la segmentacin, que es una de las tcnicas de gestin de memoria, que se analizarn a continuacin. Respecto a la organizacin fsica, es preciso recordar que la memoria del computador se organiza en al menos dos niveles: La memoria principal. La memoria secundaria.

La memoria principal es pequea, ofrece un acceso rpido con un coste relativamente bajo y es voltil, es decir, no proporciona almacenamiento permanente, por lo tanto, solo ser capaz de mantener los programas y los datos de uso actual. La memoria secundaria es ms lenta y ms econmica que la memoria principal, pero proporciona un almacenamiento de gran capacidad, que permite mantener los programas y los datos durante un largo tiempo En este esquema de dos niveles, la organizacin del flujo de la informacin entre la memoria principal y la secundaria, debe ser resuelto, por el sistema operativo. La asignacin de la responsabilidad de este flujo al programador seria impracticable debido a dos razones. La memoria principal disponible para un programa y sus datos, puede ser insuficiente, por lo tanto, el programador tendra que aplicar una tcnica, que se conoce con el nombre de superposicin (overlay), en la cual el programa y los datos se organizan de tal forma, que puede haber varios mdulos que se asignen a la misma regin de la memoria, con un programa principal responsable del intercambio de los mdulos segn se necesite. En un entorno multiprogramado, el programador no conoce durante la codificacin cuanto espacio habr disponible o donde estar este espacio. Estas dos razones nos indican con toda claridad, que la tarea de mover la informacin entre estos dos niveles de memoria, debe ser responsabilidad del sistema operativo y corresponder lgicamente al mdulo de gestin de memoria.
CARGA DE PROGRAMAS EN LA MEMORIA PRINCIPAL.

La tarea central de cualquier sistema de gestin de memoria, ser la de incorporar los programas a la memoria principal para su ejecucin en el procesador, utilizando para ello los mtodos de asignacin de memoria ya citados anteriormente: Asignacin contigua. Asignacin no contigua.

Para la asignacin de espacio contiguo, las tcnicas que se han venido utilizando, en los sistemas operativos tradicionales, consisten en dividir el espacio de memoria disponible en particiones: Particiones fijas o estticas. Particiones variables o dinmicas.
ANGEL GLEZ. DEL ALBA

APUNTES DE SISTEMAS OPERATIVOS

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

Para la asignacin espacio no contiguo, las tcnicas que se utilizan normalmente, son la Segmentacin simple y la Paginacin simple, que generalmente no se usan en solitario, sino ms bien en combinacin con la utilizacin de la memoria virtual. No obstante el estudio de la memoria virtual resultar ms sencillo si se consideran estas dos tcnicas sin tener en cuenta la memoria virtual. A continuacin se trata de analizar con detalle todas estas tcnicas, que se han ido utilizando en los distintos sistemas operativos tradicionales, para la gestin de la memoria contigua y no contigua y posteriormente nos introduciremos en el estudio de los sistemas de gestin de memoria virtual, que son los que se utilizan en la actualidad.
MONITOR DE PROCESO NICO. MONITOR RESIDENTE.

Los primeros sistemas informticos, solo permitan la utilizacin de la maquina a un usuario, por lo tanto, todos los recursos incluida la memoria, estaban a su disposicin y no existan, los sistemas operativos actuales. A este concepto de utilizacin se le denomina maquina desnuda. Para facilitar el trabajo de los distintos usuarios, se estableci un cdigo comn para todos los usuarios, en el que se implement el sistema de control de E/S (IOCS), que fue el comienzo del concepto actual de los sistemas operativos. 0
MONITOR RESIDENTE BORDE DE LA MEMORIA REA DE PROCESOS TRANSITORIOS MAX TECHO DE LA MEMORIA

El monitor de proceso nico, fue el origen de los sistemas monoprogramados y es la manera ms simple de realizar la gestin de memoria y en ella la memoria se divide en dos reas contiguas: Una de ellas esta permanentemente asignada al sistema operativo, que debe estar residente en memoria (Monitor). La otra es asignada a los procesos transitorios, los cuales son cargados de uno en uno, en respuesta a las rdenes del usuario.

Tanto los procesos de usuario, como las partes del sistema operativo, que no estn residentes en memoria, deben ejecutarse en el rea de los procesos transitorios. Esta forma de gestin de memoria, fue utilizada por los primeros sistemas operativos, fundamentalmente, en los microcomputadores u ordenadores personales de proceso nico que en la actualidad han desaparecido, ya que el rendimiento obtenido es muy bajo. Bsicamente el sistema operativo necesitaba guardar siempre, la primera y ltima posiciones transitorias: La primera es la inmediatamente siguiente al monitor residente y se denominaba borde de la memoria. La ltima estaba determinada por la capacidad de la memoria instalada en una configuracin determinada y se denominaba techo de la memoria.

Para poder suministrar un rea contigua de memoria libre a los procesos transitorios, el sistema operativo estaba situado en uno de los extremos de la memoria. La eleccin de un extremo
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

de la memoria, es decir, la parte alta o la baja, estaba normalmente influenciada, por la posicin del rea del vector de interrupciones para el hardware subyacente. Para proteger estos datos vitales del sistema, el vector de interrupciones se considera como parte del sistema operativo, por lo tanto, este estar situado en el mismo extremo de la memoria, donde reside el vector de interrupciones. Otras partes del sistema operativo, tales como el cargador o bien el interprete de rdenes del usuario, pueden estar situados en el extremo opuesto de la memoria, dejando as una nica rea contigua de memoria libre en el centro. Cuando el proceso que se est ejecutando en el rea de procesos transitorios finaliza, el sistema operativo carga otro proceso de los que estn en la cola de espera. En un monitor de proceso nico, no existe proteccin entre procesos, ya que solo puede haber un proceso residente en memoria, sin embargo, ser preciso proteger el sistema operativo de posibles destrucciones, por parte del proceso transitorio en ejecucin. Los mecanismos de proteccin utilizados son los ya expuestos anteriormente, que consistan en la utilizacin de registros base y registros limite, as como la utilizacin de los bits de proteccin, que permiten distinguir, entre la ejecucin de un proceso del sistema operativo (Modo Supervisor) o un proceso de usuario (Modo Usuario). Otro mtodo de proteccin de la memoria, consiste en asociar a cada posicin de memoria un bit de proteccin, quedando dividida la memoria en dos zonas de tamao arbitrario, en una de las zonas los bits de proteccin estn a cero y en la otra a uno. El uso compartido de programas y datos en memoria, no tiene mucho sentido en un entorno de proceso nico. Con una asignacin de memoria sencilla y con la ausencia de las complejidades de la multiprogramacin, un monitor de proceso nico es relativamente sencillo de disear, no obstante, de la falta de un soporte de multiprogramacin, se obtiene generalmente como resultado un bajo rendimiento, tanto en el procesador como en la memoria: El procesador es desaprovechado al no existir ms que un proceso, por lo tanto, el procesador quedar inactivo, cuando se produzca una interrupcin del sistema. La memoria es utilizada por debajo de sus posibilidades debido a que, una porcin de ella, la comprendida entre el espacio final del espacio de direcciones del proceso y el final del rea de procesos transitorios, es desaprovechada.

SUPERPOSICIONES. (OVERLAYS).

Puesto que todo el espacio lgico de direcciones de un proceso, debe encontrarse en la memoria fsica antes de ejecutar el proceso, la dimensin del proceso esta limitada por el tamao de la memoria fsica. Teniendo en cuenta, que las capacidades de la memoria, comenzaron siendo muy pequeas y han ido creciendo con el avance de la electrnica, para que un proceso pueda ser mayor, que la cantidad de memoria fsica que se le asigna, se utiliza la tcnica denominada superposiciones (Overlays). Esta tcnica consiste en conservar en memoria, solamente aquellas instrucciones y datos, que se necesitan de una manera permanente, el resto de las instrucciones, que solo son necesarias en determinados momentos de la ejecucin, se pueden cargar en un rea comn cuando el proceso las requiera. Para que esta tcnica se pueda utilizar, ser preciso dividir la zona de memoria asignada en tres partes: Una zona para las instrucciones que se necesitan de una manera permanente.
ANGEL GLEZ. DEL ALBA APUNTES DE SISTEMAS OPERATIVOS

10

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

Una zona pequea donde residirn las instrucciones necesarias para gestionar las superposiciones. Una zona comn donde se cargaran las instrucciones que no son necesarias de forma permanente.

Por ejemplo, supongamos que tenemos un programa, que tiene un mdulo principal que controla la total ejecucin de un programa, que realiza dos funciones consecutivas, necesitando la ejecucin de dos mdulos independientes, el programa se ejecutar en dos pasos sucesivos.
SISTEMA OPERATIVO 50K 10K 90K MDULO PRINCIPAL GESTIN DE SUPERPOSICIONES ZONA COMN 80 K MDULO 2 70 K PARA CARGAR LA TOTALIDAD DEL PROGRAMA SERAN NECESARIAS 200 K

MDULO 1

ASIGNACIN POR INTERCAMBIO. (SWAPPING).

Realmente se podra decir que un intercambio (Swapping), es una comparticin asncrona de la memoria, ya que se sabe que para que un proceso pueda ejecutarse necesita estar en la memoria principal, sin embargo, un proceso puede intercambiarse temporalmente, saliendo de la memoria principal, para situarse en el almacenamiento secundario y regresar posteriormente a la memoria principal para continuar su ejecucin.
S.O. P1 P2 P3 P4 SWAP-IN (ENTRADA) SWAP-0UT (SALIDA) P1 P5

Si suponemos un entorno de multiprogramacin en una memoria restringida, con un algoritmo circular para la asignacin del procesador, es decir, un sistema de tiempo compartido. Cuando un cuanto expira, el gestor de memoria comenzar a intercambiar el proceso que acaba de terminar, para incorporar otro proceso al espacio de memoria que acaba de liberarse, mientras tanto, el planificador del procesador asignar un nuevo cuanto a otro proceso en memoria y cada vez que un proceso finalice su cuanto, se intercambia con otro. Es preciso que el gestor de memoria pueda intercambiar los procesos con la velocidad suficiente, para que siempre haya procesos en memoria listos para ejecutarse, cada vez que el planificador del procesador desee introducir un nuevo proceso. El tiempo establecido para un cuanto, debe ser suficiente, para que se efecten las operaciones necesarias, para la realizacin de un intercambio. Para algoritmos basados en prioridades, se emplea tambin esta poltica de intercambio. Si llega un proceso de mayor prioridad y desea ejecutarse, el gestor de memoria puede intercambiarlo con un proceso de menor prioridad, para as cargar y ejecutar el de mayor prioridad.
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

11

Cuando este proceso de mayor prioridad termina, puede devolver el proceso de menor prioridad y continuar su ejecucin. Esta variante de intercambios se denomina salida y entrada por intercambios, es decir, Swap-out y Swap-in. Normalmente un proceso que sale de un intercambio, regresar al mismo espacio de memoria que antes ocupaba, aunque como veremos posteriormente, esta restriccin la determina el tipo de reubicacin: Si la reubicacin es esttica, el direccionamiento se lleva a cabo durante la carga, el proceso, por lo tanto, no podr moverse a otras localidades de memoria. Si la reubicacin es dinmica, el direccionamiento se lleva a cabo durante la ejecucin, entonces si ser posible intercambiar un proceso a un espacio de memoria distinto.

Los intercambios requieren un espacio en el almacenamiento secundario, situado generalmente en un disco de la mayor velocidad de acceso posible o en un tambor magntico y debe tener la capacidad suficiente, para contener copias de la imagen de todos los procesos de usuario ofreciendo acceso a esta imagen. El sistema mantiene una cola de procesos listos para ejecutarse, que consiste en el almacenamiento de la informacin de control, de los procesos cuya imagen de memoria se encuentra en el almacenamiento secundario o en la memoria principal. Cuando el planificador del procesador, decide ejecutar un proceso, comprueba si el siguiente proceso de la cola esta en memoria, si no est y no se dispone de una regin de memoria libre, el planificador intercambia un proceso en memoria con el proceso deseado, obviamente el tiempo de cambio de contexto en un sistema de este tipo es bastante alto. Para obtener una utilizacin eficiente del procesador, el tiempo de ejecucin para cada proceso debe ser mayor que el tiempo de intercambio. Ejemplo: Se supone que un proceso de usuario, tiene un tamao de 512 Kb y el almacenamiento secundario es un disco con una velocidad de transferencia de 1 Mb/seg. La transferencia del proceso de 512 Kb, de la memoria o bien hacia ella durar:
512 Kb / 1024 Kb = 1 / 2 seg. = 500 msg.

Suponiendo un tiempo de posicionamiento de 8 msg. y un tiempo de latencia de 2 msg. El tiempo de intercambio es de 510 msg. Ahora bien, como el intercambio debe ser de salida y entrada, el tiempo total de intercambio es de 1020 msg. La mayor parte del tiempo de intercambio se invierte en la transferencia y el tiempo de transferencia total es directamente proporcional a la cantidad de memoria que se intercambia. Por lo tanto, si tenemos unos datos de tipo medio: Longitud media de los programas = 256K. Tiempo de posicionamiento = 8 msg. Tiempo de latencia media = 2 msg. Ratio de transferencia = 1024K / sg.
S.O MEMORIA 10 msg. + 256 K / 1.024 k = 260 msg. 10 msg. + 256 k / 1.024 K= 260 msg.
T. INTERCAMBIO = 260 + 260 = 520 MSG.

DISCO

Una forma de disminuir el tiempo necesario para la realizacin de un intercambio, consiste en solapar la ejecucin y el intercambio mediante la creacin de tres zonas de memoria o buffers:
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

12

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

Una dedicada a contener el programa que esta ejecutando actualmente. Otra para el programa que se acaba de ejecutar y que se debe transferir al soporte externo. La ltima para almacenar el programa que debe ser ejecutado a continuacin.

El programa que tiene el control de la CPU, estar situado en la memoria, para de esta manera, continuar con el proceso descrito. La cola activa esta compuesta por todos los programas incluidos en la memoria y en condiciones de ser ejecutados y requiere de un planificador a medio plazo que tendr la misin de seleccionar el prximo programa a ejecutar, entregando el control al distribuidor para localizarlo, bien en la memoria o bien en el soporte y a continuacin efectuar el cambio, de la manera que se expresa en la figura. Esta tcnica se denomina Swapping a travs de buffers y se representa a continuacin:
PRIMERA FASE PROGRAMA DEL USUARIO EN EJECUCIN BUFFER 2 BUFFER 1 SISTEMA OPERATIVO MEMORIA PROGRAMA A EFECTUAR A CONTINUACIN PROGRAMA QUE ACABA DE EJECUTARSE

DISCO

SEGUNDA FASE

BUFFER 2 BUFFER 1 SISTEMA OPERATIVO

SE AJUSTAN LOS CONTENIDOS DE LAS DIFERENTES ZONAS DE MEMORIA PARA LA SIGUIENTE ETAPA DEL SWAP

Existen otras restricciones para los intercambios, ya que si se quiere intercambiar un proceso, debe asegurarse que este completamente inactivo, pues cualquier solicitud de E/S que este pendiente tiene una importancia especial. Supongamos que la operacin de E/S esta en una cola porque el dispositivo estaba ocupado. Si se intercambia por ejemplo el proceso P1 que esta en la memoria con el proceso P2 que est en el almacenamiento secundario, la operacin de E/S que tenia pendiente el proceso P1, podra intentar usar la memoria que ahora pertenece al proceso P2. Las dos soluciones para resolver este problema son: Nunca intercambiar un proceso con operaciones de E/S pendientes. Ejecutar las operaciones de E/S, solo en los buffers del sistema operativo.

ASIGNACIN ESTATICA DE LA MEMORIA PARTICIONADA.

En la mayora de los esquemas de gestin de memoria, se puede suponer que el sistema operativo ocupa una parte fija de la memoria principal y el resto de la memoria est disponible para ser usado por varios procesos. El esquema ms sencillo de gestin de la memoria disponible es dividirla en particiones con lmites fijos. Las particiones pueden ser del mismo o de distinto tamao, pero generalmente sern de distinto tamao.
PARTICIONES DEL APUNTES DE SISTEMAS OPERATIVOS PARTICIONES DE ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS MISMO TAMAO S.O 512 K 512 K 512 K 512 K DISTINTO TAMAO S.O 128 K 256 K 512 K 1.024 K

13

Si las particiones son del mismo tamao, la ubicacin de un proceso en la memoria es trivial, ya que mientras haya una particin libre, puede cargarse un proceso en esa particin. Cuando todas las particiones estn ocupadas por procesos que no estn listos para ejecutarse, uno de esos procesos debe sacarse y hacer sitio para un nuevo proceso. Si las particiones son de distinto tamao, hay dos maneras posibles de asignar los procesos a las particiones: La forma ms simple es asignar cada proceso a la particin ms pequea en la que quepa, es decir, solo en la que mejor se adapte , para lo cual es preciso conocer la cantidad mxima de memoria, que necesitara cada uno de los procesos y realmente esta informacin no siempre se conocer. En este caso, ser necesaria una cola de planificacin para cada particin, que albergue los procesos listos para ejecutarse, cuyo destino es esa particin. La ventaja de este enfoque es que los procesos estn siempre asignados de forma que se minimiza la memoria desaprovechada dentro de cada particin. Este enfoque que parece ptimo desde el punto de vista de una particin individual, no lo es, desde el punto de vista del sistema global, ya que si tenemos particiones grandes y los procesos que van llegando son todos pequeos, las colas de las particiones grandes permanecern sin usar, incluso aunque algn proceso ms pequeo pudiera haber sido asignado a las mismas. Una solucin mejor sera emplear una sola cola para todos los procesos y cuando se va a cargar un proceso en memoria principal, se selecciona la particin ms pequea disponible que pueda albergar al proceso. Si todas las particiones estn ocupadas, se debe tomar una decisin de intercambio y puede darse preferencia al intercambio de la particin ms pequea, que pueda contener el proceso entrante. Tambin es posible considerar otros factores, tales como, prioridades y preferencia para descargar procesos bloqueados antes que procesos listos.

El uso de particiones de distinto tamao proporciona cierto grado de flexibilidad a las particiones fijas, adems, ambos tipos de esquema de particin fija son relativamente simples y exigen un software del sistema operativo sencillo y una sobrecarga de procesamiento mnima.
UNA COLA DE PROCESOS POR CADA PARTICIN S.O. 128 K 256 K UNA COLA DE PROCESOS NICA S.O. 128 K 256 K

512 K

512 K

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

14

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL 1.024 K 1.O24 K

El particionamiento fijo consiste en la asignacin esttica de la memoria particionada, que es una forma de hacer posible la multiprogramacin, dividiendo la memoria fsica disponible en varias particiones, cada una de las cuales puede ser asignada a diferentes procesos. Dependiendo de como y cuando son creadas y modificadas esas particiones, el particionamiento de la memoria, puede ser esttico o dinmico. A continuacin vamos a estudiar el particionamiento esttico y posteriormente analizaremos el particionamiento dinmico.
PARTICIONAMIENTO ESTTICO.

El particionamiento esttico se realiza durante el proceso de generacin del sistema, estableciendo l numero de particiones fijas y el tamao de cada una de ellas, teniendo en cuenta la capacidad de la memoria fsica disponible, adems el grado de multiprogramacin deseado y el tamao tpico de los procesos ms frecuentemente utilizados en la instalacin. Esto tendr que realizarse en funcin de las estadsticas recogidas durante el funcionamiento real del sistema.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

15

Un ejemplo de memoria particionada esta representado en la siguiente figura:


0K 100 K 400 K 500 K 750 K 900 K 1.000 K SISTEMA OPERATIVO LIBRE P1 P2 P3 LIBRE

De las seis particiones en que esta dividida la memoria, una de ellas, se supone que esta ocupada por el sistema operativo, otras tres por procesos de usuario y las dos particiones restantes, estn libres y disponibles para la asignacin. Una vez que las particiones estn definidas, el sistema operativo necesita guardar informacin de su estado, tal como, si la particin esta libre, o bien est asignada, para posteriormente utilizar esta informacin en el momento de la asignacin. El estado actual y los atributos de las particiones, estn recopilados en una estructura de datos, denominada Tabla de Descripcin de Particiones (PDT), Partition-Description Table. Tal y como se indica en dicha tabla, cada particin esta descrita por su direccin de comienzo (Base), su tamao y su estado. Cuando una particin esttica es usada, en la PDT solo variara el campo correspondiente al estado, ya que los restantes campos son estticos y contienen los valores establecidos en el momento de la definicin de las particiones.
TABLA DE DESCRIPCIN DE LAS PARTICIONES N DE PARTICIN 0 1 2 3 4 5 BASE 0K 100 K 400 K 500 K 750 K 900 K TAMAO 100 K 300 K 100 K 250 K 150 K 100 K ESTADO ASIGNADA LIBRE ASIGNADA ASIGNADA ASIGNADA LIBRE

Cuando un proceso va a ser creado o activado, el sistema operativo intenta asignarle una particin de memoria libre de tamao suficiente, consultando las entradas en la PDT, si la encuentra, el campo correspondiente a la entrada seleccionada, es marcado como asignada y el proceso imagen es cargado en la particin correspondiente. El formato descrito para la PDT, no nos proporciona ninguna indicacin de cual es el proceso que esta ocupando una particin dada, por lo tanto la identidad de la particin asignada debe ser establecida en el bloque de control del proceso (PCB). Cuando el proceso termina o bien es descargado dinmicamente, la informacin del bloque de control de proceso, ser utilizada para localizar la particin correspondiente y actualizar la PDT, cambiando su estado de asignada a libre.
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

16

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

Con objeto de implementar estas ideas bsicas, necesitamos solucionar dos problemas: Estrategia a utilizar para la asignacin de una particin. Que ocurre cuando no hay ninguna particin adecuada disponible para ser asignada.

Las estrategias a utilizar para la asignacin de una particin, se fundamentan en los siguientes criterios: Primera en adaptarse, First-Fit (FF). La que mejor se adapte, Best-Fit (BF).

El primer criterio consiste, en asignar la primera particin libre suficientemente grande, para contener el proceso que esta siendo creado. El segundo criterio consiste, en asignar la particin libre ms pequea, capaz de satisfacer los requerimientos del proceso. Cuando se va a decidir entre estos dos mtodos, se debe hacer una eleccin entre velocidad de ejecucin y utilizacin de la memoria. Ambos mtodos deben explorar la PDT, para identificar una particin libre de tamao adecuado, sin embargo, el primero termina en el momento que encuentra la primera particin, que cumple los requerimientos y el segundo debe analizar todas las entradas de la PDT, para identificar la que mejor se ajuste. El resultado que se obtiene es el siguiente: El primer mtodo obtiene mayor rapidez. El segundo mtodo consigue una mejor utilizacin de la memoria.

Como ejemplo de como trabajar las dos estrategias de asignacin de particiones, considerando la PDT anterior, queremos crear un proceso de 70 Kb y la situacin de la PDT es la expresada anteriormente: El primer mtodo le asignara la particin 1 y se producira una fragmentacin interna de 230 Kb, que no podrn ser utilizadas hasta que el proceso termine o bien sea descargado dinmicamente. El segundo mtodo, tendr que analizar algunas entradas ms de la PDT y asignara la particin 5, resultando una fragmentacin interna de 30 Kb, que no podrn ser utilizadas.

Si l nmero de particiones fijas es pequeo, las diferencias en tiempo de ejecucin entre los dos mtodos, no ser significativo. En general la demanda de particiones debe proceder de dos fuentes principales: La creacin de nuevos procesos. La reactivacin de procesos que anteriormente fueron descargados dinmicamente.

El mdulo de gestin de memoria intenta satisfacer estas peticiones, con la reserva de particiones libres, sin embargo, hay ciertas situaciones en las que el gestor no puede hacerlo as: Ninguna particin es suficientemente grande para contener el proceso entrante. Todas las particiones estn asignadas. Algunas particiones estn libres, pero ninguna de ellas, es suficientemente grande para contener el proceso entrante.

Si el proceso que va a ser creado es demasiado grande, para encajar en cualquiera de las particiones del sistema, se emitir un mensaje de error. Esta situacin es bsicamente un error de diseo, que puede ser remediado volviendo a definir las particiones de una manera ms adecuada.
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

17

Otra opcin es reducir los requerimientos de memoria por parte del programa, codificndolo de nuevo o tambin utilizando la tcnica de superposicin. El caso de que todas las particiones estn asignadas, se puede resolver aplazando la carga del proceso, hasta que una particin adecuada, le pueda ser asignada. Una alternativa podra ser, forzar a un proceso residente en memoria a abandonarla, para dejar disponible una particin suficientemente grande, para almacenar el proceso. Ambos, aplazamiento y descarga dinmica, son tambin aplicables para resolver el tercer caso, donde hay particiones libres pero son inadecuadas.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

18

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

Si optamos por el aplazamiento, el rendimiento en cuanto a la utilizacin de la memoria ser alto, si el sistema operativo continua asignando particiones a otros procesos, que estn en la cola de espera y cuyos requerimientos de memoria son menores, sin embargo, haciendo esto se puede violar el orden de activacin de procesos, propuesto por el algoritmo de planificacin y posteriormente puede afectar al funcionamiento del sistema. Las situaciones descritas ilustran la estrecha relacin e interaccin entre la gestin de memoria y la planificacin de los procesos, por parte del sistema operativo. En estos sistemas con particionamiento esttico de la memoria, l nmero de particiones establece, l limite mayor de procesos residentes en memoria y por lo tanto, el grado de multiprogramacin. Dentro del lmite, la utilizacin de la CPU puede ser mejorada incrementando la proporcin entre procesos disponibles y residentes, esto puede ser llevado a cabo, retirando de la memoria los procesos bloqueados temporalmente, cuando existan procesos listos para ser cargados en las particiones ocupadas por aquellos. Un proceso retirado es normalmente guardado en el almacenamiento secundario, hasta que todos los recursos que necesita para su ejecucin, excepto la memoria y la CPU, puedan serle asignados.
DESCARGA DINMICA.

Consiste en retirar de la memoria los procesos que estn bloqueados y su subsiguiente regreso, cuando los recursos que necesita para su ejecucin, a excepcin de la memoria y la CPU, le son concedidos. La descarga dinmica, se utiliza para implementar la multiprogramacin, en sistemas con una memoria restrictiva, tambin puede ser provechosa para mejorar la utilizacin de la CPU, en entornos de memoria particionada, incrementando la proporcin entre procesos preparados y residentes. Cuando el planificador decide admitir un nuevo proceso, para el cual no se ha podido encontrar una particin adecuada, se produce la descarga dinmica de uno de los procesos bloqueados, que ocupe una particin suficientemente grande, para satisfacer las necesidades del proceso entrante. Para realizar la eleccin del proceso, que abandonar la memoria y pasar al almacenamiento secundario, se tendr en cuenta, adems de la capacidad de la particin, la prioridad del proceso, que recursos que est esperando, ya que si el recurso que le mantiene en espera, es un recurso lento, existe una cierta probabilidad de que este proceso este suspendido, durante un periodo de tiempo ms largo. Otra consideracin que se deber tener en cuenta, en la eleccin del proceso que abandonar la memoria, ser el tiempo que lleva ese proceso en la memoria, con objeto de evitar la retirada de la memoria de un proceso inmediatamente despus de su admisin. Un proceso est tpicamente preparado para la ejecucin y sometido al sistema operativo en forma de archivo, que contiene un programa en formato ejecutable y los datos relacionados con l, adems de la pila necesaria para guardar las direcciones de las llamadas y regresos a los distintos procedimientos que componen el programa. Este proceso puede tambin contener, atributos del proceso tales como: prioridad, requerimientos de memoria, etc. que figuran en el bloque de control del espacio denominado proceso imagen. El archivo de descarga del sistema se crea en el momento de la creacin del proceso y esta situado en un soporte del almacenamiento secundario, que utiliza el sistema operativo y que normalmente suele ser el ms rpido, para reducir as el tiempo de intercambio.
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

19

Independientemente del tipo de archivos de descarga utilizados, la necesidad de acceder a la memoria secundaria, hace que la descarga dinmica sea una operacin lenta, si es comparado, con el tiempo de ejecucin de una instruccin por parte de la CPU. As por ejemplo, la descarga de un proceso de 256 KB, utilizando un disco con un tiempo de posicionamiento medio de 8 msg, un tiempo de latencia medio de 2 msg. La velocidad de transferencia es de 5Mb/seg, consume por termino medio 10 msg en posicionar las cabezas de lectura/escritura para comenzar la transferencia que tardar al menos 50 msg en completarla.

5* 2

20

--------- 1000 msg x

x=

2 8 * 2 10 * 1000 1000 = = 50msg 20 5 * 2 20

256 * 2 10 ------

La carga de otro proceso de 256 Kb en la particin vaca, puede llevar otros 60 msg. El tiempo total ser de 120 msg. Durante este tiempo, al menos, 256 Kb de memoria principal estn inactivos, por tanto, ser preciso tenerlo en cuenta, cuando se decide realizar una descarga dinmica. Un asunto importante en los sistemas que soportan la descarga dinmica, es si la relacin entre el proceso y la particin es esttica o dinmica, es decir, si un proceso que fue descargado, puede ahora ser cargado, solo en la particin especifica desde la que fue retirado o por el contrario, en cualquier particin del tamao adecuado. En general, esta relacin es esttica en los sistemas con particionamiento esttico de la memoria, independientemente de que la descarga dinmica sea soportada o no. En los procesos que no estn permanentemente ligados a una particin especifica, son mucho ms flexibles y tienen mayor capacidad para hacer un uso eficiente de la memoria.
REUBICACIN DE MEMORIA.

El concepto de reubicacin de memoria, se refiere a la capacidad de cargar y ejecutar un programa dado, en un lugar arbitrario de la memoria. Durante ejecuciones diferentes de un mismo programa, pueden ser asignadas direcciones de carga diferentes, por tanto, es preciso distinguir, una direccin lgica o virtual, que es la que percibe el usuario, de una direccin fsica o real, que es el lugar de la memoria, donde el programa y sus datos son almacenados, durante una determinada ejecucin. Ms especficamente, podramos decir, que las direcciones lgicas o virtuales son identificaciones usadas para referenciar la informacin, dentro del espacio de direcciones de un proceso, mientras que las direcciones fsicas, designan la posicin actual de la memoria real, donde los elementos de informacin son almacenados en tiempo de ejecucin. Dependiendo de cuando y como tiene lugar, la proyeccin desde el espacio de direcciones lgicas o virtuales, hacia el espacio de direcciones fsicas o reales, en un esquema de reubicacin dado, la reubicacin del programa, puede ser considerada como esttica o dinmica. La reubicacin esttica implica, que la reubicacin es llevada a cabo, durante la carga del programa en memoria, por un programa que se denomina cargador reubicable. El programa traductor normalmente prepara l modulo objeto, suponiendo que la direccin fsica cero, es la direccin de comienzo del programa. Cuando el programa es cargado en la memoria por el mdulo del sistema operativo denominado cargador, todas las posiciones del programa, que necesitan reubicacin, son modificadas de acuerdo con la direccin fsica de la memoria, que le ha sido asignada al proceso. Una vez que el proceso est en memoria los valores que necesitan reubicacin, no se distinguen de aquellos que no la necesitan, por lo tanto, los valores de reubicacin se pierden despus de la carga y un programa reubicable estticamente, ejecutado en parte en un rea de memoria, no puede ser trasladado a otra y esperar que contine ejecutndose correctamente.
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

20

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

En consecuencia, en sistemas con reubicacin esttica, un proceso que fue descargado dinmicamente, debe ser cargado, en la misma particin de memoria, donde estaba situado, antes de que se realizara la descarga dinmica. La reubicacin dinmica, implica que la proyeccin del espacio de direcciones lgicas o virtuales, en el espacio de direcciones fsicas o reales, es llevado a cabo en tiempo de ejecucin, normalmente con alguna asistencia del hardware de la maquina. Los procesos imagen en sistemas con reubicacin dinmica, se preparan tambin, suponiendo que la direccin de comienzo es la direccin lgica o virtual cero y se cargan en la memoria sin ninguna modificacin debida a la reubicacin. Cuando dichos procesos son ejecutados, todas sus referencias a memoria son reubicadas durante la ejecucin de las instrucciones, antes de que se acceda a la memoria fsica o real. Este proceso es implementado, por medio de un registro base, que contiene la direccin fsica de la memoria, donde est cargado el proceso y este valor se obtiene de la correspondiente tabla de descripcin de particiones (PDT). Cada referencia a memoria generada por la ejecucin del proceso, se convierte en la correspondiente direccin fsica, con solo sumarle el contenido del registro base.
1.000 CPU 100
DIRECCIN LGICA

1.100
DIRECCIN FSICA

1.000
P IMAGEN

MEMORIA

Un proceso imagen preparado suponiendo que la direccin de comienzo es la direccin lgica o virtual cero, se mantendr inalterada, antes y despus de ser cargado en la memoria. La reubicacin dinmica, hace posible mover un proceso parcialmente ejecutado en un rea de memoria a otra, sin que se produzcan inconvenientes de direccionamiento, en los accesos a las instrucciones y datos en el nuevo espacio. Esta caracterstica es muy provechosa para mantener la descarga dinmica, sin tener que ligar los procesos a las particiones y por tanto, podr ser utilizado en el particionamiento dinmico, que estudiaremos posteriormente.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS PROTECCIN Y USO COMPARTIDO.

21

La integridad o la proteccin de un sistema de multiprogramado, depende entre otras cosas, del aislamiento de los distintos espacios de direcciones, es decir no solamente, el sistema operativo debe ser protegido de intromisiones no autorizadas por parte de los procesos de usuario, sino que cada proceso, debe estar prevenido contra los accesos que accidentalmente o intencionadamente se puedan realizar en reas de memoria asignadas a otros procesos. El acceso incontrolado al espacio de memoria de un proceso, adems de causar frecuentes problemas en el funcionamiento del sistema, se pueden producir interacciones no deseadas entre procesos que estn intermitentes y que son difciles de detectar, ya que las consecuencias pueden manifestarse mucho tiempo despus, de que el proceso deteriorado haya abandonado el sistema, produciendo de esta manera, errores en otros procesos. Estas consideraciones nos indican que las operaciones multiusuario, no deberan ser proporcionadas en sistemas que no dispongan de un adecuado sistema de proteccin de memoria. Normalmente, para un sistema de particionamiento esttico, la proteccin de memoria puede estar implementada por los mecanismos generales de proteccin por software, basados en la utilizacin de registros base y registros lmite, que proporcionan el debido aislamiento de los espacios de direcciones existentes, tanto al sistema operativo como a los restantes procesos. Otro mtodo de proteccin es por hardware, que consiste en grabar los derechos de acceso en el propio espacio de la propia memoria. El mtodo de un bit por cada direccin de memoria, ya descrito anteriormente, no es apropiado para los sistemas de multiprogramados, porque se pueden separar solamente dos espacios de direcciones distintos. Este problema puede ser resuelto, aadiendo ms bits para designar la identidad de cada direccin de memoria, pero esto sera muy costoso. Una versin ms econmica, consiste en asociar varios bits a la proteccin de grandes bloques de memoria, as por ejemplo, algunos sistemas utilizan cuatro bits, denominados clave de proteccin, por cada bloque de memoria de 1 Kb, 2 kb, 4 kb, etc. De esta manera, cuando el proceso es cargado en memoria, su identidad es grabada en los bits de proteccin de los bloques que ocupa. La validacin de las referencias de memoria es establecida en tiempo de ejecucin, comparando la identidad del proceso que se est ejecutando, con el contenido de los bits de proteccin del bloque de memoria, que est siendo accedido, por lo tanto si no coinciden, el acceso se considerar ilegal. Al sistema operativo se le asigna una clave maestra nica, es decir cero, que le da acceso sin ninguna restriccin a todos los bloques de memoria. La manera ms fcil de implementar el uso compartido, es confiar los objetos compartidos al sistema operativo, ya que la utilizacin del sistema operativo para controlar el acceso a los recursos compartidos y el mecanismo para invocar los servicios del sistema operativo, no necesitan incorporar ningn suministro adicional, para soportar el uso compartido. Esta forma tan simple de abordar esta cuestin, no es muy conveniente por las razones que exponen a continuacin: Estimula el crecimiento del sistema operativo. El cdigo adicional que se incorpora al sistema operativo, consigue el mismo nivel de fiabilidad y privilegio que tiene el ncleo, cuyo comportamiento es sumamente fiable. El fragmento de cdigo que se obtiene, veda todas las reglas del desarrollo, prueba y mantenimiento de la programacin. Normalmente la mayora de los sistemas, permiten la incorporacin de rutinas escritas por el usuario dentro del sistema operativo, pero solamente durante el proceso de generacin del sistema, por lo tanto, no siendo de esta manera, el uso compartido en los sistemas de particionamiento fijo de
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

22

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

la memoria es bastante difcil, por la utilizacin de los mecanismos de proteccin expuestos anteriormente, basados fundamentalmente en el aislamiento de los distintos espacios de direcciones. Una solucin sencilla del problema pero altamente costosa, es tener una copia fsica de los objetos compartidos, en cada espacio de direcciones de los procesos que los utilizan, de esta manera, no hay accesos comunes, es decir, cada proceso se ejecuta usando su proyeccin local de los objetos compartidos, por lo tanto, cuando se hace una modificacin en el objeto compartido, esta debe ser propagada por todas las copias, para guardar la consistencia entre ellas. El sistema operativo se encarga de copiar los datos compartidos, desde el espacio de direcciones del proceso en ejecucin a todas las particiones que participan. Realmente esta solucin no tiene mucho sentido, ya que no proporciona ningn ahorro de memoria.
ASIGNACIN DINMICA DE LA MEMORIA PARTICIONADA.

La fragmentacin interna y otros problemas atribuibles al particionamiento esttico de la memoria, como pueden ser la introduccin de procesos de gran tamao, pueden ser solucionados definiendo las particiones dinmicamente, de acuerdo con los requerimientos de cada proceso. Partiendo del estado inicial del sistema, las particiones deben ser creadas dinmicamente, para adaptarse a las necesidades de cada proceso solicitante, por lo tanto, cuando un proceso termina o es descargado dinmicamente, el gestor de memoria devuelve el espacio desocupado al rea de memoria libre, desde la cual se realizan las asignaciones de memoria a los procesos que la van solicitando. En principio, ni el tamao ni el nmero de particiones de memoria asignadas dinmicamente, necesita ser limitado en tiempo de generacin del sistema o en cualquier otro momento y prcticamente, el gestor de memoria, puede seguir creando y asignando particiones a los procesos que lo solicitan, hasta que toda la memoria fsica este ocupada o bien hasta que se haya alcanzado el grado mximo de multiprogramacin. Este ltimo limite, debe ser establecido en algunos sistemas, por las restricciones en el diseo de la longitud de las colas en el bloque de control de trabajo ( PCB) y otras estructuras de datos utilizadas por el sistema operativo.
PARTICIONAMIENTO DINMICO.

Con objeto de determinar la especificacin de las estructuras de datos necesarias, para soportar la definicin y asignacin dinmica de las particiones, se estudiar brevemente la naturaleza de las operaciones, que un gestor de memoria de este tipo tiene que realizar. Cuando el gestor de memoria recibe la orden de cargar un proceso imagen, el mdulo de gestin de memoria del sistema operativo, intenta crear una particin de memoria adecuada, para asignrsela al proceso en cuestin. El primer paso en esta actividad, es localizar un rea contigua de memoria libre, si la hubiera, de tamao igual o mayor al del proceso que la solicita. Si esta rea libre es encontrada, el mdulo de gestin de memoria obtiene de esta zona, una particin del tamao exacto dictado por las necesidades del proceso y se introduce su base, tamao y estado en la tabla de descripcin de particiones (PDT). El sistema operativo controla el espacio disponible en memoria, mediante una estructura de datos, denominada lista de fragmentos disponibles, que consiste en una tabla en la que en cada entrada se almacenan la direccin fsica de comienzo y l nmero de posiciones libres. Cuando un proceso residente en la memoria termina o es descargado dinmicamente, el sistema operativo libera la particin asociada a l y devuelve el espacio ocupado por la particin a la lista de fragmentos disponibles.
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

23

Teniendo en cuenta la relacin que existe entre la PCB (Bloque de control de procesos) y la PDT (Tabla de Descripcin de Particiones), para determinar la situacin de un proceso, cuando el proceso es descargado dinmicamente, el sistema operativo anula el campo de la PCB, donde normalmente es guardada la identidad de la particin asignada. Supongamos que tenemos un espacio de 2.500 Kb de memoria disponible y un sistema operativo residente de 400 Kb. Esta situacin reflejada en la figura (a), deja 2.100 Kb para los procesos de usuario, que estn situados en una cola de entrada como la que se expresa a continuacin: Procesos
P1 P2 P3 P4 P5

Memoria
600 Kb 1.000 Kb 300 Kb 700 Kb 500 Kb

Tiempo de CPU
10 5 20 8 15

A partir de la cola de entrada expresada anteriormente y con una planificacin de trabajos quedar un espacio de de la cola de entrada. Esta situacin queda reflejada en la figura (b).
FCFS, podemos asignar memoria de inmediato a los procesos P1, P2 y P3 y nos 200 Kb, que no es suficiente para contener ninguno de los procesos restantes 0K 400 K 0K 400 K P1 1000 K P2 2000 K 2500 K 2300 K 2500 K P3 Libre 2000 K 2300 K 2500 K 1000 K Libre P3 Libre 0K 400 K P1 1000 K P4 1700 K 2000 K Libre P3 2300 K 2500 K Libre 0K 400 K P1 1000 K 1700 K 2000 K 2300 K 2500 K P4 Libre 0K 400 K Libre S. O. S. O. S. O. S. O. S. O. 0K 400 K P5 900 K 1000 K Libre P4 1700 K Libre 2000 K P3 Libre S.O.

P3 2300 K Libre 2500 K

(a)

(b)

(c)

(d)

(e)

(f)

Utilizando un algoritmo de planificacin circular de la CPU, con un cuanto de una unidad de tiempo, el proceso P2 terminar en el instante 14, por haber consumido 5 unidades de tiempo, liberando su asignacin de memoria. Esta situacin est representada en la figura (c), volviendo a la cola de trabajos iniciamos el proceso P4, obteniendo la situacin de la figura (d). El proceso P1 terminar en el instante 28, cuando cumpla las 10 unidades de tiempo y producir la situacin (e), en cuyo momento, se iniciar el proceso P5, que da como resultado la situacin (f). Este ejemplo ilustra varios puntos, ya que en cualquier momento hay un conjunto de espacios de distintos tamaos y dispersos por toda la memoria. La tabla de segmentos disponibles tiene que reflejar los espacios disponibles correspondientes a cada una de las situaciones anteriormente citadas:
SITUACIN (a) (b) (c) APUNTES DE SISTEMAS OPERATIVOS DIRECCIN FSICA DE COMIENZO 400 2300 1000 POSICIONES LIBRES 2100 200 1000 ANGEL GLEZ. DEL ALBA

24
(d) (e)

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL 2300 1700 2300 400 1700 2300 900 1700 2300 200 300 200 600 300 200 100 300 200

(f)

Cuando llega un proceso y necesita memoria, buscamos en ese conjunto, un espacio con el tamao suficiente para el proceso. Si el espacio es demasiado grande, se divide en dos y una parte se le asigna al proceso que llega y la otra queda libre, en la tabla de fragmentos disponibles. Cuando termina un proceso, libera su espacio de memoria, el cual pasa a la tabla de fragmentos disponibles. Si el espacio que queda libre, es adyacente a otros espacios libres, se fusionan formando un espacio mayor y a esta operacin se la denomina combinacin. Cuando se realiza una combinacin, es preciso comprobar si hay procesos esperando memoria, que puedan ser introducidos en ese espacio. Para la asignacin dinmica de almacenamiento, el sistema operativo selecciona el ms adecuado en funcin de las siguientes estrategias: Primer ajuste Mejor ajuste Peor ajuste First-Fit. Best-Fit. Worst-Fit.

El primer ajuste, consiste en asignar el primer espacio disponible al proceso que lo solicita. El mejor ajuste, consiste en asignar el espacio ms pequeo, que tenga el tamao suficiente para albergar el proceso. Para ello es preciso recorrer toda la tabla de fragmentos disponibles, a menos que dicha tabla est ordenada por tamao. El peor ajuste, consiste en asignar el espacio ms grande. En este caso tambin ser necesario recorrer la tabla completa. Las simulaciones han demostrado, que tanto el primer ajuste como el mejor ajuste, son mejores que el peor ajuste, en cuanto a la reduccin del tiempo y de la utilizacin del almacenamiento. Ni el primer ajuste ni el mejor ajuste son definitivamente superiores, uno respecto al otro, en relacin con la utilizacin del almacenamiento, pero por lo general, el primer ajuste es el ms rpido. Estos algoritmos producen fragmentacin externa conforme los procesos se cargan y se extraen de la memoria, el espacio de memoria se divide en pequeas partes. Dependiendo de la cantidad total de memoria y del tamao promedio de los procesos, la fragmentacin externa puede ser un problema mayor o menor. As por ejemplo el anlisis estadstico del primer ajuste revela que, incluso con cierto perfeccionamiento, dados N bloques asignados, se perdern 0,5 bloques debido a la fragmentacin, es decir, un tercio de la memoria puede estar utilizada. A este estudio estadstico se le conoce con el nombre de regla del 50 por ciento.
TABLA DE DESCRIPCIN DE PARTICIONES SITUACIN (b) N DE PARTICIN 0 BASE 0 TAMAO 400 ESTADO ASIGNADA

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS


1 2 3 4 (c) 0 1 2 3 4 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 6 400 1000 2000 2300 0 400 1000 2000 2300 0 400 1000 1700 2000 2300 0 400 1000 1700 2000 2300 0 400 900 1000 1700 2000 2300 600 1000 300 200 400 600 1000 300 200 400 600 700 300 300 200 400 600 700 300 300 200 400 500 100 700 300 300 200 ASIGNADA ASIGNADA ASIGNADA LIBRE ASIGNADA ASIGNADA LIBRE ASIGNADA LIBRE ASIGNADA ASIGNADA ASIGNADA LIBRE ASIGNADA LIBRE ASIGNADA LIBRE ASIGNADA LIBRE ASIGNADA LIBRE ASIGNADA ASIGNADA LIBRE ASIGNADA LIBRE ASIGNADA LIBRE

25

(d)

(e)

(f)

La fragmentacin interna se produce normalmente en la asignacin esttica de la memoria, pero en ciertas ocasiones, tambin se puede producir en la asignacin dinmica de la memoria. Supongamos que en un momento determinado la situacin de la memoria es la siguiente:
S. O. P1 ESPACIO DE 20.375 BYTES P2

Si consideramos que la siguiente solicitud es de 20.370 Bytes, tendremos que al asignar dicha solicitud, en el espacio existente, quedara un espacio de 5 Bytes libres.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

26

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

El sistema operativo interpreta que el procesamiento adicional necesario para asignar ese espacio ocupara un espacio mayor que el propio espacio que est libre, adems de la dificultad de encontrar una solicitud de un espacio tan pequea. La estrategia general que utiliza el sistema operativo, consiste en asignar ese espacio tan pequeo a la solicitud anterior, por lo tanto, en ciertas situaciones puede ocurrir que la memoria asignada sea algo mayor que la memoria solicitada y producir as una pequea fragmentacin interna que no se usar. Resumiendo podramos decir, que segn van entrando los procesos en el sistema, se van colocando en una cola de entrada, en espera de que el planificador a largo plazo, teniendo en cuenta los requisitos de memoria de cada proceso y la cantidad de memoria disponible, determine a que procesos se les asigna. Cuando a un programa se le asigna espacio, se carga en memoria, se relocaliza si es necesario y de esta manera puede competir por la asignacin del procesador. Lgicamente, el Planificador a largo plazo puede ordenar la cola de entrada de acuerdo con algn algoritmo de planificacin. Con este esquema de gestin de memoria, se elimina en la mayor parte de los casos la fragmentacin interna, ya que las particiones se crean con el tamao solicitado por el proceso, sin embargo, si podemos tener fragmentacin externa. Examinando el conjunto de asignaciones anteriormente expuesto, podemos ver dos situaciones de este tipo: En la situacin (b) se presenta una fragmentacin externa de 260 K, un espacio demasiado pequeo para satisfacer los requisitos de alguno de los procesos restantes P4 y P5. En la situacin (d), sin embargo, tenemos una fragmentacin externa total de 560 K, es decir, (300 K + 260 K), este espacio sera suficiente para ejecutar el proceso P5, que requiere 500 K, pero esta memoria libre no es contigua, ya que est fragmentada en dos partes, ninguna de la cuales tiene el tamao suficiente para satisfacer la solicitud del proceso P5.

Este problema de fragmentacin puede ser grave, ya que se puede tener un bloque de memoria libre entre cada dos procesos. La seleccin de la estrategia de primer ajuste y mejor ajuste, puede afectar a la cantidad de fragmentacin.
COMPACTACIN.

Una solucin para el problema de la fragmentacin externa es la compactacin, que tiene por objeto desplazar el contenido de la memoria hacia uno de los extremos para que toda la memoria libre se site en un solo espacio de gran tamao. Por ejemplo, en el conjunto de asignaciones expresado anteriormente, en la situacin (f), puede compactarse la memoria de la forma que se expresa a continuacin:
0K 400 K 900 K 1000 K 1700 K 2000 K 2300 K 2500 K S. O. P5 100 K P4 300 K P3 200 K 2500 K 0K 400 K 900 K 1600 K COMPACTACIN 1900 K S. O. P5 P4

P3

600 K

Los espacios de 100 K, 300 K y 200 K pueden compactarse en un espacio de 600 K.


APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

27

La compactacin no siempre es posible, ya que para mover los procesos P3 y P4 y que posteriormente, estos puedan ejecutarse en las nuevas posiciones, hay que reubicar todas las direcciones internas. Si la reubicacin es esttica, es decir, se realiza en el momento de la carga, la compactacin no puede realizarse, solamente ser posible si la reubicacin es dinmica y se efecta por lo tanto, en el momento de la ejecucin. Si las direcciones se reubican dinmicamente, solo ser necesario trasladar el programa y los datos y despus cambiar el registro base para situar la nueva direccin de carga. Cuando la compactacin es posible, el algoritmo ms sencillo consiste en mover todos los procesos hacia un extremo de la memoria y todos los espacios libres se mueven en sentido contrario, produciendo un gran espacio de memoria. Este esquema de compactacin puede ser bastante costoso, por tanto vamos a estudiar una forma de realizar la compactacin de menor coste con un ejemplo:
0K 300 K 500 K 600 K S. O. P1 P2 400 K 1000 K 1200 K 1500 K P3 300 K 0K 300 K 500 K 600 K 800 K 1200 K P2 P3 P4 1000 K 1200 K S.O. P1 0K 300 K 500 K 600 K P2 P4 P3 900 K S.O. P1 0K 300 K 500 K 600 K S.O. P1 P2

1500 K 900 K 900 K 1900 K 2100 K SE MUEVEN 600 K 2100 K SE MUEVEN 400 K 2100 K P4

P4 1900 K 2100 K

200 K ASIGNACIN ORIGINAL

P3 SE MUEVEN 200 K

Tambin se puede combinar el intercambio con la compactacin, ya que un proceso puede descargarse de la memoria principal al almacenamiento secundario y reincorporarse ms tarde. Cuando el proceso se descarga, se libera su memoria y quiz el espacio se pueda utilizar para otro proceso. Cuando el proceso tiene que reincorporarse por intercambio, pueden aparecer varios problemas: Si se utiliza la reubicacin esttica, el proceso debe reincorporarse exactamente a las mismas posiciones de memoria que ocupaba anteriormente, esta restriccin puede requerir, que todos los dems procesos se descarguen para liberar esa memoria. Si se emplea reubicacin dinmica, entonces el proceso se puede reincorporar a una localidad cualquiera de la memoria.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

28

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

Una estrategia que se puede utilizar para la compactacin, consiste en descargar los procesos que hay que mover y reincorporarlos a localidades de memoria diferentes. Si los intercambios o la tcnica de descargar y reincorporar los procesos, ya forma parte del sistema, el cdigo adicional para la compactacin puede ser mnimo.
PROTECCIN Y USO COMPARTIDO.

El problema principal que se produce, con el esquema de particiones de tamao variable es la fragmentacin externa. Una forma de reducir la fragmentacin externa, consiste en dividir en varias partes la memoria que necesita un proceso, de esta manera cada parte, es menor que la memoria ocupada por el proceso completo, por lo tanto, siempre ser ms fcil de acomodar en la memoria. Para utilizar esta estrategia hay que proporcionar varios pares de registros base y registros lmite, con un mecanismo apropiado, para traducir las direcciones lgicas a direcciones fsicas. Una forma de lograr esto, consiste en dividir la memoria en dos partes disjuntas y el sistema establecer dos pares de registros base y limite, para ello, la memoria se divide por la mitad utilizando el bit de direccin de orden superior. La memoria baja, se puede relocalizar y limitar, usando el par cero de registros base y lmite, la memoria alta se podra relocalizar y limitar, utilizando el par uno de registros base y limite. Por convencin o diseo, los compiladores y ensambladores colocan valores de solo lectura, es decir, constantes e instrucciones, en la memoria alta y las variables en la memoria baja. As se puede asociar una proteccin diferente a cada par de registros asegurando, que la memoria alta sea solo de lectura. Esta disposicin permite compartir programas almacenados como de solo lectura en la memoria alta entre varios procesos de usuario, cada uno con su propio segmento en la memoria baja. Una manera de lograr esto consiste en separar un programa en dos partes: cdigo y datos. La unidad de control del procesador al realizar la funcin de descodificacin, sabe si quiere realizar la bsqueda de una instruccin o bien la bsqueda o almacenamiento de datos, por lo tanto, se proporcionan dos pares de registro base y limite, uno para las instrucciones que ser solo de lectura y otro para los datos, de esta manera se podrn compartir los programas entre los distintos usuarios. Con estos esquemas, al separar programas y datos, realizando la relocalizacin por separado, podemos compartir programas entre varios usuarios, utilizando as mejor la memoria y reduciendo tanto la fragmentacin como las copias mltiples del mismo cdigo, en especial, el cdigo de uso comn como el de compiladores, editores, etc. Para finalizar la descripcin realizada del particionamiento de la memoria, se puede observar, que tanto las particiones de tamao fijo, como las de tamao variable, hacen un uso ineficiente de la memoria, las primeras generan fragmentacin interna, mientras que las segundas originan fragmentacin externa. A continuacin vamos a estudiar los esquemas de gestin de memoria basados en la asignacin de memoria no contigua, que tienen por objeto, asignar las distintas partes de un objeto lgico a reas no contiguas de la memoria fsica. La traduccin de direcciones, efectuada durante la ejecucin de las instrucciones, establece la correspondencia necesaria, entre un espacio lgico contiguo y las direcciones fsicas de la memoria no contiguas, que determinan las posiciones reales, en donde residen los objetos en la memoria fsica, durante el tiempo de ejecucin. El objetivo principal de estos esquemas de gestin de memoria, ser conseguir una mejor utilizacin de la memoria, reduciendo, tanto la fragmentacin interna como la fragmentacin externa.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS LA SEGMENTACIN.

29

La generalizacin del concepto de dividir la memoria en varias partes, definido anteriormente, introduce un aspecto importante en la administracin de la memoria, que consiste en la separacin de la perspectiva que el usuario tiene de la memoria lgica o virtual y la memoria fsica o real. La perspectiva que el usuario tiene de la memoria, se fundamenta en la organizacin lgica de un programa en la actualidad, que no se corresponde con el concepto de la memoria fsica real, pero si existe, una correspondencia entre la perspectiva del usuario y la estructura de la memoria fsica, que permite establecer la diferencia entre la memoria lgica y la memoria fsica. La memoria fsica est formada por un vector lineal de palabras, algunas con instrucciones y otras con datos, sin embargo, el usuario no considera la memoria como un vector lineal de palabras, si no ms bien, como un conjunto de partes claramente definidas por la funcin que cumplen en el desarrollo del programa. Cada una de esas partes esta agrupada de tal forma, que puedan ocupar posiciones contiguas de la memoria, pero las partes entre s, pueden estar separadas y en cualquier orden. Al espacio que ocupan cada una de esas partes es a lo que se denomina segmento. Un programa desde el punto de vista del usuario, est formado por un mdulo principal y varios secundarios, los cuales utilizan unos mdulos de cdigo y unas estructuras de datos determinadas. Cada uno de los mdulos o partes del programa tiene un nombre, que define el usuario sin preocuparse por las direcciones que estas partes van a ocupar en la memoria. Cada una de esas partes ocupa un segmento, que tiene una longitud variable y que est definida intrnsecamente por el propsito de ese segmento en el programa. Los elementos de informacin que contiene un segmento, se identifican por su desplazamiento, a partir del inicio del segmento correspondiente. Teniendo en cuenta estas consideraciones, la direccin de un elemento de informacin determinado, deber indicarse dando el nombre del segmento y el desplazamiento dentro de l. El nombre del segmento el sistema operativo lo convertir en un numero y de esta forma la direccin vendr expresada por los siguientes componentes: (s,d) s d Nombre del segmento. Desplazamiento dentro de l.

La segmentacin es un esquema de administracin de memoria, que se apoya en la perspectiva que el usuario tiene de la memoria.
MODULO PRINCIPAL SEGMENTO 0 MODULO 1 SEGMENTO 1 MODULO 2 SEGMENTO 2 400 K MEMORIA LGICA DE UN PROCESO 500 K ESTRUCTURAS DE DATOS 1 SEGMENTO 3 ESTRUCTURAS DE DATOS 2 SEGMENTO 4 1.000 K 1.100 K

1.000 K

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

30

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

Un espacio de direcciones de un programa, se compone de un conjunto de segmentos, cada uno de los cuales tiene un nombre y una longitud. Cuando un programa de usuario se traduce, el compilador construye automticamente los segmentos que constituyen el programa de entrada. Los antiguos procesadores 8086 utilizaban la segmentacin como nico esquema de administracin de la memoria.
COMO ACTA LA SEGMENTACIN.

Aunque el usuario se puede referir a los objetos de un programa utilizando direcciones lgicas bidimensionales, la memoria fsica real sigue siendo una secuencia unidimensional de bytes o palabras. Por todo ello, debemos definir una forma de implantar la correspondencia entre direcciones lgicas bidimensionales, definidas por el usuario y direcciones fsicas unidimensionales. Esta correspondencia se logra por una estructura de datos que se denomina tabla segmentos.
0 DIRECCIN DE UN SEGMENTO N. SEGMENTO (STBR) 0 1 2 3 (STLR) 4

(s,d)
BASE 1.200 6.300 4.300 3.200 4.700

1.200 2.200 3.200 4.300 4.800 5.8 00 6.300

LONGITUD 1.000 400 500 1.100 1.000

SEGMENTO 0

SEGMENTO 3 SEGMENTO 2 SEGMENTO 4

TABLA DE SEGMENTOS

STBR STLR

SEGMENT TABLE BASE REGISTER SEGMENT TABLE LENGTH REGISTER

6.700

SEGMENTO 1 MEMORIA FSICA

A continuacin se trata de exponer como se utilizan las tablas de segmentos teniendo en cuenta que una direccin lgica tiene dos componentes: Un numero de segmento (s). Un desplazamiento (d).
S < STLR TABLA DE SEGMENTOS STBR S

SI NO

SEGMENT TABLE BASE REGISTER

UCP

(s,d)

LONG.

BASE STLR BASE MEMORIA SEGMENT TABLE LENGTH REGISTER

ERROR

d < LONG
SI NO ERROR

El nmero de segmento, se utiliza como ndice en la tabla de segmentos, cada entrada en esta tabla, tiene una base (s) que determina el comienzo del segmento y una longitud del segmento, el desplazamiento (d) de la direccin lgica, debe estar entre 0 y la longitud del segmento, ya que si no
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

31

es as, se producir un error de direccionamiento. Si el desplazamiento es valido, se suma a la base del segmento para producir, la direccin de memoria fsica de la palabra deseada.
IMPLANTACIN DE LAS TABLAS DE SEGMENTOS.

La segmentacin est estrechamente relacionada con los modelos de administracin de memoria por particiones, que hemos estudiado anteriormente, con la nica diferencia de que un programa puede estar formado por varios segmentos. Como consecuencia del empleo de segmentos de distinto tamao, el concepto de segmentacin, resulta similar a las particiones dinmicas y en ausencia de un esquema de superposicin o del uso de memoria virtual, sera necesario cargar en memoria todos los segmentos de un programa para su ejecucin. La diferencia, en comparacin con las particiones dinmicas, radica en que con segmentacin, un programa puede ocupar ms de una particin y estas no tienen necesidad de ser contiguas. La segmentacin elimina la fragmentacin interna, pero como en las particiones dinmicas, produce fragmentacin externa, sin embargo, debido a que los procesos se dividen en un conjunto de partes ms pequeas, la fragmentacin externa ser menor. Las estrategias que se utilizan para la situacin de los segmentos en la memoria, son las mismas que se utilizan en las particiones dinmicas. La segmentacin es un concepto ms complejo que las particiones, de esta manera, una tabla de segmentos debe ubicarse en registros rpidos o en memoria, para poder hacer referencias a una velocidad mayor y ahorrar tiempo en las operaciones que se necesitan para localizar un elemento determinado. Cuando un programa est formado por un gran numero de segmentos, ser muy necesario conservar la tabla de segmentos en memoria y establecer un registro base de la tabla de segmentos (STBR), Segment Table Base Register, que apunta a la tabla de segmentos. As mismo, teniendo en cuenta, que el nmero de segmentos que utiliza el programa, puede variar considerablemente, se usa un registro de longitud de la tabla de segmentos (STLR), Segment Table Length Register. Para una direccin lgica (s,d), primero comprobamos si el numero de segmento (s) es legal, para lo cual S < STLR. Posteriormente sumamos el nmero de segmento al STBR, que nos proporciona la direccin (STBR + S) en memoria, de la entrada de la tabla de segmentos. Esta entrada se lee de la memoria y continuamos como antes, comparamos el desplazamiento con la longitud del segmento y calculamos la direccin fsica de la palabra deseada, como la suma de la base del segmento ms el desplazamiento.
PROTECCIN Y USO COMPARTIDO.

Una ventaja particular de la segmentacin, es la asociacin de la proteccin a los segmentos, ya que cada uno de los segmentos representa una parte del programa, es probable que todos los elementos de informacin del segmento, se utilicen de la misma manera, as, algunos segmentos contendrn instrucciones y otros contendrn datos.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

32

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

En una arquitectura moderna las instrucciones no se modifican a s mismas, es decir, el cdigo es reentrante, por lo tanto, los segmentos de instrucciones pueden definirse de solo lectura o solo ejecucin. El hardware de transformacin de memoria, consultar los bits de proteccin asociados a cada entrada de la tabla de segmentos, para evitar accesos ilegales a la memoria, como un intento de escribir en un segmento de solo lectura o utilizar como datos un segmento de solo ejecucin. Si colocamos esos bits en su propio segmento, el hardware de administracin de memoria, verificar automticamente, que los ndices de la tabla de segmento sean legales y no salgan de los limites establecidos. De esta manera, el hardware detectar muchos errores comunes en los programas, antes de que puedan causar serios daos. Otra ventaja de la segmentacin es la posible comparticin de cdigo o datos, de esta manera, cada proceso tiene una tabla de segmentos asociada a su bloque de control de proceso (PCB), utilizada por el despachador, para definir la tabla de segmentos del hardware, cuando se asigna la UCP a este proceso. Los segmentos se comparten, cuando las entradas de las tablas de segmentos de dos procesos distintos, apuntan a las mismas localidades fsicas Por ejemplo vamos a considerar el uso de un editor de textos en un sistema de uso compartido. Un editor completo puede ser bastante grande por lo tanto vamos a compartir la situacin del editor en la memoria entre los procesos de usuario P1 y P2.
40.000 60.000 64.000 90.000 98.000 EDITOR DATOS 1 EDITOR segmento 0 DATOS 1 segmento 1 DATOS 2 EDITOR Segmento 0 MEMORIA FSICA DATOS 2 segmento 1 segmento 0 segmento 1 LIMITE segmento 0 segmento 1 20.000 4.000 BASE 40.000 60.000

LIMITE 20.000 8.000

BASE 40.000 90.000

LA PAGINACIN.

La paginacin es un esquema de gestin de memoria muy utilizado actualmente, que consiste en dividir la memoria principal, en bloques iguales de tamao fijo y relativamente pequeos, que se denominan marcos de pagina. De igual modo, los procesos se dividen tambin en bloques de tamao fijo y de igual tamao que los de la memoria principal, que se denominan pginas. De esta manera, las paginas en que se ha dividido un proceso, pueden asignarse a los marcos libres de la memoria principal.

PROCESO

MEMORIA REAL

El modelo de paginacin de la memoria es el que se representa a continuacin:


N DE MARCO

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS


0 1 PAGINA 0 PAGINA 1 PAGINA 2 PAGINA 3 MEMORIA LGICA 0 1 2 3 1 4 3 7 2 3 4 5 6 7 PGINA 3 MEMORIA FSICA PGINA 2 PGINA 1 PGINA 0

33

TABLA DE PGINAS

En la figura que se expresa a continuacin se presenta el apoyo del hardware necesario para la utilizacin de la paginacin:

DIRECCIN LGICA

DIRECCIN FSICA

UCP

d
PTBR

MEMORIA FSICA

NO

SI P<PTLR

ERROR

PTLR TABLA DE PAGINAS

PAGE TABLE BASE REGISTER PAGE TABLE LENGTH REGISTER

PTBR PTLR

Cada direccin lgica generada por el procesador de divide en dos partes: un nmero de pagina (p) y un desplazamiento en la pgina (d). El nmero de pgina se utiliza como ndice en una tabla de pginas, que contiene el nmero del marco de la memoria fsica, que contiene esa pgina. La direccin fsica se consigue, multiplicando el nmero del marco por su tamao y se le suma el desplazamiento en la pgina, obteniendo de esta manera una direccin de memoria fsica o real. Tanto el tamao de la pgina como el tamao del marco, esta definido por el hardware y adems es preciso aadir, que el tamao de la pgina generalmente es una potencia de 2, dependiendo todo ello de la arquitectura del ordenador. La seleccin de una potencia de 2 como tamao de pgina, facilita la traduccin de una direccin lgica a un nmero de marco y un desplazamiento dentro del marco. Si el tamao de la pgina es 2 n unidades de direccionamiento, que pueden ser bytes o palabras, entonces, los n bits de orden inferior de la direccin lgica representan el desplazamiento en la pgina y los bits restantes de orden superior indican el nmero de pgina.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

34

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

Un ejemplo sencillo seria el siguiente:


0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C D E F G H I J K L M N O P 0 4 16 20

0 1 2 3

5 6 1 2

TABLA DE PGINAS

12

I J K L M N P Q

24

28 32

A B C D E F G H

MEMORIA LGICA TAMAO DE PGINA = 4 PALABRAS

MEMORIA FSICA 32 PALABRAS = 8 PAGINAS

Utilizando un tamao de pgina de 4 palabras y una memoria fsica de 32 palabras, es decir, ocho pginas, se muestra un ejemplo de como puede efectuarse la correspondencia entre la memoria lgica desde el punto de vista del usuario y la memoria fsica.
DIRECCIN LGICA 0 = 0000 = P = 0 D =0 P =1 D 0 P = 2 D =2 P = 3 D = 1 MARCO = 5 DIRECCIN FSICA = (5 * 4) + 0 = 20

DIRECCIN LGICA 4 = 0100 =

MARCO = 6

DIRECCIN FSICA = (6 * 4) + 0 = 24

DIRECCIN LGICA 10 = 1010 =

MARCO = 1

DIRECCIN FSICA = (1 * 4) + 2 = 6

DIRECCIN LGICA 13 = 1101 =

MARCO = 2

DIRECCIN FSICA = ( 2 * 4) + 1 = 9

Se puede observar que la paginacin es una forma de relocalizacin dinmica, es decir, cada direccin lgica esta enlazada a la direccin fsica, mediante el hardware de paginacin, siendo la paginacin semejante al uso de una tabla de registros base, uno para cada marco de memoria. La utilizacin de este esquema de gestin de memoria permite asegurar, que no se va a producir fragmentacin externa, ya que cualquier marco libre, se puede asignar al proceso que lo necesite y que solo se producir una pequea fragmentacin interna, en la ltima pagina del proceso, ya que los marcos se asignan como unidades, por lo tanto, si los requisitos de memoria de un proceso, no coinciden con los limites de las paginas, el ltimo marco asignado puede estar parcialmente vaco. As por ejemplo, si las pginas son de 2.048 bytes, un proceso de 10.760 bytes, necesitara 5 pginas ms 520 bytes, lgicamente al proceso se le asignaran 6 marcos completos y se producira una fragmentacin interna de 1.528 bytes.
10.760 / 2.048 = 5 + 520 / 2.048

Fragmentacin Interna = 2.048 520 = 1.528.

En el peor de los casos, un proceso necesitara n pginas, ms una palabra, en este caso, se le asignaran n + 1 marcos, produciendo una fragmentacin interna de casi un marco completo. Se puede decir, que si el tamao del proceso es independiente del tamao de pgina, se puede esperar una fragmentacin interna de media pagina por proceso.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

35

Esta consideracin nos indica, que son deseables tamaos de pagina pequeos, para disminuir la fragmentacin interna, pero lgicamente aumentara el nmero de entradas en la tabla de pginas, que disminuira si las pginas son ms grandes. Supongamos que en un instante dado, una serie de marcos de la memoria estn en uso y otros estn libres, lgicamente, el mdulo de gestin de memoria del sistema operativo, debe mantener una lista de marcos libres. Cuando un proceso llega para ejecutarse el planificador a largo plazo examina su tamao, el cual estar expresado en pginas, a continuacin el planificador comprueba la memoria disponible en la lista de marcos libres. Cada pgina del proceso necesita un marco, por lo tanto, si el proceso esta formado por n pginas debe haber n marcos disponibles en la memoria, si existen, el planificador a largo plazo se los asignar al proceso, creando una tabla de pginas que establecer la correspondencia entre las pginas del proceso y los marcos de la memoria donde estn situadas esas pginas. De esta manera, la primera pgina del proceso se carga en uno de los marcos asignados y el nmero del marco se registra en la tabla de pginas creada para ese proceso, la siguiente pgina se carga en otro marco y su nmero de marco se coloca en la tabla de paginas y as sucesivamente.
LISTA DE MARCOS LIBRES 14 13 18 20 15 13 14 15 16 17 18 19 20 21 0 1 2 3 14 13 18 20 LISTA DE MARCOS LIBRES 15 13 14 15 16 17 18 19 20 21 PAGINA 1 PAGINA 0

NUEVO PROCESO PAGINA PAGINA PAGINA PAGINA 0 1 2 3

PAGINA 2

TABLA DE PAGINAS DEL NUEVO PROCESO

PAGINA 3

Cada sistema operativo tiene sus propios mtodos para almacenar las tablas de pginas y la mayora asigna una tabla de pginas para cada proceso. En el bloque de control de proceso se almacena un apuntador a la tabla de pginas y cuando al despachador se le indica que inicie un proceso debe volver a cargar la tabla de pginas correspondiente.
IMPLANTACIN DE LA TABLA DE PGINAS.

La implantacin mediante hardware de la tabla de pginas, se puede realizar mediante un conjunto de registros dedicados de muy alta velocidad, para que la traduccin de direcciones sea muy eficiente, ya que cada acceso a memoria debe pasar por la tabla de pginas, por lo tanto, la eficiencia es un elemento principal.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

36

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

La utilizacin de los registros de la tabla de pginas es satisfactoria si esta es razonablemente pequea, sin embargo, la mayora de los ordenadores actuales permiten que la tabla de pginas sea muy grande y en estas maquinas no es factible el uso de registros de alta velocidad para implantar la tabla de pginas. En este caso, la tabla de pginas se conserva en la memoria principal y se utiliza un registro base de la tabla de pginas, PTBR (Page Table Base Register) que apunta a la tabla de pginas. Para cambiar entre tablas de pginas, solo sera necesario modificar este registro, lo que reduce en gran medida el tiempo de traduccin. El problema con este planteamiento, es el tiempo que se requiere, para acceder a una localidad de memoria del usuario, ya que si se quiere llegar a la localidad i, primero debemos utilizar el registro PTBR como base de la tabla de pginas y el nmero de pgina como desplazamiento dentro de la tabla de pginas, para llegar al marco de memoria donde esta situada la localidad i, que combinado con el desplazamiento dentro de la pgina, proporcionara la direccin buscada. En este esquema se necesitan dos accesos a memoria para tener acceso a una palabra, uno para la entrada de la tabla de pginas y otro para la palabra que se desea localizar, de esta manera, el acceso a memoria se vuelve ms lento por un factor de dos, demora que puede ser intolerable en la mayora de las circunstancias. La solucin comn para este problema, consiste en utilizar una memoria especial de tamao pequeo, consistente en una serie de registros asociativos o buffers de traduccin con bsqueda anticipada TLB (Translation look-aside buffers). Un conjunto de registros asociativos se construye con memoria de muy alta velocidad; cada registro consta de dos partes: una clave y un valor. Cuando se presenta un elemento a los registros asociativos, se compara simultneamente con todas las claves y si el elemento se encuentra se devuelve el valor correspondiente. La bsqueda es muy rpida pero el hardware es muy costoso. Los registros asociativos se utilizan con las tablas de paginas de la forma que se expresa a continuacin:
DIR. ORIGEN DE TABLA PGINAS a p TLB a+p p p p N MARCO p p p DESPLAZAMIENTO d DIR. REAL R = p*Tp + d

N PGINA p

DESPLAZAMIENTO d

DIR VIRTUAL V = (p,d)

TABLA PGINAS

Los registros asociativos, es decir la TLB, contienen solo algunas de las entradas de la tabla de pginas. Cuando el procesador genera una direccin lgica, su nmero de pgina se presenta al conjunto de registros asociativos, que contienen como clave, el nmero de pgina y como valor, el nmero de marco correspondiente. Si el nmero de pgina se encuentra en los registros asociativos, su nmero de marco est inmediatamente disponible y se utiliza para acceder a la memoria. Esta tarea puede consumir menos del 10% del tiempo que se utilizara en una referencia directa a memoria.
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA

TEORA DE LOS SISTEMAS OPERATIVOS

37

Si el nmero de pgina no se encuentra en los registros asociativos, entonces hay que efectuar una referencia a la tabla de pginas, para obtener el nmero de marco que permita el acceso a la memoria deseada. Adems se aadir, los nmeros de pgina y marco a los registros asociativos, para que puedan localizarse con rapidez en la siguiente referencia. El porcentaje de ocasiones que se encuentra un nmero de pgina en los registros asociativos se denomina tasa de aciertos. Una tasa de aciertos del 80% significa, que en los registros asociativos se ha encontrado l nmero de pgina deseado, en un 80% de las ocasiones. Si para buscar en los registros asociativos, se emplean 20 nanosegundos y 100 nanosegundos para el acceso a memoria, entonces un acceso a memoria con correspondencia, requiere 120 nanosegundos cuando l nmero de pgina se encuentra en los registros asociativos. Si l nmero de pgina no se encuentra en los registros asociativos, se consumirn 20 nanosegundos en dicho acceso, posteriormente acudir a la memoria para obtener la tabla de paginas y el nmero de marco, que serian 100 nanosegundos ms y por ltimo acceder a la palabra deseada de la memoria, que serian otros 100 nanosegundos, sumando un total de 220 nanosegundos. Para determinar el tiempo de acceso efectivo a memoria, debemos de ponderar cada caso por su probabilidad: Tiempo de acceso efectivo = 0,80 *120 + 0,20 * 220 = 140 nanosegundos. En este ejemplo, el tiempo de acceso a memoria es el 29% ms lento, ya que pasa de 100 a 140 nanosegundos. Para una tasa de aciertos del 90% tenemos: Tiempo de acceso efectivo = 0,90 * 120 + 0,10 * 220 = 130 nanosegundos. Esta tasa de aciertos mayor produce solo un aumento del 23% en el tiempo de acceso a memoria. La tasa de aciertos esta evidentemente relacionada con l nmero de registros asociativos. As, con 16 a 512 registros asociativos puede obtenerse una tasa de aciertos del 80% al 98%, todo depende del procesador que se est utilizando.
PROTECCIN Y USO COMPARTIDO.

La proteccin de memoria en un entorno paginado, se puede lograr asociando una serie de bits de proteccin a cada marco de pgina. Normalmente, estos bits se conservan en la tabla de pginas y permiten definir si una pgina es de solo lectura, ejecucin, actualizacin, etc. Cada referencia a memoria pasa por la tabla de pginas para encontrar el nmero de marco correcto, por lo tanto, al mismo tiempo que se calcula la direccin fsica, se puede consultar los bits de proteccin, para verificar que no se efecten actualizaciones en una pgina de solo lectura, si eso ocurre, se produce una interrupcin de hardware para el sistema operativo, consistente en una violacin de la proteccin de memoria. Esta estrategia de proteccin puede ampliarse fcilmente, para ofrecer un nivel de proteccin ms fino, creando hardware para brindar proteccin de solo lectura, lectura/escritura, o de solo ejecucin, o bien, proporcionando bits de proteccin separados para cada tipo de acceso, permitiendo cualquier combinacin de estos accesos y produciendo una interrupcin al sistema operativo si se presenta algn intento de violacin.

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA

38

GESTIN Y ADMINISTRACIN DE LA MEMORIA REAL

Es poco comn que un proceso utilice todo su intervalo de direcciones, en realidad muchos procesos, solo utilizan una pequea fraccin del espacio de direcciones del que disponen. En estos casos, seria un derroche crear una tabla de paginas, con entradas para cada pagina del intervalo de direcciones, ya que la mayor parte de esta tabla no se utilizara, pero ocupara un valioso espacio de memoria. Algunos sistemas ofrecen hardware que indica el tamao de la tabla de paginas, a travs de un registro de longitud de la tabla de paginas, PTLR (Page Table Length Register). Este valor se compara con cada direccin lgica, para asegurar que la direccin se encuentra en el intervalo valido para el proceso, si no supera esta prueba se genera una interrupcin para el sistema operativo. Una de las ventajas de la Paginacin es la probabilidad de compartir un cdigo comn, que tiene especial importancia en un entorno de tiempo compartido. Para ello vamos a considerar un sistema de tiempo compartido, que brinde servicio a 40 usuarios, cada uno de los cuales ejecuta un editor de textos.
K

Si el editor de textos, consta de 150 K de cdigo y 50 K de espacio de datos, necesitamos 8.000 para apoyar a los 40 usuarios.

Si el cdigo es reentrante, es decir, que no se puede modificar a s mismo, en este caso el cdigo puede compartirse entre varios usuarios, pero cada proceso deber tener su propio espacio para contener los datos durante la ejecucin, ya que esos datos variarn para cada proceso. Solo es necesario conservar una copia del editor en la memoria fsica, por lo tanto, cada tabla de pginas de los procesos de usuario, har corresponder las pginas de cada proceso de usuario a la misma copia fsica del editor, pero las pginas de datos, correspondern a marcos de pgina diferentes. De esta manera para apoyar a los 40 usuarios, nicamente se requiere una copia del editor (150 K), ms 40 copias del espacio de datos de 50 K de cada uno de los usuarios. Esto significa, que ahora solamente seran necesarios: 150 K + 2.000 K = 2.150 K, en lugar de, 8.000 K necesarias sin la comparticin. El ahorro que se produce con la comparticin ser mayor a medida que crezca el nmero de usuarios en el sistema.
T:PAG. 3 4 6 1 P1 T. PAG. 3 4 6 2 P2 ED 1 ED 2 ED 3 DAT 3 PROC. P3 P3 T. PAG 3 4 6 7 0 1 2 3 4 5 6 7 8 9 10 MEMORIA REAL DAT 1 DAT 2 ED 1 ED 2

ED. 1 ED 2 ED 3 DAT 1 PROC. P1 ED 1 ED 2 ED 3 DAT 2 PROC. P2

ED 3 DAT 3

APUNTES DE SISTEMAS OPERATIVOS

ANGEL GLEZ. DEL ALBA