Diferencia entre revisiones de «Segmentación»
De Wiki de Sistemas Operativos
(→Funcionamiento) |
(achicada imagen y otros detallitos) |
||
Línea 6: | Línea 6: | ||
=Funcionamiento= | =Funcionamiento= | ||
− | [[Archivo:Segmentos.png]] | + | [[Archivo:Segmentos.png|725px]] |
=Características= | =Características= | ||
Línea 28: | Línea 28: | ||
==Carga de segmentos a petición== | ==Carga de segmentos a petición== | ||
− | Es un mecanismo que permite a un proceso | + | 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]]). |
− | Esta zona de intercambio puede ser : | + | 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== | ==Enlace dinámico== | ||
− | Uso de llamadas a funciones que están en disco | + | 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). |
Revisión del 19:24 6 jun 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 <<<--------------- ¿No eran de tamaño variable? JCGarrido
- Gestión compleja, sobretodo por su tamaño variable
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).