Mientras que la paginacin es transparente para el programador, y le
proporciona un espacio mayor de direcciones, la segmentacin es normalmente visible para el programador, y proporciona una forma lgica de organizar los programas y los datos, y asociarle los privilegios y atributos de proteccin. La segmentacin permite que el programador vea la memoria constituida por mltiples espacios de direcciones o segmentos. Los segmentos tienen un tamao variable, dinmico. Usualmente, el programador o el sistema operativo asignar programas y datos a segmentos distintos. Puede haber segmentos de programa distintos para varios tipos de programas, y tambin distintos segmentos de datos. Se pueden asignar a cada segmento derechos de acceso y uso. Las direcciones virtuales estarn constituidas en este caso por un nmero de segmento (NS) y un desplazamiento dentro del segmento (DP). El proceso de traduccin de direccin virtual a fsica es anlogo al de la memoria virtual paginada, con la diferencia que ahora tenemos una tabla de segmentos (TS) cuyas entradas (denominadas tambin descriptores de segmento) contienen, adems de los bits de control y la direccin real del segmento, la longitud L del mismo, ya que los segmentos tienen longitud variable. En la siguiente figura hemos representado esquemticamente el proceso de traduccin.
Esta organizacin tiene ciertas ventajas para el programador, frente a un
espacio de direcciones no segmentado: Simplifica la gestin de estructuras variables de datos. Si el programador no conoce a priori el tamao que puede llegar a tener una estructura de datos particular, no es necesario que lo presuponga. A la
estructura de datos se le asigna su propio segmento, y el sistema
operativo lo expandir o lo reducir segn sea necesario. Permite modificar los programas y recompilarlos independientemente, sin que sea necesario volver a enlazar y cargar el conjunto entero de programas. De nuevo, esto se consigue utilizando varios segmentos. Permite que varios procesos compartan segmentos. Un programador puede situar un programa correspondiente a una utilidad o una tabla de datos de inters en un segmento, que puede ser direccionado por otros procesos. Se facilita la proteccin. Puesto que un segmento se construye para contener un conjunto de programas o datos bien definido, el programador o el administrador del sistema puede asignar privilegios de acceso de forma adecuada. Desventajas 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. Estas desventajas tratan de ser minimizadas, bajo la tcnica conocida como Segmentacin paginada.
3.1. Polticas segmentadas
de
ubicacin
(placement)
para
memorias
Se identifican los huecos de memoria principal por su tamao (longitud)
y direccin inicial, y se renen en una lista. La poltica de ubicacin determinar la ordenacin previa de la lista. Una vez que se decide el hueco donde se ubica el segmento, se actualiza la lista de huecos con el que se acaba de crear (a no ser que el segmento mida exactamente igual que el hueco de memoria utilizado). Si no se puede encontrar un hueco apropiado para el segmento, interviene la poltica de sustitucin. Las tres polticas de ubicacin de segmentos ms utilizadas son las siguientes: 3.1.1. Mejor ajuste (best fit) La lista de huecos se mantiene ordenada en orden creciente de tamao y se ubica el segmento en el primer hueco con capacidad suficiente para albergarlo. 3.1.2. Peor ajuste (worst fit) La lista de huecos se mantiene ordenada en orden decreciente de tamao y se ubica el segmento en el primer hueco con capacidad suficiente para albergarlo. 3.1.3. Primer ajuste (first fit) La lista de huecos se mantiene ordenada en orden creciente de las direcciones iniciales de los huecos, y se ubica el segmento en el primer hueco con capacidad suficiente para albergarlo. Con esta poltica, cuando transcurre un cierto tiempo, se acumulan un nmero elevado de huecos pequeos prximos a la cabeza de la lista, penalizando las bsquedas. Esto se puede evitar adelantando cclicamente, despus de cada bsqueda un hueco la posicin inicial de la lista.
Memoria con segmentos paginados
La segmentacin paginada ayuda al proceso de gestin de memoria puede hacerse una combinacin de segmentacin y paginacin para obtener las ventajas de ambas. 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 segmentacin paginada tiene su propio esquema las pginas de
almacenamiento virtual, que son contiguas en este almacenamiento, no necesitan ser contiguas en el almacenamiento real.
La segmentacin presenta una serie de propiedades ventajosas para el
programador, sin embargo, la paginacin proporciona una forma ms eficiente de gestionar el espacio de memoria. Para combinar las ventajas de ambas, algunos sistemas permiten una combinacin de ambas, es decir, un sistema virtual con segmentos paginados. El mecanismo de traduccin de DVs a DFs no es ms que la composicin del mecanismo de la memoria segmentada y el de la paginada, tal como se muestra en la siguiente figura:
La Memoria con segmentos paginados permite hacer lo siguiente:
Compartir datos entre procesos mediante el uso de segmentos
compartibles. Proteccin de datos, el administrador otorga permisos a este segmento.
Ventajas
No hay fragmentacin interna.
Permite un alto grado de multiprogramacin. Gran espacio virtual para el proceso. Soporte de proteccin y comparticin