Sunteți pe pagina 1din 13

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO ESCUELA DE INGENIRIA ELECTRONICA EN TELECOMUNICACIONES Y REDES FACULTAD DE INFORMATICA Y ELECTRONICA

DANNY TIERRA 440

TERCERO A

TEMA: Segmentacin, Segmentacin Pura y Sistemas Combinados.

OBJETIVOS GENERALES

Realizar una investigacin apropiada sobre la segmentacin para aprovechar de la mejor manera la memoria ya que es un recurso muy valioso.

OBJETIVOS ESPECFICOS

Investigar los beneficios que nos ofrece la segmentacin. Conocer las diferencias que existen entre la segmentacin y un sistema combinado.

INTRODUCCIN La paginacin consiste en considerar el espacio de direcciones lgicas de cada proceso como un conjunto de bloques de tamao consistente llamados pginas. La segmentacin es diferente a la paginacin debido a que el tamao de pgina es fijo mientras el de los segmentos no. Despus de cierto tiempo de ejecucin del sistema, la memoria estar dividida en trozos, unos con segmentos y otros con agujeros. Este fenmeno se llama cuadriculacin o fragmentacin externa, La misma que desperdicia memoria en los agujeros. Los sistemas combinados son los ms utilizados, la mayora de los sistemas operativos modernos implantan esquemas combinados, es decir, combinan la paginacin y la segmentacin. La idea de combinar estos esquemas se debe a que

de esta forma se aprovechan los beneficios que ofrecen la paginacin y la segmentacin. MARCO TERICO PAGINACIN La paginacin consiste en considerar el espacio de direcciones lgicas de cada proceso como un conjunto de bloques de tamao consistente llamados pginas. Cada direccin lgica manejada para un proceso estar conformada por un par de valores [pagina: desplazamiento]. La memoria fsica se administra implementando bloques de tamao consistente denominados 'marcos'. Obviamente el tamao de un 'marco' debe ser igual al tamao de una pgina. Por lo general el tamao designado para los marcos y pginas es pequeo. SEGMENTACIN La segmentacin es un esquema de administracin de la memoria, este mtodo consiste en la asignacin de bloques de memoria de tamao variable. Un espacio de direcciones lgicas es una coleccin de segmentos. Cada segmento tiene un nombre y una longitud. Las direcciones especifican tanto el nombre del segmento como el desplazamiento dentro del segmento. Por lo tanto, el usuario especifica cada direccin mediante dos cantidades: un nombre de segmento y un desplazamiento. Por simplicidad de implementacin, los segmentos estn numerados y se referencian por un nmero de segmento en lugar de por un nombre. Normalmente el programa de usuario se ensambla o compila, y el ensamblador o compilador construye automticamente segmentos que reflejan el programa de entrada. Un compilador de Pascal podra crear segmentos separados para (1) las variables globales, (2) la pila de llamada de procedimientos, para almacenar parmetros y devolver direcciones, (3) el cdigo de cada procedimiento o funcin, y (4) las variables locales de cada procedimiento y funcin. El cargador tomara todos esos

segmentos y les asignara nmeros de segmento. La combinacin o suma de la direccin de segmento y la de desplazamiento generan la direccin de memoria absoluta a accesar. VALIDACION DEL DIRECCIONAMIENTO Dado que en cada proceso se manejan direcciones lgicas, el sistema operativo debe obtener una direccin lgica. El sistema operativo debe tambin asegurarse de que cada direccin lgica est dentro del rango de direcciones empleado por el proceso. Para esto el sistema operativo implementa la tabla de segmentos como un arreglo de registros base lmite. Hardware Aunque el usuario ahora puede referenciar los objetos del programa por medio de una direccin de dos dimensiones, la memoria fsica real es todava, por supuesto, una secuencia unidimensional de palabras. La transformacin se efecta por medio de una tabla de segmentos. Una direccin lgica consta de dos partes: un nmero de segmento s y un desplazamiento dentro de ese segmento, d. El nmero de segmento se utiliza como ndice en la tabla de segmentos. Cada entrada de la tabla tiene una base de segmento y un lmite. El desplazamiento d de la direccin lgica tiene que estar comprendido entre 0 y el lmite de segmento. En caso contrario se produce una excepcin al sistema operativo. Si este desplazamiento es legal, se aade a la base para producir la direccin de la tabla deseada en la memoria fsica. La tabla de segmentos es as esencialmente una matriz de pares registros base/lmite.

TABLA DE SEGMENTOS DEL PROCESADOR Para traducir las direcciones virtuales a direcciones reales, el procesador posee una tabla de segmentos con 4 filas. Cada una de estas filas describe uno de los 4 segmentos del programa en ejecucin. Para cada segmento se indica:

Base: Direccin virtual en donde comienza (incluyendo esta direccin). Lmite: Direccin virtual en donde finaliza (excluyendo esta direccin). Desplazamiento: Desplazamiento que hay que sumar a una direccin virtual para obtener su direccin real. Se calcula como la direccin de comienzo del segmento en la memoria real menos la direccin virtual de inicio del segmento. Atributos del segmento: lectura/escritura, solo lectura e invisible (accesible solo por el ncleo).

TRADUCCIN DE DIRECCIONES VIRTUALES En cada acceso a la memoria un proceso especifica una direccin virtual. El hardware del procesador traduce esta direccin virtual a una direccin real utilizando un conjunto de registros del procesador que almacenan la tabla de segmentos del proceso en ejecucin. Esta traduccin se lleva a cabo de la siguiente forma: el hardware del procesador compara la direccin virtual especificada con la base y el lmite de cada uno de los segmentos. El ncleo del sistema operativo se encarga de colocar valores apropiados en la tabla de segmentos, y lo hace de tal forma que una direccin virtual jams pertenece a dos segmentos. Sin embargo, es importante hacer notar que una misma direccin real s puede pertenecer a dos segmentos asociados a procesos distintos. ADMINISTRACIN DE LA MEMORIA DE SEGMENTOS El ncleo crea y destruye segmentos cuando se crea o termina un proceso o cuando se carga un nuevo binario (llamadas al sistema fork, exit y exec en Unix). El ncleo administra la memoria para estos segmentos en un rea de la memoria denominada heap (montn). Esta estructura es similar al heap que utiliza malloc y free para administrar la memoria de un proceso. Por conveniencia, el ncleo separa en dos heaps independientes la administracin de la memoria para segmentos y la administracin de la memoria para sus propias estructuras de datos como los descriptores de proceso, colas de scheduling, colas de E/S, etc.

En un heap hay trozos de memoria ocupada y trozos libres. Los trozos libres se enlazan en una lista que es recorrida, de acuerdo a alguna estrategia, cuando se solicita un nuevo trozo de memoria. Cuando se libera un trozo, se agrega a la lista. Esto hace que el heap se fragmente progresivamente, es decir se convierte en un sin nmero de trozos libres de pequeo tamao. Para disminuir la fragmentacin, al liberar un trozo se revisan los trozos adyacentes en el heap para ver si estn libres. Si alguno de ellos est libre (o los dos), entonces los trozos se concatenan. Las estrategias ms conocidas para realizar la bsqueda en la lista de trozos libres son:

First-fit: Se recorre secuencialmente la lista de trozos libres hasta encontrar el primer trozo que sea de tamao mayor o igual al tamao del trozo solicitado. El trozo encontrado se parte en dos para entregar slo el tamao solicitado. Best-fit: Se recorre toda lista para encontrar el trozo que se acerque ms en tamao al trozo solicitado. El mejor trozo se parte en dos como en First-fit. Worst-fit: Se recorre toda la lista para encontrar el trozo ms grande. Este trozo se parte en dos como First-fit. Solo existe por completitud.

La estrategia best-fit tiene mal desempeo debido a que al partir el mejor trozo, el trozo que queda libre es demasiado pequeo. Ser muy difcil que se pueda entregar ese pequeo trozo en un pedido subsecuente. Esto hace que la lista de trozos libres se va poblando de trozos demasiado pequeos que aumentan el costo de recorrer la lista. De estas estrategias, first-fit es la que mejor funciona, pero organizando los trozos libres en una lista circular. La idea es evitar que se busque siempre a partir del mismo trozo, puesto que esto tiende a poblar el comienzo de la lista con trozos pequeos, alargando el tiempo de bsqueda. En esta variante, al hacer una bsqueda se memoriza el ltimo trozo visitado en la lista circular. Al hacer una nueva bsqueda se comienza por el trozo siguiente al trozo memorizado. SEGMENTACION MS-DOS Si un programa trata de asignar un bloque de memoria de cierto tamao, MS-DOS busca un bloque apropiado, si lo encuentra, se modifica para que pertenezca al proceso solicitado. Si el bloque es demasiado grande, MS-DOS divide en un bloque asignado y un nuevo bloque libre. Cuando un programa libera un bloque de memoria, MS-DOS lo modifica para indicar que est disponible. Cuando un programa reduce la cantidad de memoria que necesita, MS-DOS crea un nuevo bloque de control de memoria para la memoria liberada.

TAMAO MAXIMO DE SEGMENTO En realidad no solo se ampliaron los registros de 32 bits, sino que tambin la longitud mxima del segmento con lo que un segmento puede ocupar hasta 4 GB (232). TIPOS DE SEGMENTOS Segmentos de Datos: En el solo se puede leer y escribir, pero no se puede ejecutar cdigo de programa. Segmento de Cdigo: A diferencia del anterior, en este si se puede ejecutar cdigo pero no puede leer ni escribir. Segmento del Sistema: Describe diferentes tipos de segmentos que todos ellos sirven para la gestin del modo protegido.

SEGMENTACIN PAGINADA AYUDA AL MEMORIA

PROCESO DE

GESTIN DE

Puede hacerse una combinacin de segmentacin y paginacin para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, este puede dividirse en pginas. Cada segmento puede ser descrito por su propia tabla de pginas. Los segmentos son usualmente mltiplos de pginas en tamao, y no es necesario que todas las pginas se encuentren en memoria principal a la vez; adems las pginas de un mismo segmento, aunque se encuentren contiguas en memoria virtual; no necesitan estarlo en memoria real. 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 (accin de registrar ordenadamente informacin para elaborar su ndice) 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.

SEGMENTACIN PURA La segmentacin se aprovecha del hecho de que los programas se dividen en partes lgicas, como son las partes de datos, de cdigo y de pila (stack). La segmentacin asigna particiones de memoria a cada segmento de un programa y busca como objetivos el hacer fcil el compartir segmentos y el intercambio entre memoria y los medios de almacenamiento secundario. La direccin virtual se compone de un nmero de segmento (s) y un desplazamiento (d) para ubicar un byte (o palabra) dentro de dicho segmento. Es importante que el desplazamiento no sea mayor que el tamao del segmento, lo cual se controla simplemente checando que ese valor sea mayor que la direccin del inicio del segmento y menor que el inicio sumado al tamao. Una vez dada una direccin virtual v=( s,d ), se realiza la operacin b + s para hallar el registro que contiene la direccin de inicio del segmento en la memoria real, denotado por s'. Ya conociendo la direccin de inicio en memoria real s' slo resta encontrar el byte o palabra deseada, lo cual se hace sumndole a s' el valor del desplazamiento, de modo que la direccin real r = s' + d.

Cada entrada en la tabla de segmentos tiene un formato similar al mostrado en la figura. Se tienen campos que indican la longitud, los permisos, la presencia o ausencia y direccin de inicio en memoria real del segmento.

Segn amplios experimentos, sugieren que un tamao de pginas de 1024 bytes generalmente ofrece un desempeo muy aceptable. Intuitivamente parecera que el tener pginas del mayor tamao posible hara que el desempeo fuera ptimo pero no es as, a menos que la pgina fuera del tamao del proceso total. No es as con tamaos grandes de pgina menores que el proceso, ya que cuando se trae a memoria principal una pgina por motivo de un solo byte o palabra, se estn trayendo muchsimos ms bytes de los deseados. La dependencia entre el nmero de fallas respecto al tamao de las pginas se muestra en la figura.

Un hecho notable en los sistemas que manejan paginacin es que cuando el proceso comienza a ejecutarse ocurren un gran nmero de fallos de pgina, porque es cuando est referenciando muchas direcciones nuevas por vez primera, despus

el sistema se estabiliza, conforme el nmero de marcos asignados se acerca al tamao del conjunto de trabajo.

En la figura anterior se muestra la relacin entre el tiempo promedio entre fallas de pgina y el nmero de marcos de pgina asignados a un proceso. All se ve que el tiempo entre fallas decrece conforme se le asignan ms pginas al proceso. La grfica se curva en un punto, el cual corresponde a que el proceso tiene un nmero de pginas asignado igual al que necesita para almacenar su conjunto de trabajo. Despus de eso, el asignarle a un proceso ms pginas que las de su conjunto de trabajo ya no conviene, ya que el tiempo promedio entre fallas permanece sin mucha mejora. Un aspecto curioso de aumentar el nmero de pginas a un proceso cuando el algoritmo de seleccin de pginas candidatas a irse a disco es la primera en entrar primera en salir es la llamada `anomala FIFO' a `anomala de Belady'. SMT (tabla de mapas de segmentos): Una para cada proceso. En cada entrada de la SMT se almacena la informacin descrita bajo segmentacin pura, pero en el campo de direccin se indicara la direccin de la PMT (tabla de mapas de pginas) que describe a las diferentes pginas de cada segmento.

PMT (tabla de mapas de pginas): Una por segmento; cada entrada de la PMT describe una pgina de un segmento; en la forma que se presento la pagina pura. TBM (tabla de bloques de memoria): Para controlar asignacin de pginas por parte del sistema operativo. JT (tabla de Jobs): Que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria. En el caso, de que un segmento sea de tamao inferior o igual al de una pagina, no se necesita tener la correspondiente PMT puede arreglarse un bit adicional (S) a cada entrada de la SMT, que indicara si el segmento esta paginado o no.

SISTEMAS COMBINADOS La paginacin y la segmentacin puras son mtodos de manejo de memoria bastante efectivos, aunque la mayora de los sistemas operativos modernos implantan esquemas combinados, es decir, combinan la paginacin y la segmentacin. La idea de combinar estos esquemas se debe a que de esta forma se aprovechan los conceptos de la divisin lgica de los programas con la granularidad de las pginas. De esta forma, un proceso estar repartido en la memoria real en pequeas unidades o pginas, cuya liga son los segmentos. Tambin es factible as el compartir segmentos a medida que las partes necesitadas de los mismos se van referenciando las pginas. Para comprender este esquema, nuevamente se ver cmo se traduce una direccin virtual en una localidad de memoria real. Para la paginacin y segmentacin puras se puede decir que el direccionamiento es `bidimensional' porque se necesitan dos valores para hallar la direccin real. Para el caso combinado, se puede decir que se tiene un direccionamiento `tridimensional'. El sistema debe contar con una tabla de procesos (TP). Por cada rengln de esa tabla se tiene un nmero de proceso y una direccin a una tabla de segmentos. Es decir, cada proceso tiene una tabla de segmentos. Cuando un proceso hace alguna referencia a memoria, se consulta TP para encontrar la tabla de segmentos de ese proceso. En cada tabla de segmentos de proceso (TSP)

se tienen los nmeros de los segmentos que componen a ese proceso. Por cada segmento se tiene una direccin a una tabla de pginas. Cada tabla de pginas tiene las direcciones de las pginas que componen a un solo segmento. EJEMPLO DE SEGMENTACIN COMBINADA: El segmento `A' puede estar formado por las pginas reales `a','b','c','p' y `x'. El segmento `B' puede estar compuesto de las pginas `f','g','j','w' y `z'. Para traducir una direccin virtual v=(s,p,d) donde `s' es el segmento, `p' es la pgina y `d' el desplazamiento en la pgina se hace lo siguiente. Primero se ubica de qu proceso es el segmento y se localiza la tabla de segmentos de ese proceso en la TP. Con `s' como ndice se encuentra un rengln (registro) en la tabla de segmentos de ese proceso y en ese rengln est la direccin de la tabla de pginas que componen al segmento. Una vez en la tabla de pginas se usa el valor `p' como ndice para encontrar la direccin de la pgina en memoria real. Una vez en esa direccin de memoria real se encuentra el byte (o palabra) requerido por medio del valor de `d'.

Ahora, en este esquema pueden haber dos tipos de fallos: por fallo de pgina y por fallo de segmento. Cuando se hace referencia a una direccin y el segmento que la contiene no est en RAM (aunque sea parcialmente), se provoca un fallo por falta de segmento [Deitel93] y lo que se hace es traerlo del medio de almacenamiento secundario y crearle una tabla de pginas. Una vez cargado el segmento se necesita localizar la pgina correspondiente, pero sta no existe en RAM, por lo cual se provoca un fallo de pgina y se carga de disco y finalmente se puede ya traer la direccin deseada por medio del desplazamiento de la direccin virtual.

La eficiencia de la traduccin de direcciones tanto en paginacin pura, segmentacin pura y esquemas combinados se mejora usando memorias asociativas para las tablas de pginas y segmentos, as como memorias cache para guardar los mapeos ms solicitados. Otro aspecto importante es la estrategia para cargar pginas (o segmentos) a la memoria RAM. Se usan ms comnmente dos estrategias: cargado de pginas por demanda y cargado de pginas anticipada. La estrategia de cargado por demanda consiste en que las pginas solamente son llevadas a RAM si fueron solicitadas, es decir, si se hizo referencia a una direccin que cae dentro de ellas. La carga anticipada consiste en tratar de adivinar qu pginas sern solicitadas en el futuro inmediato y cargarlas de antemano, para que cuando se pidan ya no ocurran fallos de pgina. Ese `adivinar' puede ser que se aproveche el fenmeno de localidad y que las pginas que se cargan por anticipado sean aquellas que contienen direcciones contiguas a la direccin que se acaba de referenciar. De hecho, el sistema operativo VMS usa un esquema combinado para cargar pginas: Cuando se hace referencia a una direccin cuya pgina no est en RAM, se provoca un fallo de pgina y se carga esa pgina junto con algunas pginas adyacentes. En este caso la pgina solicitada se carg por demanda y las adyacentes se cargaron por anticipacin. CONCLUSIONES Con esta investigacin se concluye que tanto la segmentacin y la paginacin trabajan con bloques. Su diferencia radica en que la paginacin se trabaja con bloques de tamao fijo, las mismas que se conforman por un par de valores que son la pgina y el desplazamiento. Por su parte la segmentacin no presenta bloques de tamaos fijos, a los que llamamos segmentos que presentan nombre y longitud. En los sistemas combinados empleamos tanto la segmentacin como la paginacin para aprovechar los conceptos de divisin lgica de los programas con granualidad de las pginas.

RECOMENDACIONES El programador puede conocer las unidades lgicas de su programa y puede darle un tratamiento particular pero si desconoce podra desconfigurarlo. Se debe tener mucho cuidado con la segmentacin debido a que se pueden presentar problemas de fragmentacin externa, lo que puede ameritar que el usuario domine el tema.

BIBLIOGRAFA http://wwwdi.ujaen.es/~lina/TemasSO/ADMINISTRACIONDELAMEMORIA/5. 2Segmentacion.htm

http://www.buenastareas.com/ensayos/Iunidad-i-Administracion-DeMemoria/2245732.html http://www.buenastareas.com/ensayos/Paginacion-De-Memoria/358712.html http://www.buenastareas.com/ensayos/Segmentacion-De-Memoria-yPaginacion-De/1884300.html http://users.dcc.uchile.cl/~jpiquer/Docencia/SO/aps/node28.html http://1984.lsi.us.es/wiki-ssoo/index.php/Segmentacion http://es.scribd.com/doc/2568895/Segmentacion-de-Memoria http://villaseca.files.wordpress.com/2009/10/so-ayudantia-7-memory.pptx http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r60447.PPT http://www.elprisma.com/apuntes/ingenieria_de_sistemas/sistemasoperativos fundamentos/default3.asp http://vicentehdez.blogspot.com/2010/11/46-segmentacion.html https://wikos.wikispaces.com/Segmentaci%C3%B3n+paginada http://wwwdi.ujaen.es/~lina/TemasSO/ADMINISTRACIONDELAMEMORIA/5. 3SegmentacionPaginada.htm

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