You are on page 1of 25

INTRODUCCIN

La administracin de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. El sistema operativo es el encargado de administrar la memoria del sistema y compartirla entre distintos usuarios y/o aplicaciones. El RTS (Run Time System) de un lenguaje de programacin administra la memoria para cada programa en ejecucin. La ejecucin de un programa requiere que diversos elementos se almacenen en la memoria: o Cdigo del programa (instrucciones) o Datos Permanentes Temporales

o Direcciones para controlar de flujo del ejecucin del programa

Asignacin de Memoria Esttica y Dinmica


A la asignacin de memoria para algunos elementos fijos del programa que es controlada por el compilador se le llama asignacin de memoria esttica. A la asignacin y posible recuperacin de memoria durante la ejecucin de un programa y bajo su control, se le llama asignacin de memoria dinmica. Memoria Esttica Elementos que residen en memoria esttica: Cdigo del programa Las variables definidas en la seccin principal del programa, las cuales pueden solo cambiar su contenido no su tamao. Todas aquellas variables declaradas como estticas en otras clases o mdulos. Estos elementos se almacenan en direcciones fijas que son

relocalizadas dependiendo de la direccin en donde el cargador las coloque para su ejecucin. Mtodo comn de asignacin de memoria

Memoria Dinmica
Define el tamao del espacio de memoria necesario para un programa en tiempo de ejecucin. El tamao de los elementos puede cambiar durante la ejecucin del programa. Almacena todos los elementos definidos con la palabra new en un programa. Las variables dinmicas son aquellas que crecen de tamao o se reducen durante la ejecucin de un programa. Estas se almacenan en un espacio de memoria llamado heap. El heap se localiza en la regin de memoria que esta encima del stack. Algunos lenguajes de programacin permiten que el programador asigne y desasigne manualmente la memoria. Java utiliza un recolector de basura.

Uso del heap


Para usar el heap un programa requiere: Una o mas variables que refieran el lugar donde se encuentran las variables dinmicas. Un mtodo para obtener memoria (new) Una forma de asignar la direccin de memoria a alguna variable (identificador) Una forma para referirse a la variable dinmica

Ejemplo:

Liberacin de memoria
La memoria esttica se libera cuando el programa finaliza su ejecucin y La memoria dinmica se libera de dos formas: Explicita. El programador decide cuando un elemento debe ser eliminado de la memoria. El LP provee mecanismos para liberacin de memoria. Implcita. El sistema decide que elementos deben ser eliminados para recuperar el espacio de memoria que ocupan. El sistema cuenta con un recolector de basura.

TECNICAS DE MANEJO DE MEMORIA


FRAGMENTACION
La fragmentacin es la memoria que queda desperdiciada al usar los mtodos de gestin de memoria. Tanto en el primer ajuste con el mejor y el peor producen fragmentacin externa. La fragmentacin es generada cuando durante el remplazo 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: 1.- fragmentacin externa: existe el espacio total de memoria para satisfacer un requerimiento, pero no es contigua. 2.- 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 esto solo es posible si la relocalizacin es dinmica ejecucin. y se hace en tiempo de

Dado que una relacin se corresponde esencialmente con una tabla y la cuestin consiste en dividirla en fragmentos menores, inmediatamente surgen dos alternativas lgicas para llevar a cabo el proceso: la divisin horizontal y la divisin vertical. La divisin o fragmentacin horizontal trabaja sobre las tulpas, dividiendo la relacin en subrelaciones que contienen un subconjunto de las tuplas que alberga la primera. La fragmentacin vertical, en cambio, se basa en los atributos de la relacin para efectuar la divisin. Estos dos tipos de particin podran considerarse los fundamentales y bsicos. Sin embargo, existen otras alternativas. Fundamentalmente, se habla de fragmentacin mixta o hbrida cuando el proceso de particin hace uso de los dos tipos anteriores. La fragmentacin mixta puede llevarse a cabo de tres formas diferentes: desarrollando primero la fragmentacin vertical y, posteriormente, aplicando la particin horizontal sobre los fragmentos verticales (denominada particin VH), o aplicando primero una divisin horizontal para luego, sobre los fragmentos generados, desarrollar una fragmentacin vertical (llamada particin HV), o bien, de forma directa considerando la semntica de las transacciones. Otro enfoque distinto y relativamente nuevo , consiste en aplicar sobre una relacin, de forma simultnea y no secuencial, la fragmentacin horizontal y la fragmentacin vertical; en este caso, se generara una rejilla y los fragmentos formaran las celdas de esa rejilla, cada celda ser exactamente un fragmento vertical y un fragmento horizontal (ntese que en este caso el grado de fragmentacin alcanzado es mximo, y no por ello la descomposicin resultar ms eficiente). Volviendo a la figura 3, puede observarse como los casos C y D se basan en la mencionada generacin de la rejilla, con la diferencia que en el primero de ellos se produce una fusin, una desfragmentacin de las celdas, agrupndolas de la manera ms adecuada para obtener mayor rendimiento, ya que los fragmentos generados son muy pequeos. En el segundo caso se asignan las celdas a los sitios y luego se realiza una rigurosa optimizacin de cada sitio. El caso E sera aquel en el que se utiliza la fragmentacin VH o la fragmentacin HV.

Grado de fragmentacin. Cuando se va a fragmentar una base de datos deberamos sopesar qu grado de fragmentacin va a alcanzar, ya que ste ser un factor que influir notablemente en el desarrollo de la ejecucin de las consultas. El grado de fragmentacin puede variar desde una ausencia de la divisin, considerando a

las relaciones unidades de fragmentacin; o bien, fragmentar a un grado en el cada tupla o atributo forme un fragmento. Ante estos dos casos extremos, evidentemente se ha de buscar un compromiso intermedio, el cual debera establecerse sobre las caractersticas de las aplicaciones que hacen uso de la base de datos. Dichas caractersticas se podrn formalizar en una serie de parmetros. De acuerdo con sus valores, se podr establecer el grado de fragmentacin del banco de datos. Reglas de correccin de la fragmentacin. A continuacin se enuncian las tres reglas que se han de cumplir durante el proceso de fragmentacin, las cuales asegurarn la ausencia de cambios semnticos en la base de datos durante el proceso. 1. Complecin. Si una relacin R se descompone en una serie de fragmentos R1, R2, ..., Rn, cada elemento de datos que pueda encontrarse en R deber poder encontrarse en uno o varios fragmentos Ri. Esta propiedad extremadamente importante asegura que los datos de la relacin global se proyectan sobre los fragmentos sin prdida alguna. Tenga en cuenta que en el caso horizontal el elemento de datos, normalmente, es una tupla, mientras que en el caso vertical es un atributo. Reconstruccin. Si una relacin R se descompone en una serie de fragmentos R1, R2, ..., Rn, puede definirse una operador relacional tal que

El operador ser diferente dependiendo de las diferentes formas de fragmentacin. La reconstruccin de la relacin a partir de sus fragmentos asegura la preservacin de las restricciones definidas sobre los datos en forma de dependencias. 2. Disyuncin. Si una relacin R se descompone horizontalmente en una serie de fragmentos R1, R2, ..., Rn, y un elemento de datos di se encuentra en algn fragmento Rj, entonces no se encuentra en

otro fragmento Rk (k

j). Esta regla asegura que los fragmentos

horizontales sean disjuntos. Si una relacin R se descompone verticalmente, sus atributos primarios clave normalmente se repiten en todos sus fragmentos.

PAGINACION
El concepto de almacenamiento a un slo nivel, en el que la memoria secundaria aparece como una extensin de la memoria principal, se introdujo por primera vez en el ordenador Atlas de la Universidad de Manchester alrededor de 1960, y desde entonces ha ejercido una profunda influencia en el diseo de los ordenadores. El almacenamiento a un slo nivel puede llevarse a cabo mediante una tcnica llamada paginacin, segn la cual el espacio de direcciones virtuales se divide en pginas del mismo tamao (en el Atlas eran de 512 palabras). La memoria principal se divide tambin en marcos o pginas fsicas del mismo tamao. Estos marcos son compartidos entre los distintos procesos que haya en el sistema, de forma que en cualquier momento un proceso dado tendr unas cuantas pginas residentes en la memoria principal (sus pginas activas) y el resto en la memoria secundaria (sus pginas inactivas). El mecanismo de paginacin cumple dos funciones: Llevar a cabo la transformacin de una direccin virtual a fsica, o sea, la determinacin de la pgina a la que corresponde una determinada direccin de un programa, as como del marco, si lo hay, que ocupa esta pgina; Transferir, cuando haga falta, pginas de la memoria secundaria a la memoria principal, y de la memoria principal a la memoria secundaria cuando ya no sean necesarias. La primera funcin se aborda a continuacin, y se deja para el siguiente tema la segunda funcin.

Con el fin de determinar la pgina a la que hace referencia un programa, los bits de mayor peso de la direccin se interpretan como el nmero de pgina, y los bits de menor peso como el nmero de palabra dentro de esta pgina. De ah que si el tamao de pgina es 2n, los n bits finales de la direccin representarn el nmero de palabra y los bits restantes del principio el nmero de pgina. El nmero total de bits en la direccin es suficiente para direccionar la totalidad de la memoria virtual. As, por ejemplo, en el Atlas las direcciones de programa tenan 20 bits de longitud, proporcionando una memoria virtual de 220 palabras; el tamao de la pgina era de 512 palabras (2 9), y de ah que los 9 bits inferiores representasen el nmero de palabra y los 11 superiores representasen el nmero de la pgina. El nmero total de pginas en la memoria virtual era por tanto de 211 (en contraposicin a las 32 pginas fsicas de que dispona la memoria principal). Es de destacar el hecho de que la divisin de la direccin en nmero de palabra y nmero de pgina, es tarea del hardware, y es transparente al programador: por lo que a Jl concierne est programando en un espacio secuencial de direcciones muy grande. La transformacin de nmero de pgina y de palabra en la direccin fsica de memoria se realiza a travs de una tabla de pginas, cuyo p-simo elemento contiene la posicin p' del marco que contiene a la pgina p (la posibilidad de que la p-sima pgina no se encuentre en la memoria principal se abordar dentro de un momento). El nmero de palabra, w, se suma a p' para obtener la direccin buscada La transformacin de direcciones consiste, pues, en: f(a) = f(p, w) = p' + w donde la direccin de programa, a, el nmero de pgina, p, y el nmero de palabra, w, estn relacionados con el tamao de pgina Z a travs de: p = parte entera de (a/Z)

w = resto de (a/Z)

Memoria asociativa En el sistema que hemos descrito el tiempo necesario para cada referencia a memoria queda doblado, debido a la necesidad de acceder primero a la tabla de pginas. Una forma de evitarlo podra ser la de tener guardada la tabla de pginas en un conjunto de registros rpidos en lugar de sobre la memoria ordinaria. Sin embargo, el tamao de la tabla de pginas es proporcional al tamao del espacio de direcciones virtuales; de ah que el nmero de registros necesarios sea demasiado grande para que esta alternativa resulte econmicamente viable. La solucin al problema consiste en adoptar una tcnica diferente para acceder a las pginas activas. Esta tcnica representa el tener que incorporar a la mquina una memoria asociativa, que consistir en un pequeo conjunto de registros de direccin de pgina (PARs, del ingls page address registers), cada uno de los cuales contiene el nmero de pgina de una pgina activa. Los PARs presentan la propiedad de poderse buscar en ellos de forma simultnea el nmero de pgina asociado a una direccin de programa en particular.

Por ejemplo, en la figura 6.11, la direccin de programa 3243 se divide en el nmero de pgina 3 y el nmero de palabra 243 (vamos a suponer, por comodidad, que el tamao de la pgina sea 1000). El nmero de pgina se compara entonces de forma simultnea con el contenido de todos los PARs, y se encuentra que coincide con el valor del PAR 5. Ello indica que la pgina 3 ocupa en la actualidad la pgina fsica nmero 5, de forma que la direccin buscada ser la 5243. El empleo de un almacenamiento de tipo asociativo reduce el tiempo empleado en la transformacin de direcciones en un orden de magnitud con respecto al caso en el que se guardaba la tabla de pginas sobre memoria principal.

Pginas compartidas
Otra ventaja de la paginacin es la posibilidad de compartir programas de uso corriente. Esto es particularmente importante en un entorno de tiempo compartido. Consideremos un sistema que soporta 40 usuarios, cada uno de los cuales ejecuta un editor de textos. Si el editor de textos consta de 30K de cdigo y 5K de espacio para datos, necesitaramos

1400K para permitir a los 40 usuarios. No obstante, si el programa es reentrante, podra compartirse como se muestra en la figura 6.13. Aqu vemos un editor de tres pginas que es compartido por tres procesos. Cada proceso tiene su propia pgina de datos El cdigo reentrante (tambin llamado cdigo puro) es un cdigo no automodificable. Si el cdigo es reentrante, entonces nunca cambia durante la ejecucin. As, dos o ms procesos pueden ejecutar el mismo cdigo al mismo tiempo. Cada proceso, para su ejecucin, tiene su PCB y su memoria para mantener los datos. Por supuesto, los datos de todos esos procesos diferentes varan para cada uno de ellos. Tan slo hace falta mantener una copia del editor en la memoria fsica. Cada tabla de pginas de usuario-proceso hace referencia a la misma copia fsica del editor, pero las pginas de datos lo hacen a marcos diferentes. As, para permitir 40 usuarios, precisamos solamente una copia del editor, 30K, ms 40 copias del espacio de 5K por usuario. El espacio total requerido es ahora de 230K, en lugar de 1400K, un ahorro significativo.

Tabla de paginacin
Las tablas de paginacin o tablas de pginas son una parte integral del Sistema de Memoria Virtual en sistemas operativos, cuando se utiliza paginacin. Son usadas para realizar las traducciones de direcciones de memoria virtual (o lgica) a memoria real (o fsica) y en general el sistema operativo mantiene una por cada proceso corriendo en el sistema. En cada entrada de la tabla de paginacin (en ingls PTE, Page Table Entry) existe un bit de presencia, que est activado cuando la pgina se encuentra en memoria principal. Otro bit que puede encontrarse es el de modificado, que advierte que la pgina ha sido modificada desde que fue trada del disco, y por lo tanto deber guardarse si es elegida para abandonar la memoria principal; y el bit de accedido, usado en el algoritmo de reemplazo de pginas llamado Menos Usado Recientemente (LRU, least recently used). Tambin podran haber otros bits indicando los permisos que tiene el proceso sobre la pgina (leer, escribir, ejecutar).

Dado que las tablas de paginacin pueden ocupar un espacio considerable de la memoria principal, estas tambin podran estar sujetas a paginacin, lo que da lugar a una organizacin paginada de mltiples niveles (o tabla de pginas multinivel). En los sistemas con un tamao de direcciones muy grande ( 64 bits ), podra usarse una tabla de pginas invertida, la cual utiliza menos espacio, aunque puede aumentar el tiempo de bsqueda de la pgina. Las tablas son mantenidas por el sistema operativo y utilizadas por la Unidad de Gestin de Memoria (MMU) para realizar las traducciones. Para evitar un acceso a las tablas de paginacin, hay un dispositivo llamado Buffer de Traduccin Adelantada (TLB, Translation Lookaside Buffer), acelerando el proceso de traduccin. 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 (frames). 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 encontrara 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. Al no necesitarse cargar un programa completo en memoria para su ejecucin, se puede aumentar el nmero de programas

multiprogramndose. 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 consume mucho 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 fija el tamao de estas, se crea un problema semejante al de los programas (como asignar un tamao ptimo sin desperdicio de memoria, u "ovearhead" del procesador). Aparece el problema de fragmentacin interna. As, si se requieren 5K para un programa, pero las paginas 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 utilizados. 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.

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 permite 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.

Asignacin contigua: o La memoria principal normalmente se divide en dos particiones: o Sistema operativo residente, normalmente en la parte baja de memoria con los vectores de interrupcin. o Procesos de usuario en la parte alta. Asignacin de particin simple: o 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. o 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.

Segmentacin
La segmentacin permite al programador contemplar la memoria como si constara de varios espacios de direcciones o segmentos. Los segmentos pueden ser de distintos tamaos, incluso de forma dinmica. Las referencias a la memoria constan de una direccin de la forma (numero de segmento, desplazamiento). Esta organizacin ofrece al programador varias ventajas sobre un espacio de direcciones no segmentado:

1. Simplifica la gestin de estructuras de datos crecientes. Si el programador no conoce a priori cuan larga puede llegar a ser una estructura de datos determinada, es necesario suponerlo a menos que se permitan tamaos de segmentos dinmicos. Con memoria virtual segmentada, a la estructura de datos se le puede asignar a su propio segmento y el S.O expandir o reducir el segmento cuando se necesite.

2. Permite modificar y recopilar los programas independientemente, sin que sea necesario recopilar o volver a montar el conjunto de programas por completo. 3. Se presta a la comparacin entre procesos. Un programador puede situar un programa de utilidades o una tabla de datos en un segmento que puede ser referenciado por otros procesos. 4. Se presta a la proteccin. Puesto que un segmento puede ser construido para albergar un conjunto de procedimientos y datos bien definido, el programador o el administrador del sistema podrn asignar los permisos de acceso de la forma adecuada. Organizacin

En el estudio de la segmentacin simple, se llego a la conclusin de que cada proceso tiene su propia tabla de segmento y que, cuando todos los segmentos se encuentran en la memoria principal, la tabla de segmentos del proceso se crea y se carga en la memoria. Cada entrada de la tabla contiene la direccin

de comienzo del segmento correspondiente de la memoria principal, as como su longitud. La misma estructura se necesitara al hablar de un esquema de memoria virtual basado en la segmentacin donde las entradas de la tabla de segmentos pasan a ser ms complejas. Puesto que solo algunos de los segmentos de un proceso estarn en la memoria principal, se necesita un bit en cada entrada de la tabla de segmentos para indicar si el segmento correspondiente est presente en la memoria principal. Si el bit indica que el segmento est en la memoria, la entrada incluye tambin la direccin de comienzo y la longitud del segmento. Otro bit de control necesario en la entrada de la tabla de segmentos es un bit de modificacin que indique si el contenido del segmento correspondiente ha sido modificado desde que se cargo por ltima vez en la memoria principal. Si no ha habido cambios, no ser necesario escribir en el disco el segmento cuando llegue el momento de reemplazarlo en el espacio que ocupa actualmente. Segmentacin y Paginacin Aqu la segmentacin es usada para definir particiones lgicas de memoria orientadas al control de acceso y la paginacin es usada para manejar la localizacin de la memoria dentro de las particiones. El sistema MULTICS resolvi el problema de la fragmentacin externa mediante la "paginacin de los segmentos". * La solucin difiere de la segmentacin pura en que la entrada de la tabla de segmentos no contiene la direccin base del segmento, sino la direccin base de una tabla de pginas para ese segmento. Entonces podemos decir que gracias a la paginacin se elimina fragmentacin externa y se provecha eficientemente la memoria y gracias a la segmentacin, es ms visible al programador y da soporte para comparticin y proteccin. Direccin lgica: Desde el punto de vista del usuario est formada por:

Nro de segmento desplazamiento Desde el punto de vista de la mquina est formada por:

Nrosegmento |Nro pgina |desplazamiento Estructuras de datos utilizadas: -Cada proceso -Una tabla de segmentos

-Una tabla de pginas por segmento

ENLACE A LA SIMULACIN DE SEGMENTACIN PAGINADA

Tanto la paginacin como la segmentacin tienen sus ventajas y desventajas. Tambin es posible combinar estos dos esquemas para mejorar ambos. Veamos como ejemplo el esquema del ordenador GE 645 con el sistema operativo Multics. Las direcciones lgicas estaban formadas a partir de un nmero de segmento de 18 bits y un desplazamiento de 16 bits. Aunque este esquema crea un espacio de direcciones correspondiente a una direccin de 34 bits, la tabla de segmentos tiene un tamao tolerable, puesto que el nmero variable de segmentos conduce naturalmente al uso de un Registro de Longitud de Tabla de Segmentos. Necesitamos tan solo el mismo nmero de entradas en la tabla de segmentos que segmentos; no tenemos por qu tener entradas vacas en la tabla de segmentos. No obstante, con segmentos de 64 K-palabras, el tamao medio de segmento podra resultar bastante grande y la fragmentacin externa constituir un problema. Incluso si la fragmentacin externa no es significativa, el tiempo de bsqueda para asignar un segmento, utilizando un primer o mejor ajuste, podra ser grande. De esta manera se

podra desperdiciar memoria a causa de la fragmentacin externa o bien desperdiciar tiempo debido a la bsqueda larga, o bien ambas cosas. La solucin adoptada fue paginar los segmentos. La paginacin elimina la fragmentacin interna y convierte en trivial el problema de la asignacin: cualquier marco vaco puede utilizarse para una pgina. Obsrvese que la diferencia entre esta solucin y la segmentacin pura es que la entrada en la tabla de segmentos no contiene la direccin de la base del segmento, sino la direccin de la base de una tabla de pginas para ese segmento. El desplazamiento del segmento se fragmenta entonces en un nmero de pgina de 6 bits y un desplazamiento de pgina de 10 bits. El nmero de pgina indexa en la tabla de pginas para dar el nmero de marco. Finalmente, el nmero de marco se combina con el desplazamiento de pgina para formar la direccin fsica.

Fig.: Acceso a un sistema de memoria Segmentado Paginado. Ahora debemos tener una tabla de pginas independiente para cada segmento. No obstante, puesto que cada segmento tiene una longitud limitada por su entrada en la tabla de segmentos, la tabla de pginas no tiene por qu tener su tamao mximo. Slo precisa tantas entradas como se necesiten realmente. Adems, generalmente la ltima pgina de cada segmento no estar

totalmente llena. De este modo tendremos, por trmino medio, media pgina de fragmentacin interna por segmento. Consecuentemente, aunque hemos eliminado la fragmentacin externa, hemos introducido fragmentacin interna e incrementado la sobrecarga de espacio de la tabla. A decir verdad, incluso la visin de paginacin segmentada de Multics que acabamos de presentar es simplista. Puesto que el nmero de segmento es una cantidad de 18 bits, podramos tener 262144 segmentos, con lo que precisaramos una tabla de segmentos muy larga. Para simplificar este problema, Multics pagina la tabla de segmentos. De esta manera, en general, una direccin en Multics utiliza un nmero de segmento para definir un ndice de pgina en una tabla de pginas para la tabla de segmentos. A partir de esta entrada, localiza la parte de la tabla de segmentos que tiene la entrada para ese segmento. La entrada en la tabla de segmentos apunta a una tabla de pginas para ese segmento, que especifica el marco que contiene la palabra deseada. PROGRAMA: APLICANDO LO QUE ES MANEJO DE MEMORIA public class menu { int tn=0,n=0,p=0,u=0,m1=0,m2=0; public void todo() { tn=Integer.parseInt(JOptionPane.showInputDialog(null,"dar numero total")); if(tn%2==0) { m2=tn/2; m1=tn/2-1; } else

m1=tn/2; for(int i=0;i<tn;i++) { n=Integer.parseInt(JOptionPane.showInputDialog(null,"introduce numero")); if(i==0) { p=n; } if(i==tn-1) { u=n; } if((tn%2==0)&(i==m1)) { m1=n; } if((tn%2==0)&(i==m2)) { m2=n; } if((tn%2==1)&(i==m1)) { m1=n; } }

JOptionPane.showMessageDialog(null,m1+m2); } }

You might also like