Está en la página 1de 17

[Escribir el nombre de la compaa]

Los sistemas operativos y la gestin de memoria.


[Escribir el subttulo del documento]

Jos Bonilla 01/01/2012

Introduccin.

Sin el software una computadora es en esencia una masa metlica sin utilidad. Con el software, una computadora puede almacenar, procesar y recuperar informacin, encontrar errores de ortografa e intervenir en muchas otras valiosas actividades para ganar el sustento. El software para computadoras puede clasificarse en general, en dos clases: los programas de sistema, que controlan la operacin de la computadora en s y los programas de aplicacin, los cuales resuelven problemas para sus usuarios. El programa fundamental de todos los programas de sistema, es el sistema operativo, que controla todos los recursos de la computadora y proporciona la base sobre la cual pueden escribirse los programas de aplicacin. Un sistema operativo es un programa que acta como intermediario entre el usuario y el hardware de un computador y su propsito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. El objetivo principal de un sistema operativo es, entonces, lograr que el sistema de computacin se use de manera cmoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. Son tantos los componentes que conforman un sistema operativo y tantas las funciones que realiza pero cabe mencionar que no se hablara de todas a lo largo del trabajo, sin embargo se tomara como base para el desarrollo del tema, una de las tareas ms importantes que realizan los sistemas operativos: la gestin de memoria. La memoria es uno de los recursos vitales del sistema que debemos gestionar con precaucin. La parte del sistema operativo que se encarga de la gestin de la memoria es el administrador de la memoria. El gestor de memoria asigna esta a un proceso que la solicita y se la retira cuando acaba o cuando el proceso esta temporalmente inactivo para dejar espacio a otros procesos. En nuestro modelo de estudio, el modulo de gestin de memoria es la capa siguiente a la del procesador. Se ha podido notar que sin memoria los procesos no pueden existir. Por otra parte, la unidad de manejo de memoria, se dice que es un dispositivo de hardware el cual est formado por un grupo de circuitos integrados, responsable del manejo de los accesos a la memoria por parte de la Unidad de Procesamiento Central (CPU). De todo ello se hablara ms adelante.

Sistemas operativos
El complejo funcionamiento de dispositivos de hardware conectados como parte de un computador hacen necesario la presencia de una capa de software que contenga programa especficos para el control de toda esa red de dispositivos. A esta capa se le denomina Sistemas Operativos (SO). Un sistema operativo es un programa o conjunto de programas que en un sistema informtico gestiona los recursos de hardware y provee servicios a los programas de aplicacin, ejecutndose en modo privilegiado respecto de los restantes. Cmo funciona un Sistema Operativo? Los SO proporcionan una plataforma de software encima de la cual otros programas, llamados aplicaciones, puedan funcionar. Las aplicaciones se programan para que funcionen encima de un sistema operativo particular, por tanto, la eleccin del sistema operativo determina en gran medida las aplicaciones que puedes utilizar. Los SO tienen por funcin la gestin ptima de recursos de hardware y software que permitirn a su vez proporcionar al usuario herramientas amigables para lograr una adecuada comunicacin entre las rdenes que da al equipo y las respuestas apropiadas de este, de esta manera, podemos estudiar los SO con dos perspectivas diferentes: la primera como administrador de recursos y la segunda como mquina extendida, es decir que tienen el objetivo de proporcionar a los usuarios una mquina virtual que sea ms cmoda de usar que la mquina real. De lo anterior, podemos afirmar que un computador requiere de tres elementos bsicos que se relacionen entre s para lograr su funcionamiento: dispositivos de hardware, programas del sistema operativo y los programas de aplicaciones con los que interacta el usuario. Para entender realmente el proceso que se ejecuta para lograr una respuesta ptima por parte del SO debemos definir algunos conceptos: La interfaz.

Debemos entender que las aplicaciones (generalmente grficas) de las que se vale un usuario para interactuar con el computador a nivel de SO se denominan: operaciones extendidas, haciendo referencia a la segunda funcin principal de un SO tambin se conocen en trminos tcnicos como llamadas al sistema. Para ejemplificar este concepto podemos hacer uso de frases como: el SO tiene una llamada al sistema de leer archivos o llamada al sistema de montaje de dispositivos.

Procesos.

Un proceso puede definirse bsicamente como un programa en ejecucin. Los procesos contienen una serie de parmetros que le brindan al SO la informacin que requiere para la ejecucin de un programa. De esta manera, a cada proceso se le asocian datos como: ubicacin en disco del programa, tiempos de ejecucin y requerimientos de memoria o procesador para poder ejecutarse. El SO hace llamadas a procesos para poder ejecutar de manera lgica y ordenada la secuencia de pasos que indica un programa para completar una tarea. Sistemas de archivos.

Son modelos abstractos que les permiten a los usuarios mostrar de manera ordenada y amigable la informacin que se encuentra dentro de un disco duro. Los sistemas de archivos o ficheros (como se denominan en los sistemas UNIX) son una abstraccin digital de la forma lgica como las personas entendemos y ordenamos nuestros objetos fsicamente, un sistema de ficheros permite al usuario y al SO controlar y ordenar su informacin y disponer de ella de forma lgica e independiente de la verdadera distribucin dentro de los dispositivos de hardware. Las llamadas al sistema de archivos (regresando al concepto de interfaz), estn relacionadas a la ejecucin de tareas como crear, borrar, leer o escribir un archivo. Una vez generalizado los conceptos de funcionamiento bsico de un SO, vamos a realizar una descripcin de su estructura interna, basndonos en el modelo cliente-servidor. Este concepto se basa en la tendencia de minimizar el nmero de tareas que ejecuta un ncleo o kernel de un SO con la intensin de agilizar procesos que pueden ejecutarse en otros niveles con menor demanda de recursos. Este enfoque define procesos usuarios como aquellos que pueden ejecutar tareas simples como la solicitud de un servicio y proceso servidor como aquel que ejecuta la tarea y genera una respuesta. De lo anterior podemos extraer evidencia de que el modelo se comporta como una red interconectada de procesos servidores que ejecutan funciones secundarias del kernel y en un tercer nivel procesos clientes que ejecutan tareas ms sencillas y se relaciona con la interfaz. Por lo tanto los SO contienen el conjunto de programas principales que hacen posible la interaccin del usuario con la computadora y por ende con sus dispositivos de hardware, lo que se traduce en la obtencin de respuestas concretas a tareas u rdenes especficas

dictadas por l. Internamente puede tener diferentes modelos estructurales que buscan generar sistemas ms robustos, eficientes y seguros. Ejemplos de Sistemas Operativos. A continuacin se encuentran algunos ejemplos de sistemas operativos: Familia Windows Windows 95 Windows 98 Windows ME Windows NT Windows 2000 Windows 2000 server Windows XP Windows Server 2003 Windows CE Windows XP 64 bits Windows Vista Windows 7

Familia Macintosh Mac OS 7 Mac OS 8 Mac OS 9 Mac OS X

Familia UNIX AIX AMIX GNU/Linux GNU / Hurd HP-UX Irix Minix System V Solaris

UnixWare

Caractersticas principales. Los sistemas operativos en general tienen las siguientes caractersticas: Conveniencia: un sistema operativo hace ms conveniente el uso de una computadora. Eficiencia: el sistema operativo permite que los recursos de la computadora se usen de manera correcta y eficiente. Habilidad para evolucionar: un sistema operativo debe de ser capaz de aceptar nuevas funciones sin que tenga problemas. Encargado de administrar el hardware: el sistema operativo debe de ser eficaz. Relacionar dispositivos.

Gestin de memoria.
Se denomina gestin de memoria al acto de gestionar la memoria de un dispositivo informtico. De forma simplificada se trata de proveer mecanismos para asignar secciones de memoria a los programas que las solicitan y a la vez, liberar las secciones de memoria que ya no se utilizan para que estn disponibles para otros programas. La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. 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. Los sistemas de gestin de memoria de sistemas operativos multitarea normalmente tratan con las siguientes tareas: Reasignacin.

En los sistemas con memoria virtual, los programas en la memoria debe ser capaz de residir en diferentes partes de la memoria en diferentes momentos. Esto se debe a que cuando el programa se cambi de nuevo en la memoria despus de ser intercambiado por un tiempo que no siempre se puede colocar en el mismo lugar. La unidad de gestin de memoria virtual tambin debe hacer frente a la concurrencia. Gestin de memoria en el sistema operativo por lo tanto debe ser capaz de trasladar los programas en la memoria y

manejar referencias de la memoria y las direcciones en el cdigo del programa para que siempre apunten a la ubicacin correcta en la memoria. Proteccin.

Los procesos no deberan poder referenciar la memoria de otros procesos sin permiso, para evitarlo existe la proteccin de memoria, que evita que cdigo malicioso o errneo de un programa interfiera con la operacin de otros programas en ejecucin. Memoria compartida.

Aunque la memoria utilizada por diferentes procesos suele estar protegida, algunos procesos puede que s tengan que compartir informacin y, para ello, han de acceder la misma seccin de memoria. La memoria compartida es una de las tcnicas ms rpidas para posibilitar la comunicacin entre procesos. Organizacin lgica.

Los programas a menudo estn organizados en mdulos, algunos de los cuales pueden ser compartidos por diferentes programas, algunos son de slo-lectura y otros contienen datos que pueden se pueden modificar. La gestin de memoria es responsable de manejar esta organizacin lgica, que se contrapone al espacio de direcciones fsicas lineales. Una forma de lograrlo es mediante la segmentacin de memoria. Organizacin fsica.

La memoria suele dividirse en un almacenamiento primario de alta velocidad y uno secundario de menor velocidad. La gestin de memoria del sistema operativo se ocupa de trasladar la informacin entre estos dos niveles de memoria. Administrador de memoria. 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 accede 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 opciones de administracin tanto del procesador como de la memoria. La seleccin de uno de ellos depende principalmente del diseo del hardware para el sistema. Memoria real. La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la informacin contenida en ella es de ms rpido acceso. Slo la memoria cache es ms rpida que la principal, pero su costo es a su vez mayor. Memoria virtual. El trmino memoria virtual se asocia a dos conceptos que normalmente aparecen unidos: El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusin de tener ms memoria RAM de la que realmente hay en el sistema. Esta ilusin existe tanto a nivel del sistema, es decir, teniendo en ejecucin ms aplicaciones de las que realmente caben en la memoria principal, sin que por ello cada aplicacin individual pueda usar ms memoria de la que realmente hay o incluso de forma ms general, ofreciendo a cada aplicacin ms memoria de la que existe fsicamente en la maquina. Ofrecer a las aplicaciones la ilusin de que estn solas en el sistema, y que por lo tanto, pueden usar el espacio de direcciones completo. Esta tcnica facilita enormemente la generacin de cdigo, puesto que el compilador no tiene por qu preocuparse sobre dnde residir la aplicacin cuando se ejecute. Espacio de direcciones. En computacin, un espacio de direcciones define un rango de direcciones discretas, donde cada una puede corresponder a un registro de memoria real o virtual, un dispositivo perifrico, un host de red, un sector de disco, u otra entidad lgica o fsica. Una direccin de memoria, identifica la ubicacin fsica en una memoria de computadora, como lo hara una direccin de una calle (direccin de memoria) en una ciudad (memoria).

El espacio de direcciones sera como un rea de ubicaciones (un vecindario, una ciudad o un pas, siguiendo con la comparacin anterior). Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos: Direcciones fsicas.

Son aquellas que referencian alguna posicin en la memoria fsica. Direcciones lgicas.

Son las direcciones utilizadas por los procesos. Sufren una serie de transformaciones, realizadas por el procesador, antes de convertirse en direcciones fsicas. Direcciones lineales.

Direcciones lineales se obtienen a partir de direcciones lgicas tras haber aplicado una transformacin dependiente de la arquitectura. Los programas de usuario siempre tratan con direcciones virtuales, nunca ven las direcciones fsicas reales. Unidad de manejo de memoria. La Unidad de manejo de memoria o MMU es un dispositivo de Hardware formado por un grupo de circuitos integrados, responsable del manejo de los accesos a la memoria por parte de la Unidad de Procesamiento Central (CPU). Sus funciones son: Convertir las direcciones lgicas emitidas por los procesos en direcciones fsicas. Comprobar que la conversin se puede realizar. La direccin lgica podra no tener una direccin fsica asociada. Por ejemplo, la pgina correspondiente a una direccin se puede haber trasladado a una zona de almacenamiento secundario temporalmente. Comprobar que el proceso que intenta acceder a una cierta direccin de memoria tiene permisos para ello. La MMU se Inicializa para cada proceso del sistema. Esto permite que cada proceso pueda usar el rango completo de direcciones lgicas (memoria virtual), ya que las conversiones de estas direcciones sern distintas para cada proceso. En todos los procesos se configura la MMU para que la zona del ncleo solo se pueda acceder en modo privilegiado del procesador. La configuracin correspondiente al espacio de memoria del ncleo es idntica en todos los procesos.

Intercambio. El objetivo del intercambio es dar cabida a la ejecucin de ms aplicaciones de las que pueden residir simultneamente en la memoria del sistema: Consiste en trasladar el cdigo y los datos de un proceso completo de memoria al sistema de almacenamiento secundario, para cargar otro previamente almacenado, no permiten a un proceso utilizar ms memoria RAM de la que realmente existe en el sistema. Esta tcnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque ste solo vaya a ejecutar una pequea porcin del cdigo. Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar especial del disco y posteriormente vuelto a memoria y continuada su ejecucin. El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imgenes de memoria de todos los usuarios. Herramientas de administracin de memoria. Asignacin contigua. La memoria principal normalmente se divide en dos particiones: Sistema operativo residente, normalmente en la parte baja de memoria con los vectores de interrupcin. Procesos de usuario en la parte alta. Asignacin de particin simple: Puede utilizarse un esquema de registro de relocalizacin y lmite para proteger un proceso de usuario de otro y de cambios del cdigo y datos del sistema operativo. El registro de relocalizacin contiene la direccin fsica ms pequea; el registro limite contiene el rango de las direcciones lgicas. Cada direccin lgica debe ser menor al registro limite. Asignacin de particiones mltiples: Bloques de distintos tamaos estn distribuidos en memoria, cuando llega un proceso se le asigna un hueco suficientemente grande para acomodarle. El sistema operativo debe tener informacin sobre: Particiones asignadas.

Particiones libres (huecos). Asignacin de particin dinmica. El proceso de compactacin es una instancia particular del problema de asignacin de memoria dinmica, el cual es el cmo satisfacer una necesidad de tamao n con una lista de huecos libres. Existen muchas soluciones para el problema. El conjunto de huecos es analizado para determinar cul hueco es el ms indicado para asignarse. Las estrategias ms comunes para asignar algn hueco de la tabla son: Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. La bsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o en donde termin la ltima bsqueda. La bsqueda termina al encontrar un hueco lo suficientemente grande. Mejor ajuste: Busca asignar el espacio ms pequeo de los espacios con capacidad suficiente. La bsqueda se debe de realizar en toda la tabla, a menos que la tabla est ordenada por tamao. Esta estrategia produce el menor desperdicio de memoria posible. Peor ajuste: Asigna el hueco ms grande. Una vez ms, se debe de buscar en toda la tabla de huecos a menos que est organizada por tamao. Esta estrategia produce los huecos de sobra ms grandes, los cuales pudieran ser de ms uso si llegan procesos de tamao mediano que quepan en ellos. Se ha demostrado mediante simulacros que tanto el primer y el mejor ajuste son mejores que el peor ajuste en cuanto a minimizar el tiempo del almacenamiento. Ni el primer ajuste o el mejor ajuste es claramente el mejor en trminos de uso de espacio, pero por lo general el primer ajuste es ms rpido. Fragmentacin. La fragmentacin es la memoria que queda desperdiciada al usar los mtodos de gestin de memoria que se vieron en los mtodos anteriores. Tanto el primer ajuste, como el mejor y el peor producen fragmentacin externa. La fragmentacin es generada cuando durante el reemplazo de procesos quedan huecos entre dos o ms procesos de manera no contigua y cada hueco no es capaz de soportar ningn proceso de la lista de espera. La fragmentacin puede ser: Fragmentacin Externa.

Existe el espacio total de memoria para satisfacer un requerimiento, pero no es contigua.

Fragmentacin Interna.

La memoria asignada puede ser ligeramente mayor que la requerida; esta referencia es interna a la particin, pero no se utiliza. La fragmentacin externa se puede reducir mediante la compactacin para colocar toda la memoria libre en un solo gran bloque, pero esta slo es posible si la relocalizacin es dinmica y se hace en tiempo de ejecucin. Paginacin. Es una tcnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones fsicas de igual tamao, denominadas marcos de pgina. Los programas se dividen en unidades lgicas, denominadas pginas, que tienen el mismo tamao que los marcos de pginas. De esta forma, se puede cargar una pgina de informacin en cualquier marco de pgina. Las pginas sirven como unidad de almacenamiento de informacin y de transferencia entre memoria principal y memoria auxiliar o secundaria. Cada marco se identifica por la direccin de marco, que est en la posicin fsica de la primera palabra en el marco de pgina. Las pginas de un programa necesitan estar contiguamente en memoria, aunque el programador lo observe de esta forma. Los mecanismos de paginacin permiten la correspondencia correcta entre las direcciones virtuales (dadas por los programas) y las direcciones reales de la memoria que se reverencien. Cada pgina consiste en z palabras contiguas; un espacio de direcciones N de un programa consiste de n pginas (0, 1, 2, 3n-1) (n*z direcciones virtuales) y el espacio de memoria consiste de m marcos de pginas (0, z, 2z,, (m-1) z) (m*z posiciones). Una direccin virtual a es equivalente a una direccin dada como una dupla (p, d), en la cual p es el nmero de la pgina y del nmero de la palabra dentro de la pgina, de acuerdo con la relacin: a=p*z+d (06), los cuatro bits ms significativos indican el numero de la pagina y los m-4 bits restantes, el desplazamiento. Para tener el control de las pginas, debe mantenerse una tabla en memoria que se denomina tabla de Mapas de Pagina (PMT) para cada uno de los procesos. Hasta ahora, los mtodos que hemos visto de la administracin de la memoria principal,

nos han dejado con un problema: Fragmentacin, (huecos en la memoria que no pueden usarse debido a lo pequeo de su espacio) lo que nos provoca un desperdicio de memoria principal. Una posible solucin para la fragmentacin externa es permitir que espacio de direcciones lgicas lleve a cabo un proceso en direcciones no contiguas, as permitiendo al proceso ubicarse en cualquier espacio de memoria fsica que est disponible, aunque est dividida. Una forma de implementar esta solucin es a travs del uso de un esquema de paginacin. La paginacin evita el considerable problema de ajustar los pedazos de memoria de tamaos variables que han sufrido los esquemas de manejo de memoria anteriores. Dado a sus ventajas sobre los mtodos previos, la paginacin, en sus diversas formas, es usada en muchos sistemas operativos. Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus de memoria, sino que van a una unidad administradora de la memoria (Memory Management Unit). Estas direcciones generadas por los programas se llaman direcciones virtuales y conforman el hueco de direcciones virtuales. Este hueco se divide en unidades llamadas pginas. Las unidades correspondientes en la memoria fsica se llaman marcos para pgina o frames. Las pginas y los frames tienen siempre el mismo tamao. Tablas de pginas. Cada pgina tiene un nmero que se utiliza como ndice en la tabla de pginas, lo que da por resultado el nmero del marco correspondiente a esa pgina virtual. Si el bit presente ausente es 0, se provoca un sealamiento hacia el sistema operativo. Si el bit es 1, el nmero de marco que aparece en la tabla de pginas se copia en los bits de mayor orden del registro de salida, junto con el ajuste (offset) de 12 bits, el cual se copia sin modificaciones de la direccin virtual de entrada. Juntos forman una direccin fsica de 15 bits. El registro de salida se coloca entonces en el bus de la memoria como la direccin en la memoria fsica. En teora, la asociacin de las direcciones virtuales con las fsicas se efecta segn lo descrito. El nmero de pgina virtual se divide en un nmero de pgina virtual (los bits superiores) y un ajuste (los bits inferiores). El nmero de pgina virtual se utiliza como un ndice en la tabla de pginas para encontrar la entrada de esa pgina virtual. El nmero de marco (si existe) se determina a partir de la tabla de pginas. El nmero de marco se asocia al extremo superior del ajuste y reemplaza al nmero de pgina virtual para formar una direccin fsica que se puede enviar a la memoria. La finalidad de la tabla de pginas es asociar las pginas virtuales con los marcos. En trminos matemticos, la tabla de pginas es una funcin, cuyo argumento es el nmero

de pgina virtual y como resultado el nmero del marco fsico. Mediante el resultado de esta funcin, se puede reemplazar el campo de la pgina virtual de una direccin virtual por un campo de marco, lo que produce una direccin en la memoria fsica. Sin embargo hay que enfrentar dos aspectos fundamentales: La tabla de pginas puede ser demasiado grande. La asociacin debe ser rpida. El primer punto proviene del hecho de que las computadoras modernas utilizan direcciones virtuales de al menos 32 bits. Por ejemplo, si el tamao de pgina es de 4K, un hueco de direcciones de 32 bits tiene un milln de pginas; en el caso de un hueco de direcciones de 64 bits, se tendra ms informacin de la que uno quisiera contemplar. El segundo punto es consecuencia del hecho de que la asociacin virtual fsica debe hacerse en cada referencia a la memoria. Una instruccin comn tiene una palabra de instruccin y tambin un operando de memoria. Entonces es necesario hacer una, dos o ms referencias a la tabla de pginas por cada instruccin. Caractersticas de la paginacin: El espacio de direcciones lgico de un proceso puede ser no contiguo. Se divide la memoria fsica en bloques de tamao fijo llamados marcos. Se divide la memoria en bloques de tamao llamados pginas. Se mantiene informacin en los marcos libres. Para correr un programa de n paginas de tamao, se necesitan encontrar n marcos y cargar el programa. Se establece una tabla de pginas para trasladar las direcciones lgicas a fsicas. Se produce fragmentacin interna. Ventajas de la paginacin: Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud. No es necesario que las paginas estn contiguas en memoria, por lo que no se necesitan procesos de compactacin cuando existen marcos de paginas libres dispersos en la memoria.

Es fcil controlar todas las pginas, ya que tienen el mismo tamao. El mecanismo de traduccin de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente al usuario. Se libera al programador de la restriccin de programar para un tamao fsico de memoria, con lo que s e aumenta su productividad. Se puede programar en funcin de una memoria mucho ms grande a la existente. Se elimina el problema de fragmentacin externa. Desventajas de la paginacin: El costo de hardware y software se incrementa, por la nueva informacin que debe manejarse y el mecanismo de traduccin de direcciones necesario. Se consumen muchos ms recursos de memoria, tiempo en el CPU para su implantacin. Se deben reservar reas de memoria para las PMT de los procesos. Al no ser fijo el tamao de estas, se crea un problema semejante al de los programas (cmo asignar un tamao ptimo sin desperdicio de memoria). Aparece el problema de fragmentacin interna. As, si se requieren 5K para un programa, pero las pginas son de 4K, debern asignrseles 2 pginas (8k), con lo que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta forma puede ser mayor que el de varias pginas, pero no podr ser utilizado. Debe asignarse un tamao promedio a las pginas, evitando que si son muy pequeas, se necesiten tablas BMT y PMT muy grandes, y si son muy grandes, se incremente el grado de fragmentacin interna. Traduccin de Direcciones: La direccin generada por la CPU se divide en: Nmero de pgina: Utilizado como ndice en la tabla de pginas que contiene la direccin base de cada pgina en la memoria fsica. Offset de la pgina: Combinado con la direccin base define la direccin fsica que ser enviada a la unidad de memoria. Segmentacin. Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su divisin lgica, llevndose a cabo una agrupacin lgica de la informacin en bloques

de tamao variable denominados segmentos. Cada uno de ellos tienen informacin lgica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una coleccin de segmentos, que generalmente reflejan la divisin lgica del programa. La segmentacin permite alcanzar los siguientes objetivos: Modularidad de programas: Cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa. Estructuras de datos de largo variable: Donde cada estructura tiene su propio tamao y este puede variar. Proteccin: Se pueden proteger los mdulos del segmento contra accesos no autorizados. Comparticin: Dos o ms procesos pueden ser un mismo segmento, bajo reglas de proteccin; aunque no sean propietarios de los mismos. Enlace dinmico entre segmentos: Puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecern slo cuando sea necesario. Ventajas de la segmentacin: El esquema de segmentacin ofrece las siguientes ventajas: El programador puede conocer las unidades lgicas de su programa, dndoles un tratamiento particular. Es posible compilar mdulos separados como segmentos el enlace entre los segmentos puede suponer hasta cuando se haga una referencia entre segmentos. Debido a que es posible separar los mdulos, se hace ms fcil la modificacin de los mismos. Cambios dentro de un modulo no afecta al resto de los mdulos. Es fcil el compartir segmentos. Es posible que los segmentos crezcan dinmicamente segn las necesidades del programa en ejecucin Existe la posibilidad de definir segmentos que aun no existan. As, no se asignar memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, seran los arreglos cuya dimensin no se conoce hasta tanto no se comienza a

ejecutar el programa. En algunos casos, incluso podra retardar la asignacin de memoria hasta el momento en el cul se referencia el arreglo u otra estructura de datos por primera vez. Desventajas de la segmentacin: Hay un incremento en los costos de hardware y de software para llevar a cabo la implantacin, as como un mayor consumo de recursos: memoria, tiempo de CPU, etc. Debido a que los segmentos tienen un tamao variable se pueden presentar problemas de fragmentacin externas, lo que puede ameritar un plan de reubicacin de segmentos en memoria principal. Se complica el manejo de memoria virtual, ya que los discos almacenan la informacin en bloques de tamaos fijos, mientras los segmentos son de tamao variable. Esto hace necesaria la existencia de mecanismos ms costosos que los existentes para paginacin. Al permitir que los segmentos varen de tamao, pueden ser necesarios planes de reubicacin a nivel de los discos, si los segmentos son devueltos a dicho dispositivo, lo que conlleva a nuevos costos. No se puede garantizar que al salir un segmento de la memoria, este pueda ser trado fcilmente de nuevo, ya que ser necesario encontrar nuevamente un rea de memoria libre ajustada a su tamao. La comparticin de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales da hardware y software.