Diferencia entre revisiones de «Segmentación»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
(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 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([[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]]).  
  
Esta zona de intercambio puede ser :
+
Esta zona de intercambio puede ser:
  
*un lugar fijo en el disco(Linux, Unix)(quien decide que segmento se va a descargar es el administrador de memoria)
+
* Un lugar fijo en el disco (Linux, Unix). El administrador de memoria decide qué segmento se va a descargar
  
*o un fichero de tamaño variable y oculto (Windows).
+
* 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).
+
 
 +
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 20:24 6 jun 2011

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

Segmentos.png

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).