Sie sind auf Seite 1von 26

Repblica Bolivariana de Venezuela Universidad de Oriente Ncleo - Monagas

Profesor: Ing. Roger Daz Bachiller: Rosangi Rojas C.I: 19.909.224

Maturn, septiembre 2009

Introduccin
La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. La memoria externa contenida en el disco duro es la principal fuente del material de informacin (data) utilizado para la operacin del computador, pues es en l que se registran el sistema de programas que dirige su funcionamiento general (sistema operativo), los programas que se utilizan para diversas formas de uso (programas de utilidad) y los elementos que se producen mediante ellos. Aunque actualmente la mayora de los sistemas de cmputo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen tambin altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario. La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estn utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando stos la necesiten y liberndola cuando terminen, as como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella. Los sistemas de administracin de memoria se pueden clasificar en dos tipos: los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecucin y los que no. El propsito principal de una computadora es el de ejecutar programas, estos programas, junto con la informacin que accedan deben de estar en la memoria principal (al menos parcialmente) durante la ejecucin. Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos a la vez en la memoria principal, para lo cual dispone de varias operaciones de administracin tanto del procesador como de la memoria. La seleccin de uno de ellos depende principalmente del diseo del hardware para en sistema. La gestin de memoria principal es uno de los recursos ms considerados o apreciados en un sistema operativo. La gestin de memoria concierne principalmente a la asignacin de una memoria fsica de capacidad finita a los procesos que la soliciten. Un buen gestor de memoria en un entorno de multiprogramacin, debe soportar aislamiento para separar los espacios de direcciones y uso compartido para permitir que los procesos que cooperan entre s puedan acceder a reas comunes de memoria. Dentro de la gestin de memoria y su asignacin de espacio contiguo encontraremos varios esquemas de gestin. El monitor de proceso nico, es la manera ms simple de gestin de memoria, adems es relativamente simple de disear e interpretar, debido a que posee una asignacin de memoria sencilla y ausencia de las complejidades de la multiprogramacin.

La asignacin de memoria particionada puede ser esttica o dinmica. La gestin de memoria basada en el particionamiento esttico implica que la divisin de la memoria es hecha fuera de la lnea y que las particiones quedan fijas despus de esto. Por otra parte, el particionamiento dinmico requiere bsicamente el mismo soporte hardware que el particionamiento esttico, adems el particionamiento dinmico est dirigido por los requerimientos especficos de los procesos que se ejecutan. Desde el punto de vista del gestor de memoria, la segmentacin es bsicamente una versin de la memoria particionada con mltiples registros base y lmite. Asimismo permite la rotura del espacio de direcciones virtuales en varias piezas, cada una de las cuales puede ser asignada a diferentes particiones de memoria fsica. Un proceso puede dividirse en bloques, y estos bloques pueden situarse en posiciones no contiguas de memoria principal. Es ms, no es preciso que se encuentren en la memoria todos los bloques de un proceso para que se pueda ejecutar, basta con que se encuentren los bloques que contienen cdigo o datos actualmente referenciados, el resto puede permanecer en memoria secundaria. Dentro de los esquemas de gestin de memoria basados en la asignacin de memoria fsica no contigua, hallamos la paginacin, la cual es un esquema que elimina los requerimientos de la asignacin de memoria fsica contigua. Del mismo modo, es gestionada en su totalidad por el sistema operativo y as es transparente para los programadores. La memoria virtual elimina la restriccin en el tamao de los espacios de direcciones de los procesos individuales impuesta por la capacidad de la memoria fsica instalada en un sistema dado.

Gestin de la Memoria: Asignacin de Espacio Contiguo


La gestin de memoria principal es uno de los recursos ms preciados en un sistema de multiprogramacin. En la jerarqua de las capas de un sistema operativo, la gestin de memoria pertenece a la tercera. La gestin de memoria concierne principalmente a la asignacin de una memoria fsica de capacidad finita a los procesos que la soliciten. Ningn proceso puede ser activado antes de que cierta cantidad de memoria haya sido asignada. La utilizacin de los recursos as como otros criterios de ejecucin de una computadora pueden ser afectados por la actuacin del mdulo de gestin de memoria, no slo en trminos de efectividad sino tambin como una consecuencia de su influencia en el planificador y su interaccin con l. El gestor de memoria debe asegurar el aislamiento entre los distintos espacios de direcciones. Al mismo tiempo, procesos que cooperan entre s deben estar provistos de algn medio de compartir datos comunes, tal como sincronizacin de variables. As, un buen gestor de memoria en un entorno de multiprogramacin, debe soportar ambas protecciones simultneamente. La asignacin de memoria es llevada a cabo de tal manera que cada objeto lgico colocado en memoria ocupa un conjunto de posiciones con direcciones estrictamente consecutivas. Una manera muy comn de abordar la asignacin de espacio contiguo es dividir la memoria fsica disponible y satisfacer las peticiones de memoria asignando el nmero adecuados de particiones libres, si las hay. Cuando un objeto residente en la memoria termina, sus particiones son liberadas y quedan disponibles para ser asignadas a otro peticionario. Las particiones de memoria pueden ser definidas estrictamente, es decir, durante la generacin del sistema, o dinmicamente en respuesta a las demandas de los usuarios. Cuando el particionamiento es esttico, hay un desaprovechamiento de memoria en cada particin donde se carga un objeto de tamao menor que el de la particin. El desaprovechamiento de memoria dentro de una particin, debido a la diferencia de tamao entre la particin y el objeto dado residente dentro de ella, se llama fragmentacin interna. El particionamiento dinmico elimina este problema haciendo cada particin tan grande como sea necesario para ajustarse al objeto dado, tal como un programa o un rea de datos compartidos. Despus de algn tiempo en funcionamiento, el particionamiento dinmico de memoria tiene la tendencia de entremezclar las reas de memoria asignadas con las que estn sin usar. Como resultado, la asignacin puede fallar debido a que no hay ningn bloque libre con el tamao suficiente para alojar en l una determinada peticin. El desaprovechamiento de memoria entre particiones, debido a la dispersin de espacio libre en reas discontinuas, es llamado fragmentacin externa. Independientemente del tipo de particionamiento de la memoria que est siendo usado, la posible eficacia de un gestor de memoria es mayor en sistemas donde los programas son reubicables, esto es, que puedan ser cargados en distintas reas de la memoria que estn disponibles en un momento dado.

El precio pagado por la flexibilidad aadida, por la seguridad ofrecida por la reubicacin y por la comprobacin del hardware, es una reduccin del ancho de banda de la eficacia de la memoria causada por la adicin de operaciones implicadas en los accesos a memoria. Los distintos esquemas de gestin de memoria difieren en la relativa complejidad de la traduccin de las direcciones y consecuentemente en la cantidad de tiempo de ejecucin que imponen. Con el objeto de proporcionar unas bases comunes para la comprobacin, cada esquema es analizado con respecto a los siguientes criterios de medida: Memoria desaprovechada. Complejidad en el tiempo. Procesos suplementarios de accesos 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. La memoria puede ser desaprovechada por fragmentacin, interna o externa, y por las estructuras de datos necesitadas por el funcionamiento del gestor de la memoria. El espacio ocupado por el gestor de memoria, es a veces llamado tabla de fragmentacin. La complejidad en el tiempo se refiere a la complejidad de clculo de la asignacin y desasignacin de la memoria de un algoritmo particular de gestin de memoria. Los procesos suplementarios de acceso de memoria se refieren ala duracin de las operaciones adicionales llevadas a cabo por un esquema de gestin de memoria dado cuando accede a la memoria. Es normalmente expresada en relacin al tiempo de acceso a memoria cuando el gestor de memoria est desconectado. Una definicin ms amplia de memoria desaprovechada puede incluir la cantidad de memoria desperdiciada por tener que 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 y tener una complejidad en el tiempo y unos procesos suplementarios de acceso a memoria mnimos, a la vez que proporcionar una buena proteccin y un uso compartido flexible. Un diseador del sistema operativo tiene que identificar y establecer la prioridad de gestin de memoria ms apropiado a los requerimientos del sistema dado. El diseador de un sistema operativo para un microprocesador tiene que entender los detalles del hardware que soporta la gestin de memoria lo suficientemente bien como para ser capaz de elegir el hardware ms apropiado para el esquema de gestin de memoria deseado o, alternativamente, presentar el tipo de gestin de memoria ms adecuado para un hardware dado.

Monitor de Proceso nico


El monitor de proceso nico es la manera ms simple de gestin de la memoria. La memoria es dividida simplemente en dos reas contiguas. Una de

ellas es la por la regla general permanentemente asignada a la parte del sistema operativo que debe estar residente en memoria (monitor). El resto de la memoria es asignada a los procesos llamados transitorios, los cuales son cargados y ejecutados de uno en uno en respuesta a las rdenes del usuario. Tanto los procesos del usuario, como las partes del sistema operativo que no estn residentes en memoria, deben ser ejecutados en el rea de los procesos transitorios. Esta forma de gestin de memoria es comnmente usada por sistemas operativos de microcomputadores de proceso nico, tales como CP/M y PC-DOS. El sistema operativo consume poco tiempo y esfuerzo en el manejo de la memoria cuando lo hace de esta manera. Para poder suministrar un rea contigua de memoria libre a los procesos transitorios, el sistema operativo est, por lo general, situado en uno de los extremos finales de la memoria. La eleccin de un extremo particular de la memoria, la parte alta o la baja, est a menudo influenciada por la posicin del rea del vector de interrupciones (tabla) para el hardware subyacente. Para proteger estos datos vitales del sistema, la tabla del vector de interrupciones es normalmente considerada como parte del sistema operativo. Otras partes del sistema operativo, tales como el cargador o el intrprete de las lneas de rdenes, son a veces situados en el extremo opuesto de la memoria, dejando as una nica y gran rea contigua de memoria libre en el medio. El sistema operativo se asegura de que el proceso que va a ser cargado est dentro de lmites de la memoria disponible. Si no es as, la carga no puede ser completada y como consecuencia es generado un mensaje de error. Una vez en memoria, el sistema operativo le cede el control y el proceso se ejecuta hasta su terminacin o hasta que se interrumpe debido a una condicin de error. El proceso anuncia su terminacin al sistema invocando al servicio de EXIT o a su equivalente. En este punto, otro proceso en espera puede ser cargado. Proteccin entre los distintos procesos no es casi nunca soportada por un monitor de proceso nico, ya que como mximo slo puede haber un proceso residente en memoria, en cualquier instante de tiempo. Sin embargo, es deseable proteger al sistema operativo de posibles deterioros por parte del proceso transitorio en ejecucin. Alternativamente, el sistema puede quebrar frecuentemente y necesitar reinicializacin cuando estn funcionando programas de usuario sin depurar. Una forma simple de proteger al sistema operativo de los programas de los usuarios es colocar el SO en memoria de slo lectura (<<read.only-memory>>). La proteccin puede ser llevada a cabo por un registro especial, a menudo llamado registro valla, usado para trazar la frontera entre el sistema operativo y el rea de los procesos transitorios. Suponiendo que la porcin del sistema operativo residente en memoria est en la parte baja, el registro valla est en la direccin ms alta ocupada por el SO (de aqu el nombre de valla). Cada direccin de memoria generada por un proceso de usuario es comparada con la valla. Cualquier modificacin del registro valla es una operacin privilegiada que no puede ser ejecutada por un proceso de usuario. Consecuentemente este mtodo requiere dar los medios necesarios por parte del hardware para distinguir entre la

ejecucin de un proceso del sistema operativo o un proceso de usuario, medios tales como los suministrados por los modos de operacin de usuario y supervisor. Otro mtodo de proteccin de memoria es hacer constar los derechos de acceso a memoria misma. Una posibilidad es asociar a cada palabra en la memoria un bit de proteccin. La memoria puede ser entonces fcilmente dividida en dos zonas de tamao arbitrario, son slo establecer que todos los bits de proteccin de una zona estn puestos a uno y a cero en la otra. La proteccin del sistema operativo es puesta en vigor prohibiendo a los procesos de los usuarios acceder a cualquier posicin de memoria en la que el bit de proteccin est a uno. Asimismo, el SO y otras utilidades del sistema, tales como el cargador, deben gozar del permiso necesario para acceder sin restricciones a las zonas de memoria necesarias para sus actividades. Como la mayora de los otros esquemas de proteccin, ste tambin requiere un hardware que lo soporte, para la distincin de al menos dos niveles de privilegios separados cuando estn ejecutando instrucciones mquina. El uso compartido de programas y datos en memoria no tiene mucho sentido en un entorno de proceso nico, y por tanto no es casi nunca soportado por u monitor de proceso nico. Los programas de usuario pueden por supuesto, pasarse datos uno a otros en acuerdos privados, aunque tales esquemas son, obviamente, de poca confianza, y su uso debe ser evitado. Con una asignacin de memoria sencilla y con la ausencia de las complejidades de la multiprogramacin, un monitor de proceso nico es relativamente simple de disear y comprender. Son a menudo usados en aquellos sistemas mas avanzados, en los cuales el hardware necesario para soportar formas de gestin de memoria es pequeo o donde la memoria y por tanto el tamao del sistema operativo estn muy solicitados y en consecuencia tienen un gran valor. Contando con las superposiciones, las porciones de monitor de proceso nico de tipo comercial que residen permanentemente en memoria ocupan tan slo 4KB de memoria. De la falta de un soporte para la multiprogramacin se obtiene generalmente como resultado un bajo rendimiento tanto de la CPU como de la memoria. Los ciclos de la CPU son desaprovechados debido a que no hay trabajo pendiente que pueda ser realizado mientras que el proceso en ejecucin est esperando a la conclusin de sus rdenes de E/S. Por trmino medio, la memoria desperdiciada en un sistema especfico est relacionada con la diferencia entre el tamao del proceso medio ponderado por el nmero de veces que el proceso est en ejecucin (y residente). Un problema adicional se encuentra en ocasiones en sistemas con una forma simplista de gestin de memoria. Con el objeto de ser aprovechables a travs de un ancho de banda de configuraciones de diferentes capacidades de memoria instalada, los programas del sistema, en tales entornos, tienden a ser diseados de manera que consuman la menor cantidad de memoria posible. De esta manera, ocurre que dichos programas pierden velocidad y funciones normalmente apenas se benefician de la memoria adicional cuando sta est disponible.

Asignacin Esttica de Memoria Particionada


Una forma de hacer posible la multiprogramacin es dividir la memoria fsica disponible (instalada) en varias particiones, cada una de las cuales puede ser asignada a diferentes procesos. Dependiendo de cmo y cundo son creadas y modificadas las particiones, el particionamiento de la memoria puede ser esttico o dinmico. El particionamiento esttico generalmente implica que la divisin de la memoria es hecha fuera de la lnea y que las particiones quedan fijas despus de esto. El nmero de particiones y el tamao de cada una, es normalmente determinado durante el proceso de generacin del sistema, teniendo en cuenta la capacidad de la memoria fsica disponible, el grado de multiprogramacin deseado y el tamao tpico de los procesos ms frecuentemente ejecutados en una instalacin dada. El tamao individual de cada particin es normalmente ajustado para adaptarse a las necesidades de los procesos que se ejecutan con mayor frecuencia. Ya que, en principio, dada una particin como mximo puede estar ejecutndose en ella un nico proceso en un momento dado, el nmero de particiones distintas representa el limite superior de procesos activos en un sistema. Dado el impacto del particionamiento de la memoria en el rendimiento total, algunos sistemas permiten la redefinicin manual del tamao de las particiones sin tener que hacerlo a travs del proceso de generacin del sistema. El sistema operativo debe primero asignar una regin de memoria suficientemente grande para contener la imagen del proceso. Despus de pasar a ser residente en memoria, el proceso que fue cargado recientemente, puede, en efecto, hacer una transicin al estado preparado y as paras a su elegible para su ejecucin. Una vez que las particiones estn definidas, el sistema operativo necesita guardar pista de su estado, tal como libre o en uso, para propsitos de asignacin. El estado actual y los atributos de las particiones estn a menudo recopilados en una estructura de datos llamada tabla de descripcin de las particiones PDT. Cada particin esta descrita por su direccin de comienzo (base), por su tamao y su estado. Cuando una particin esttica es usada, slo vara el campo correspondiente al estado. El resto de los campos son estticos y contienen valores definidos en el momento de definicin de las particiones.

Tabla de descripcin de las particiones. Cuando un proceso no residente va a ser creado o activado, el sistema operativo intenta asignarle una particin de memoria libre de tamao suficiente, consultando las entradas PDT. En el caso en que afortunadamente la encuentre, el campo correspondiente a la entrada seleccionada es marcado como ASIGNADA y el proceso imagen es cargado en la particin correspondiente. Ya que el formato supuesto pata la PDT no nos proporciona ninguna indicacin de cul es el proceso que est ocupando una particin dada, la identidad de la particin asignada debe ser recordada en el bloque de control del proceso. Cuando el proceso termina o tiene que ser descargado dinmicamente, esta informacin ser usada para localizar la particin correspondiente y actualizar su estado cambindolo a LIBRE. Con el objeto de implementar estas ideas bsicas, hay dios facetas importantes que deberan ser elaboradas y resueltas. La primera es la estrategia de asignacin de una particin, esto es, cmo seleccionar una particin especifica para un proceso dado. El segundo problema se presenta cuando no hay ninguna particin adecuada disponible para ser asignada. En general, la demanda de particiones debe proceder de dos fuentes principales, la creacin de nuevos procesos o la reactivacin de procesos que fueron descargados dinmicamente. El gestor 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. Algunas de las ms comunes son listadas a continuacin: 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. Por influencia del nmero de procesos residentes, el gestor de memoria puede afectar a la capacidad del planificador a la hora de desempearse tarea. Por otra parte, la eficacia del planificador a corto plazo influye en el gestor de memoria pues afecta al nmero medio de veces que los procesos estn residentes en memoria. En sistemas con particin esttica de memoria, el numero de particiones, en efecto, el limite superior del numero de procesos residentes en memoria y por tanto el grado de multiprogramacin. Dentro de este limite, la utilizacin de CPU puede ser mejorada incrementando la proporcin entre procesos disponibles y residentes. El hecho de retirar de la memoria procesos que estn suspendidos y su subsiguiente regreso es conocido como descarga dinmica. La descarga dinmica ha sido tradicionalmente usada para implementar la multiprogramacin en sistemas con una capacidad de memoria restrictiva o con un soporte hardware para la gestin de memoria muy pequeo. Cuando el planificador decide admitir un nuevo proceso para la cual no se ha podido encontrar una particin adecuada, el descargador puede ser, entonces,

invocando para vaciar tal particin. Entre los procesos cualificados, los candidatos mas probables para la descarga son aquellos que tienen una prioridad baja o los que estn esperando por algn suceso lento y que por tanto tienen mayor probabilidad de estar suspendidos durante un periodo de tiempo comparativamente ms largo. Un proceso esta tpicamente preparado para ejecucin y sometido al sistema operativo en forma de un archivo que contiene un programa en formato ejecutable y los datos relacionados con l. El archivo de descarga de sistema es por lo general creado durante la inicializacin del sistema. El archivo de descarga es comnmente situado en un mecanismo de almacenamiento secundario que sea rpido, para reducir as el estado latente de la descarga. El tamao del archivo de descarga afecta al nmero de procesos activos que hay en el sistema, ya que un proceso nuevo, intercambiable, puede ser activado slo cuando un espacio de descarga suficiente puede ser reservado para l. Estos archivos pueden ser creados tanto dinmicamente. En tiempo de creacin del proceso como estticamente, en tiempo de preparacin del programa. Independientemente del tipo de archivos de descarga usados, la necesidad de acceder a la memoria hace de la descarga dinmica una operacin lentsima en relacin con el tiempo de ejecucin de una instruccin por parte de la CPU. Un asunto importante en sistemas que soportan la descarga dinmica, es si la relacin entre el proceso y la particin es esttica o es dinmica, es decir, si un proceso que fue descargado ahora puede ser cargado slo en la particin especifica desde la que fue retirado o por el contrario en cualquier particin de tamao adecuado. En general, esta relacin es esttica en sistemas con particionamiento esttico de la memoria, independientemente de que la descarga dinmica sea soportada o no. El trmino programa reubicable se refiere a la capacidad de cargar y ejecutar un programa dado en un lugar arbitrario de la memoria en oposicin a un conjunto de posiciones fijadas en tiempo de traduccin del programa. Las direcciones virtuales son identificadores usados para referenciar dentro del espacio de direcciones de un programa, mientras que las direcciones fsicas designan la posicin actual de la memoria fsica donde los elementos de informacin son almacenados en tiempo de ejecucin. La reubicacin esttica normalmente implica que la reubicacin es llevada a cabo antes o durante la carga del programa en memoria, es decir, por un montador de enlace reubicable o por un cargador reubicable respectivamente. En sistemas con reubicacin esttica, un programa que fue descargado dinmicamente debe ser vuelto a cargar o bien en la misma particin de la que fue desahuciado o una reubicacin de software debe ser repetida si el proceso va a ser cargado en una particin distinta. La reubicacin dinmica implica que la proyeccin del espacio de direccin virtual en el espacio de direcciones fsico es llevada a cabo en tiempo de ejecucin, normalmente con alguna asistencia hardware. La reubicacin dinmica hace posible mover un proceso parcialmente ejecutado de un rea de memoria a otra sin ningn efecto adverso en los accesos a las instrucciones y datos en el nuevo espacio.

No slo el sistema operativo debe ser protegido de intromisiones no autorizadas por parte de procesos de usuario, sino que cada proceso debe estar prevenido contra los accesos que inadvertida o maliciosamente haga a reas de memoria asignadas a otros procesos. De otra manera un nico proceso por error o intencionadamente podr fcilmente corromper alguno o todos los procesos residentes restantes. Adems de causar frecuentes accidentes en el sistema, del acceso incontrolado a la memoria pueden resultar interacciones no deseadas entre procesos que estn a menudo intermitentes y que son difciles de detectar.

Registro base y lmite.

Asignacin Dinmica de Memoria Particionada


Partiendo del estado del sistema, las particiones deben ser creadas dinmicamente para adaptarse a las necesidades de cada proceso solicitante. Cuando un proceso termina o es descargado dinmicamente, el gestor de memoria puede devolver el espacio desocupado al pozo de reas de memoria libre desde la cual don hechas las asignaciones a las particiones. En principio ni el tamao ni el nmero de las particiones de memoria asignadas dinmicamente necesita ser limitado en tiempo de generacin del sistema o en cualquier otro momento. El gestor de memoria puede seguir creando y asignando particiones para los procesos que la solicitan hasta que toda la memoria fsica est agotada o sea alcanzado el grado mximo de multiprogramacin permitido. Este ltimo lmite debe ser establecido en algunos sistemas por las restricciones en el diseo de la longitud de la cola en la PCB y otras estructuras de datos en el sistema operativo. Cuando ha recibido 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 es localizar un rea contigua de memoria libre, de tamao igual o mayor al del proceso que la solicita. Si esta rea libre es encontrada, el sistema operativo obtiene de esta rea una particin del tamao exacto dictado por las necesidades del proceso. El resto

de la memoria, si sobra, es devuelto al pozo de memoria libre para futuras consideraciones. La particin es creada introduciendo su base, tamao y estado (ASIGNADA) en la tabla de descripcin de las particiones o su equivalente. Cuando un proceso residente termina o es descargado dinmicamente, el sistema operativo libera la particin asociada a l. Este proceso bsicamente consiste en devolver el espacio ocupado pos la particin (definido por la PDT) al pozo de memoria libre e invalidar la correspondiente entrada en la PDT. Para procesos descargados dinmicamente, el sistema operativo tambin anula el campo de la PCB donde normalmente es guardad la identidad de la particin asignada. Las reas de memoria libre se obtienen cuando una particin deje de ser usada y cuando en el proceso de creacin de una particin quedan porciones de memoria sobrante. Tanto para la creacin como para la asignacin de particiones, el sistema operativo debe guardar pista de la direccin de comienzo y del tamao de cada rea de memoria libre. Algoritmos frecuentes para seleccionar un rea libre de memoria para la creacin de una particin con: El que primero se adapte, y su variante, el siguiente en adaptarse. El que mejor se adapte. El que peor se adapte. Independientemente del algoritmo de asignacin que se use, es una prctica comn evitar la creacin de reas sobrantes demasiado pequeas cuando se est asignando espacio para las particiones. Una estrategia para asignacin-desasignacin conocida como el sistema compinche facilita la fusin del espacio libre asignando reas libres con una afinidad para recombinar. Adems, de los enlaces a la Lista de Memoria Libre, un campo es asociado con cada rea de memoria para indicar el estado, es decir, si est en uso o no. La creacin de reas libres (agujeros) entre particiones es conocida como fragmentacin externa y normalmente encontrada en sistemas con asignacin dinmica de memoria. La principal razn para la fragmentacin es que debido a la diferencia de duracin de los objetos residentes, el orden en que se van liberando las reas es diferente del orden en que se fueron asignando. Despus de algn tiempo en funcionamiento, los sistemas son asignacin dinmica de memoria tienden a alcanzar un estado de equilibrio en el cual la memoria desaprovechada por un esquema de asignacin dado puede ser medida y usada para comparaciones. Cuando la memoria llega a estar seriamente fragmentada, la nica salida puede ser volver a situar algunas o todas las particiones en un extremo de la memoria y as combina los agujeros en una gran rea libre. Ya que los procesos afectados deben ser interrumpidos y copiados desde un rea de memoria a otra, es importante decidir cundo y dnde va a ser llevado a cabo la compactacin. La compactacin de la memoria puede ser realizada siempre que sea posible o slo cuando es necesario. Algunos sistemas compactan la memoria

siempre que se crea un rea libre mediante un proceso de departamentacin, consiguiendo reunir la mayora de la memoria libre en una nica gran rea. Una alternativa es compactar solo cuando se produce un fallo en la asignacin de la particin adecuada, siempre que el tamao del rea resultante de sumar todas las reas librea exceda las necesidades de la peticin. De otra manera, la memoria libre no puede satisfacer el requerimiento pendiente, y la compactacin por s misma no merece la pena.

Comparticin de la memoria.

Acceso a una subrutina compartida.

Segmentacin
Una manera de reducir el tamao medio de una demanda es dividir el espacio de direcciones de un nico proceso en bloques que puedan ser situados en reas de memoria no contiguas. Esto puede llevarse a cabo por un esquema de gestin de memoria llamado segmentacin. La segmentacin va ms all de una simple rotura del espacio de direcciones en cierto nmero de entidades lgicas (segmentos), ya que tambin sunimistra reubicacin dinmica y sofisticadas formas de proteccin y uso compartido. Los segmentos son formados en tiempo de traduccin del programa, agrupando juntos los elementos relacionados lgicamente. Los datos y los cdigos compartidos con otros procesos pueden ser situados en unos segmentos propios dedicados para ellos. Siendo el resultado de una divisin lgica, cada segmento individual tiene generalmente un tamao diferente. Mientras segmentos diferentes pueden ser situados en reas de memorias fsicas separadas, no contiguas, los elementos pertenecientes al mismo segmento deben ser colocados en reas contiguas de memoria fsica. As la segmentacin comparte algunas propiedades de ambos esquemas de gestin de memoria, contigua (por lo que se refiere a los

segmentos individuales) y no contiguo (por lo que se refiere al espacio de direcciones del proceso). Un elemento individual dentro de un segmento es identificable por su desplazamiento relativo al principio del segmento al que pertenece. Las direcciones en los sistemas segmentados tienen dos componentes: el nombre del segmento y el desplazamiento dentro del segmento. Para simplificar el procesamiento, los nombres del segmento normalmente se proyectan en nmeros de segmentos (virtuales). Esta proyeccin o asignacin es esttica y debe ser llevada a cabo por programas del sistema durante la preparacin del proceso imagen. En sistemas segmentados, los tems pertenecientes a un nico segmento residen en un rea contigua de memoria fsica. Ya que cada segmento se compila como si empezara en direccin virtual 0, los segmentos son individualmente reubicables. Como consecuencia, segmentos diferentes del mismo proceso no necesitan ocupar reas contiguas de memoria fsica. Cuando se solicita la carga de un proceso segmentado, el sistema operativo intenta asignar memoria para los segmentos suministrados. Usando particionamiento lgico, similar al dinmico, una particin separada puede ser creada para ajustar las necesidades de cada segmento particular. La base (obtenida mientras se crea la particin) y el tamao (especificado en el mdulo de carga) de un segmento cargado son registrados en lo que se llama descriptor del segmento. Todos los descriptores de los segmentos son recogidos en una tabla llamada tabla de descriptores de segmentos (SDT). El nmero de segmentos suministrados en la direccin virtual es usado para encontrar en la SDT la direccin base fsica correspondiente al segmento en cuestin. En general el tamao de la tabla de descriptores de segmentos esta relacionada con el tamao del espacio de direcciones virtudes de los procesos. Desde el punto de vista del sistema operativo, la segmentacin es esencialmente una versin de la memoria particionada dinmicamente, con mltiples bases y limites. La memoria es asignada en forma de particiones variables, la principal diferencia es que cada segmento individual se le asigna una de tales particiones. Las bases y los lmites de los segmentos pertenecientes a un proceso dado son guardados juntos en una SDT a la cual se le debe asignar una particin. La base y los lmites son normalmente guardados en la PCB del proceso al que pertenece. La descarga dinmica requiere la anulacin de todas las entradas de la SDT que describen los segmentos afectados. La segmentacin puede cortar el ancho de banda de la memoria efectiva por la mitad. En la mayora de las mquinas segmentadas, a saber, la CPU emite unos bits de estado para indicar el tipo de cada referencia a memoria. El hardware de gestin de memoria utiliza esta informacin para seleccionar el registro de asignacin de memoria apropiado. Los beneficios de conocer el tipo de segmentos mediante una asistencia hardware son reconocidos y explotados en muchas arquitecturas segmentadas. La forma de proteccin mas natural para sistemas segmentados es la que se apoya en los registros base y limite. El espacio de direcciones legal para un

proceso es el que resulta de la unin de todos los segmentos definidos por su SDT. Excepto para segmentos compartidos, la separacin de los distintos espacios de direcciones es hecha respetar colocando segmentos diferentes en reas de memoria disjuntas.

Segmentos.

Gestin de la Memoria: Asignacin de Espacio No Contiguo


Por no contigua queremos decir que la memoria es asignada de tal manera que las distintas partes de un nico objeto lgico pueden estar situadas en reas no contiguas de manera fsica.

Paginacin
La paginacin es un esquema de gestin de memoria que elimina los requerimientos de la asignacin de memoria fsica contigua. Bsicamente, la memoria fsica est conceptualmente dividida en un nmero de porciones de tamao fijo llamados marcos de pgina. El espacio de direcciones de un proceso esta tambin dividido en bloques de tamao fijo llamados paginas. La asignacin de memoria consiste en encontrar un nmero suficiente de marcos de pgina sin usar para cargar las pginas del proceso que estn siendo requeridas. Se usa un mecanismo de traducciones direcciones para hacer corresponder a cada pgina virtual su correspondiente pgina fsica. Ya que cada pgina es asignada separadamente, los diferentes marcos de pginas asignados a un nico proceso no necesitan ocupar reas contiguas de memoria fsica.

Paginacin. La proyeccin de direcciones virtuales en direcciones fsicas en sistemas paginados se lleva a cabo a nivel de pgina. En particular, cada direccin virtual esta dividida en dos partes: el nmero de pginas (virtual) y el desplazamiento dentro de la pgina. Ya que las pginas y los marcos de pgina tienen el mismo tamao, los desplazamientos dentro de ellos son los mismos y por tanto no necesitan ser proyectados. En sistemas con paginacin, la traduccin de direcciones se lleva a cabo con la ayuda de una tabla de asignacin llama tabla de mapa de paginas (PMT). La PMT se construye en tiempo de carga del proceso para establecer la correspondencia entre las direcciones virtuales y fsicas. El valor de cada entrada que se encuentra en la PMT por cada virtual de un proceso es el nmero de marco de pgina en la memoria fsica donde la correspondiente pgina virtual est colocada.

En sistemas paginados la memoria es asignada en cantidad de tamao fijo llamadas pginas. El sistema operativo guarda pista del estado de cada marco de pgina por medio de un mapa de memoria fsica, el cual puede ser estructurado como una tabla esttica. Si el tamao de un proceso dado no es un mltiplo del tamao de la pgina, el ltimo marco de pgina puede ser parcialmente inutilizado. Este fenmeno es conocido como fragmentacin de pgina o rotura de pgina. La asignacin de memoria, entonces consiste simplemente en encontrar n marcos de pgina cualquiera. Teniendo todos los marcos de pagina idnticos tamao, la poltica de asignacin de marco no tiene prcticamente ningn efecto en la utilizacin de la memoria. Depuse de haber seleccionado n marcos de pgina libres, el sistema operativo carga las pginas del proceso en los marcos y construye la tabla del cuerpo de pgina para este proceso. La eficacia del algoritmo de asignacin de memoria depende principalmente de la velocidad con la que puede localizar marcos de pgina libres. El soporte hardware para paginacin normalmente se concentra en conservar la memoria necesaria para almacenar las tablas de asignacin y en acelerar la proyeccin de direcciones virtuales en fsicas. La multitud de tablas de mapa de pginas en sistemas paginados suministra el incentivo para minimizar la cantidad de memoria necesaria para su almacenamiento. En principio, cada PMT debe ser suficientemente grande para contener el espacio de direcciones de tamao mximo permitido en un sistema dado. Necesitando una PMT para cada proceso activo, el almacenamiento total para las PMT puede consumir una porcin significante de la memoria fsica. La proteccin en sistemas paginados puede ser llevada a cabo por medio de claves de proteccin. En principio, el tamao de la pgina debe corresponder con el tamao del bloque de memoria protegido por una nica clave. Esto permite que las pginas pertenecientes a un nico proceso puedan ser dispersadas a travs de la memoria. El uso compartido de pginas es bastante sencillo en sistemas con una gestin paginada. Una nica copia de una pgina compartida puede ser fcilmente asignada a tantos espacios de direcciones como se desee.

Memoria Virtual
La memoria virtual permite la ejecucin de programas cargados parcialmente. Como consecuencia, la suma de los espacios de direcciones virtuales de los procesos activos en un sistema con memoria virtual, puede exceder la capacidad de la memoria fsica disponible siempre que la memoria fsica sea suficientemente grande para guardar una cantidad mnima del espacio de direcciones de cada proceso activo. As, mientras que los esquemas de memoria real se esfuerzan por aproximarse al 100 por 100 de la utilizacin de la memoria fsica, los sistemas con memoria virtual suministran una utilizacin aparente superior al 100 por 100. Adems, el tamao disponible del espacio de

direcciones virtual de un nico proceso puede exceder la capacidad mxima de la memoria fsica que puede estar instalada en un sistema dado. Los detalles de la gestin de memoria son generalmente transparentes para los programadores. Teniendo la ilusin de disponer de una memoria mucho mayor de la que en realidad est disponible, los programadores estn prcticamente liberados de la carga de intentar que sus programas encajen dentro de una memoria limitada. Adems, el mismo programa puede ejecutarse sin reprogramarlo o recompilarlo en sistemas con significantes deferencias de capacidad de la memoria instalada. La capacidad de ejecutar procesos que estn parcialmente cargados, es tambin ventajoso desde el punto de vista del sistema operativo. Por ejemplo, un proceso puede estar cargado en un espacio de tamao arbitrario. Esto puede ser usado para reducir la fragmentacin externa sin necesidad de cambiar el orden planificado para la ejecucin de procesos. Adems, la cantidad de espacio usado por un proceso dado puede variar durante su residencia en la memoria. Como resultado, el sistema operativo puede acelerar la ejecucin de procesos importantes asignndole ms memoria real. Alternativamente, reduciendo la memoria real ocupada por lo procesos residentes, el grado de multiprogramacin puede incrementar utilizando el espacio vacante para activar mas procesos. A pesar de estos beneficios debemos tener prudencia. Una instruccin puede ser completada slo si todo, el cdigo, datos y porciones de pila a los que hace referencia, estn en memoria fsica. La memoria virtual puede ser implementada como una extensin de la gestin de memoria paginada o segmentada. En un sistema con memoria virtual algunas porciones del espacio de direcciones del proceso en ejecucin pueden estar ausentes de la memoria principal. En muchos grandes sistemas, el espacio de direcciones virtual es mayor que la memoria fsica, pero la relacin contraria entre ambos puede encontrarse en algunos sistemas minicomputadores o microcomputadores. El sistema operativo asigna dinmicamente memoria real a porciones del espacio virtual de direcciones. La tarea adicional del hardware de traduccin de direcciones en sistemas virtuales es detectar si el elemento al que se referencia est o no en memoria real. El tipo de elemento que falta depende del esquema bsico de gestin de memoria que usamos, y puede ser un segmento o una pagina.en ambos casos, si el elemento referenciado est en memoria, el proceso de traduccin de direcciones se completa de la forma normal correspondiente al esquema que est siendo usado. En trminos de mecanismos, la deteccin de un elemento ausente es bastante sencilla. La implementacin de la memoria virtual requieres ciertos suministros hardware ms all de los normalmente encontrados en sistemas diseados para soportar paginacin o segmentacin. Dependiendo de si estn o no presentes, una arquitectura puede o no ser capaz de soportar la memoria virtual.

Memoria Virtual. Una aplicacin arquitectnicamente importante es que la memoria virtual puede inducir a la interrupcin de ciertas instrucciones durante su ejecucin. La mayora de los sistemas que no pretenden soportar memoria virtual permitan el reconocimiento de interrupciones slo entre instrucciones pero no durante la ejecucin de stas. Deshacer los efectos parciales es a menudo especfico de la instruccin y difcil de generalizar en un procedimiento comn, incluso para una arquitectura especifica. Adems algunas instrucciones pueden realizar cambies irresistibles que son extremadamente difciles o imposibles de deshacer. Como con la paginacin. La existencia de una memoria intermedia de anticipacin de traduccin es altamente deseable para reducir los efectos negativos de la asignacin en el ancho de banda efectivo de la memoria. La asignacin de slo un subconjunto de marcos de pagina redes al espacio de direcciones virtual de un proceso, requiere la incorporacin de ciertas polticas en el gestor de memoria virtual. Podemos clasificar estas polticas como sigue:

1. Poltica de asignacin: que cantidad de memoria real se asigna a cada proceso activo. 2. Poltica de bsqueda y lectura: qu elementos traer y cundo traerlos desde el almacenamiento secundario a la memoria principal. 3. Poltica de sustitucin: cundo un elemento nuevo tiene que ser trado a memoria principal y no hay memoria libre, qu elemento desahuciar para hacer sitio al nuevo. 4. Poltica de colocacin: dnde colocar un elemento nuevo. En la mayora de las implementaciones se va a buscar los elementos cuando el proceso en ejecucin causa una excepcin de falta de elemento. La ejecucin de programas parcialmente cargados generalmente conduce a tiempos de respuesta mayores, debido al proceso de la excepcin de falta de elemento, lo cual implica retrasos relativamente largos originados por los accesos a discos. Por tanto, minimizando el nmero de excepciones experimentadas por un programa dado, la utilizacin efectiva de la CPU, el ancho de banda de E/S de disco y el tiempo de respuesta del programa pueden ser mejorados. Una consideracin hardware/software implicada en el diseo de sistemas paginados es la eleccin del tamao de pagina. Un tamao pequeo reduce la fragmentacin interna y puede conseguir un mejor uso de la memoria conteniendo slo una localidad especfica de referencia. Debido a las altas proporciones de transferencia del disco, el tiempo de transferencia de pgina es prcticamente insignificante en comparacin con el tiempo de acceso a disco. Una consideracin importante en paginacin real y sistemas con memoria virtual basados en la demanda de pgina, es el disco de la memoria intermedia de anticipacin de la traduccin (TLAB). La proteccin y uso compartido en sistemas con memoria virtual conservan esencialmente las caractersticas del esquema de gestin de memoria subyacente, tales como paginacin o segmentacin. Cuando un elemento en memoria real est compartido por varias partes, las tablas de asignacin de todos los procesos implicados deben apuntar a l. Una posibilidad interesante suministrada pos espacios de direcciones virtuales grandes es tratar ala sistema operativo mismo como un objeto compartido. La asignacin y la desasignacin de reas de almacenamiento de tamao variable para guardar los segmentos individuales en disco imponen considerablemente ms gasto suplementario que el manejo de las paginas, que estn normalmente designadas para adaptarse en u nico bloque de disco. Por otra parte, la paginacin es muy conveniente para la gestin de la memoria principal y secundaria, pero es inferior en cuanto a proteccin y uso compartido. Ambas implementaciones, segmentada y paginada, de la memoria virtual tienen sus propias ventajas y desventajas y ninguna es superior a la otra en todas las caractersticas. Algunos sistemas computadores combinan los dos mtodos para disfrutar de los beneficios de ambos. Una aproximacin muy comn es usar la segmentacin desde el punto de vista del usuario para as dividir cada

segmento en pginas de tamao fijo para propsitos de asignacin. De esta manera, el sistema combinado conserva la mayora de las ventajas de la segmentacin. Al mismo tiempo, los problemas de colocacin de los segmentos y de gestin de memoria secundaria se eliminan usando la paginacin. Cada direccin virtual en un sistema combinado contiene bsicamente tres campos: el nmero de segmento, el nmero de pgina y el desplazamiento dentro de la pgina. Aunque la combinacin de segmentacin y paginacin es ciertamente atrayente, requiere dos accesos a memoria para completar la proyeccin de cada direccin virtual.

Conclusiones
La gestin de memoria de un sistema operativo asigna y reclama porciones de memoria principal en respuesta a las peticiones de los usuarios y de otros mdulos del sistema operativo de acuerdo con los objetivos de la gestin de los recursos en un sistema particular. La memoria, normalmente, se libera cuando los objetos residentes terminan. Cuando es necesario, el gestor de memoria puede incrementar la cantidad de memoria disponible moviendo objetos inactivos o de baja prioridad en niveles inferiores dentro de la jerarqua de la memoria. Los mecanismos de gestin de memoria consisten en la asignacin y reclamo de espacio y en guardar pistas del estado de las reas de memoria. El objetivo de la gestin de memoria es suministrar un uso eficiente de la memoria minimizando la cantidad de memoria desaprovechada a la vez que se imponen pocos procesos suplementarios en el almacenamiento, clculo y accesos a memoria. Una manera muy comn de abordar la asignacin de espacio contiguo es dividir la memoria fsica disponible y satisfacer las peticiones de memoria asignando el nmero adecuado de particiones libres, si las hay. Fijar el tamao de las particiones limita el mximo espacio de direcciones virtuales permisibles de un proceso dado el tamao de la particin mayor (a no ser que se use la superposicin). Los sistemas con particionamiento esttico padecen de fragmentacin interna de memoria. El particionamiento dinmico (variable) permite asignar la memoria fsica completa, excepto la parte residente del sistema operativo, a un nico proceso. La creacin dinmica de particiones de acuerdo con las necesidades especficas de los procesos peticionarios tambin eliminan el problema de la fragmentacin in terna. La asignacin dinmica de particiones requiere el uso de algoritmos ms complejos para la desasignacin de las particiones e incorporarlas a la externa. La necesidad de la compactacin ocasional de la memoria es tambin un contribuyente importante en el incremento de la complejidad de particionamiento dinmico, tanto en tiempo como en espacio. Tanto el particionamiento esttico como el dinmico cuentan con un hardware virtualmente idntico para soportar la reubicacin y la proteccin. La asignacin particionada de memoria impone unos gastos suplementarios relativamente pequeos, pero limita el uso compartido y sufre de fragmentacin interna y externa. Tanto los procesos del usuario, como las partes del sistema operativo que no estn residentes en memoria, deben ser ejecutadas en el rea de los

procesos transitorios. sta forma de gestin de memoria es comnmente usada por sistemas operativos de microcomputadoras de proceso nico. El uso compartido de programas y datos en memoria no tiene mucho sentido en un entorno de proceso nico, lo que nos indica que no es casi nunca soportado por un monitor de proceso nico. Un monitor de proceso nico es relativamente simple de disear y comprender debido a que posee una asignacin de memoria sencilla y carece de las complejidades de la multiprogramacin. De la falta de un soporte para la multiprogramacin se obtiene generalmente como resultado un bajo rendimiento tanto de la CPU como de la memoria. La contigidad del espacio de direcciones virtual se mantiene haciendo la traduccin de las direcciones en tiempo de ejecucin de las instrucciones. La segmentacin permite romper el espacio de direcciones virtual de in proceso en varias entidades (segmentos) que pueden ser colocadas en reas de memoria fsica no contiguas. La segmentacin comparte algunas propiedades de ambos esquemas de gestin de memoria, contigua (por lo que se refiere a los segmentos individuales) y no contigua (por lo que se refiere al espacio de direcciones del proceso). La segmentacin tambin puede reducir el impacto de la fragmentacin externa es sistemas con memoria particionada dinmicamente. Otras ventajas de la segmentacin incluyen la reubicacin dinmica, la sutilmente granulada proteccin tanto dentro como entre espacios de direcciones, facilidades para el uso compartido y para el enlace y la carga dinmica. La segmentacin no eliminara el problema de la limitacin del tamao del espacio virtual del proceso por el tamao de la memoria fsica disponible, a menos que realicen algunas previsiones adicionales. La paginacin simplifica la asignacin y desasignacin de la memoria dividiendo el espacio de direcciones en trozos de tamao fijo. La traduccin, en tiempo de ejecucin, de direcciones virtuales a reales, normalmente asistida por hardware, se usa para salvar el salto entre las direcciones virtuales contiguas y las direcciones fsicas no contiguas donde pueden residir diferentes pginas. La memoria virtual permite la ejecucin de procesos cargados parcialmente. Como consecuencia, la suma de los espacios de direcciones virtuales de los procesos activos en un sistema con memoria virtual, puede exceder la capacidad de la memoria fsica disponible siempre para guardar una cantidad mnima del espacio de direcciones de cada proceso activo. La memoria virtual puede ser implementada como una extensin de la gestin de memoria paginada o segmentada. La implementacin de la memoria virtual requiere ciertos suministros hardware ms all de los normalmente encontrados en sistemas diseados para soportar paginacin o segmentacin. Dependiendo de si estn o no

presentes, una arquitectura puede o no ser capaz de soportar la memoria virtual. Ambas implementaciones, segmentada y paginada, de la memoria virtual tienen sus propias ventajas y desventajas y ninguna es superior a la otra en todas las caractersticas.

Bibliografa
Garca Pelayo, R. (2008). Larousse Diccionario Bsico Lengua Espaola. (1era. ed). Editorial Ultra. Mxico, DF. Milenkovit, M. (1988). Sistemas Operativos Concepto y Diseo. (1era edicin en espaol por McGraw-Hill/Interamericana de Espaa). Editorial. Madrid, Espaa.

Das könnte Ihnen auch gefallen