La
segmentación es similar a la paginación. En este caso se divide a la memoria en
diferentes segmentos. A diferencia de la paginación, los segmentos pueden tener
diferentes tamaños, pero tienen un tamaño máximo. Por ella es necesario que la
CPU incluya registros para marcar el comienzo y el fin de la longitud del
segmento. Al igual que sucedía con la
paginación no presenta fragmentación externa, pero si fragmentación interna.
Los
procesos se colocan en los diferentes segmentos, pero en este caso el
programador es el encargado de gestionar los segmentos. Debe ser quien se
encargue de repartir los programas y los datos en los distintos segmentos
disponible.
Para
acceder a una determinada posición del proceso debemos conocer el comienzo del
segmento, su tamaño total y el desplazamiento dentro el mismo.
Existen
sistemas en los que es posible mezclar paginación y segmentación, para tener una segmentación paginada o paginación
de segmentos (Sampalo et all, 2005).
La
segmentación trocea el programa en porciones más pequeñas para que pueda ser
más fácil ubicarlo en memoria. Cada segmento se corresponde a una unidad lógica
del programa, como el código, los datos o la pila (Candela et all, 2007).
Fig.1. Memoria Segmentada
Fuente: (Candela et all, 2007)
El
procesador también divide el mega en trozos de 64K que se llaman segmentos, el
programa debe conocer en todo momento debe conocer en que segmento están los
datos o el código y cuál es la posición dentro del segmento.
Un
segmento es un área especial en un programa que inicia en un límite de un párrafo,
esto es, en una localidad regularmente divisible entre 16 o 10 hex. Aunque un
segmento puede estar ubicado casi en cualquier lugar de la memoria y en modo
real, puede ser hasta de 64k, solo necesita tanto espacio como el programa
requiera para su ejecución.
Los
registros de Segmentos son:
- CS (Segmento de código): Dirección de instrucción. Contiene las instrucciones de maquina que son ejecutadas. Por lo común, la primera instrucción ejecutable esta al inicio del segmento, y el sistema operativo enlaza a esa localidad para iniciar la ejecución del programa. Como su nombre lo indica, el registro del CS direcciona el segmento de código. Si su área de requiere mas de 64K su programa puede necesitar definir mas de un segmento de código.
- DS (Segmento de datos): Dirección de datos. Contiene datos, constantes y áreas de trabajo definidos por el programa. El registro DS direcciona el segmento de datos. Si su área de datos requiere de mas de 64K, su programa puede necesitar definir mas de un segmento de datos.
- SS (Segmento de pila): Dirección de pila. En términos sencillos, la pila contiene datos y direcciones que usted necesita guardar temporalmente o para el uso de sus llamadas subrutinas. El registro del segmento de pila direcciona el segmento de pila.
- ES (Segmento extra de datos): Dirección de destino de cadenas.
Direccionamiento
relativo
Se
emplea para apuntar a direcciones de memoria dentro de un segmento, Se emplean
registros Base y registros Índices. Si BX se emplea como registro base,
entonces el registro de segmento que se emplea es el registro DS. Si es BP el
registro base, entonces el registro de segmento empleado es el de la pila SS.
Memoria virtual
Segmentada
En
la memoria virtual segmentada dividimos la memoria en segmentos que pueden
tener diferente longitud. Este tamaño es re-dimensionable por el sistema
operativo por lo que genera un esquema mucho más flexible al programador (Sampalo
et all, 2005).
Ventajas
Entre
las ventajas de la segmentación tenemos:
1. Permite aumentar la capacidad de
manejo de memoria de un procesador sin cambiar las instrucciones asociadas al
mismo.
2. Facilita el uso de áreas de memoria
separadas para el programa, los datos y la pila (Stack).
3. Permite que un programa y sus datos
sean colocados en diferentes áreas de memoria cada vez que el programa es
ejecutado, lo que permite al sistema operativo manejar varias tareas.
4. El uso de instrucciones de tamaño más
reducido aumenta la velocidad de procesamiento ya que ahora el tiempo en el
fetch y en la decodificación de la instrucción (Izaguirre-Astralóa, 2008).
REFERENCIAS
BIBLIOGRÁFICAS
No hay comentarios:
Publicar un comentario