Diferencia entre revisiones de «Segmentación»
De Wiki de Sistemas Operativos
(" La variabilidad del tamaño de los segmentos solo puede ser establecida en el momento de su creación." Realmente no estoy seguro al 100% de ésto. Mejor dejamos la pregunta en la discusión) |
|||
Línea 27: | Línea 27: | ||
*Gestión compleja, sobretodo por su tamaño variable | *Gestión compleja, sobretodo por su tamaño variable | ||
+ | =Mecanismos= | ||
==Carga de segmentos a petición== | ==Carga de segmentos a petición== | ||
Es un mecanismo que permite a un proceso no disponer de todos sus segmentos en memoria principal, se pueden descargar a disco (en la zona de intercambio o swap) segmentos en base a un cierto criterio (ver [[Intro | Memoria virtual]]). | Es un mecanismo que permite a un proceso no disponer de todos sus segmentos en memoria principal, se pueden descargar a disco (en la zona de intercambio o swap) segmentos en base a un cierto criterio (ver [[Intro | Memoria virtual]]). |
Revisión del 13:04 18 dic 2011
Contenido
Definición
Un segmento es un espacio de memoria de tamaño variable, compuesto por:
- Descriptor: Identificador único del segmento (dentro del espacio de memoria del proceso).
- Tamaño del segmento
Funcionamiento
Características
- Cada proceso en ejecución (esté activo, bloqueado o preparado) tiene su tabla de segmentos.
- Solapamiento: 2 segmentos pueden compartir zona de memoria. Ojo! problemas de concurrencia. Habría que usar algún método para su sincronización si se intenta.
- Protección de memoria: añadir 3 bits a la tabla de descriptores de segmentos para los permisos ( r w x ).
- Aspectos materiales : Hay 2 registros que funcionan como dispositivos de traducción segmentada; uno de dirección de comienzo de la tabla de segmentos, y otro para el número de entradas en ella.
- Esto supone dos accesos a memoria física real. La tabla de segmentos ocupa memoria, siendo deseable que permanezcan en cache.
- Cuando un proceso requiere más memoria se crea un nuevo segmento.
- Dos instancias de un mismo proceso pueden compartir segmentos de memoria de instrucciones/código, pero no para datos ya que esto complicaría la gestión.
- No se redimensionan.
- Gestión compleja, sobretodo por su tamaño variable
Mecanismos
Carga de segmentos a petición
Es un mecanismo que permite a un proceso no disponer de todos sus segmentos en memoria principal, se pueden descargar a disco (en la zona de intercambio o swap) segmentos en base a un cierto criterio (ver Memoria virtual).
Esta zona de intercambio puede ser:
- Un lugar fijo en el disco (Linux, Unix). El administrador de memoria decide qué segmento se va a descargar
- Un fichero oculto de tamaño variable (Windows).
Enlace dinámico
Uso de llamadas a funciones que están en disco.
Podemos tener referencias a funciones o bibliotecas que no estén en memoria principal (permite ir cargando bajo demanda los segmentos que contengan el código necesario).