Segmentación: Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica, llevándose a cabo una agrupación de información en bloques de tamaño variable llamados segmentos. Cada espacio de direcciones de programa lleva una colección de segmentos, generalmente son la división lógica del programa.Objetivos:Modulador de programa: Cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por eso al resto de los programas.Protección: Se pueden proteger los módulos del segmento contra accesos no autorizados.Compartición: Dos o mas procesos pueden ser un mismo segmento, bajo reglas de protección, aunque no sean propietarios de los mismos.Enlace dinámico entre segmentos: Puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa.
Segmentacion
Diapositiva 2
Tabla de Segmentación del Procesador
Cada una de estas filas describe uno de los 4 segmentos del programa en ejecución. Para cada segmento se indica:
Base: Dirección virtual en donde comienza (incluyendo esta dirección).
Límite: Dirección virtual en donde finaliza (excluyendo esta dirección).
Desplazamiento: Desplazamiento que hay que sumar a una dirección virtual para obtener su dirección real. Se calcula como la dirección de comienzo del segmento en la memoria real menos la dirección virtual de inicio del segmento.
Atributos del segmento: lectura/escritura, solo lectura e invisible (accesible solo por el núcleo).
Diapositiva 3
Ventajas de la Segmentacion
Ventajas de la segmentación:
El
programador puede conocer las unidades lógicas de su programa, dándoles un
tratamiento particular.
Es posible
compilar módulos separados como segmentos el enlace entre los segmentos puede
suponer hasta tanto se haga una referencia entre segmentos.
Debido a que
es posible separar los módulos se hace más fácil la modificación de los mismos.
Cambios dentro de un módulo no afecta al resto de los módulos.
Es fácil el
compartir segmentos.
Es posible
que los segmentos crezcan dinámicamente según las necesidades
del programa en ejecución.
Existe la
posibilidad de definir segmentos que aún no existan. Así, no se asignará
memoria, sino a partir del momento que sea necesario hacer usos del segmento.
Un ejemplo de esto, serían los Arrays cuya dimensión no se conoce hasta
tanto no se comienza a ejecutar el programa. En algunos casos, incluso podría
retardar la asignación de memoria hasta el momento en el cual se referencia el Array u
otra estructura de dato por primera vez.
Diapositiva 4
Desventajas de las Segmentacion
Desventajas
de la segmentación:
Hay un
incremento en los costos de hardware y de software para llevar a cabo la
implantación, así como un mayor consumo de recursos como: memoria, tiempo de CPU,
etc.
Debido a que
los segmentos tienen un tamaño variable se pueden presentar problemas de
fragmentación externas, lo que puede ameritar un plan de reubicación de
segmentos en memoria principal.
Se complica
el manejo de memoria virtual, ya que los discos almacenan la información
en bloques de tamaños fijos, mientras los segmentos son de tamaño variable.
Esto hace necesaria la existencia de mecanismos más costosos que los existentes
para paginación.
Al permitir
que los segmentos varíen de tamaño, puede ser necesarios planes de reubicación
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 traído
fácilmente de nuevo, ya que será necesario encontrar nuevamente un área de
memoria libre ajustada a su tamaño.
La compartición
de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales
de hardware y software. Estas desventajas tratan de ser minimizadas, bajo
la técnica conocida como Segmentación paginada.
Diapositiva 5
Datos personales:
Nombres: Camilo Cebey y Cristhian LeuchukGrupo: 2°BEFecha de entrega: 11/08/2016