3.3 Segmentación
Imprime este documento

Consiste en proporcionar a la máquina varios espacios de direcciones independientes por completo, llamados segmentos. En este caso no es necesario que todos los segmentos tengan la misma longitud, aunque existe una longitud máxima para ellos. Dado que cada uno constituye un espacio de direcciones distinto, los segmentos pueden crecer o decrecer de forma independiente, sin afectarse unos a otros.
Con esta técnica un programa puede ocupar más de una partición y éstas no necesariamente tienen por qué estar juntas.

Mientras que la paginación es transparente al programador, la segmentación es generalmente visible y se ofrece como una ventaja para la organización de los programas y datos. El programador o el compilador asigna los programas y los datos a diferentes segmentos, el principal inconveniente de esto es que el programador debe ser consciente de la limitación de tamaño máximo de los segmentos.

Un segmento podría contener un procedimiento, un arreglo, una pila o una colección de variables escalares, pero, por lo regular, no contiene una mezcla de ellos. También pueden tener tipos de protección diferentes. Un segmento de procedimiento podría especificarse como de sólo ejecución, prohibiéndose cualquier intento de leerlo o escribir en él. Tal protección es útil para detectar errores de programación y sólo se puede llevar a cabo en la segmentación, ya que tenemos conocimiento de lo que hay en cada segmento.


Segmentación pura.

Fragmentación interna: Un programa de 2M ocupa una partición de 8M, este fenómeno en el que se malgasta espacio interno de una partición cuando el bloque de datos cargado es más pequeño que la partición, se denomina fragmentación interna.

Fragmentación externa: cuando la memoria se fragmenta externamente, es decir, se crean pequeñas particiones o huecos en ésta.
En los sistemas de “segmentación” un programa y sus datos pueden ocupar varios bloques separados de almacenamiento real
Los bloques:

  • No necesitan ser de igual tamaño.
  • Los bloques separados no necesitan ser adyacentes.
  • Deben estar compuestos de posiciones contiguas de almacenamiento.
  • Se complica la protección de bloques de memoria de un proceso de usuario. Es más difícil limitar el rango de acceso de cualquier programa. Un esquema posible de protección es el uso de claves de protección del almacenamiento (ver Figura 5.6):
  • Las claves están bajo el control estricto del SO.
Un programa de usuario, a quien corresponde una cierta clave en la CPU, sólo puede hacer referencia a los otros bloques del almacenamiento con igual clave de protección.



AnteriorSiguiente