TEMA 3. GESTIÃN DE MEMORIA - Universidad de AlmerÃa
TEMA 3. GESTIÃN DE MEMORIA - Universidad de AlmerÃa
TEMA 3. GESTIÃN DE MEMORIA - Universidad de AlmerÃa
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Diseño <strong>de</strong> Sistemas Operativos<br />
Tema <strong>3.</strong> Gestión <strong>de</strong> Memoria<br />
• El kernel busca posición a<strong>de</strong>cuada en el mapa por la dirección<br />
• Casos posibles:<br />
− Recursos liberados llenan un hueco en el mapa ⇒ Combinar todos los recursos en una entrada en el<br />
mapa.<br />
− Recursos liberados llenan parcialmente un hueco en el mapa y son contiguos a alguna entrada<br />
adyacente ⇒ El kernel ajusta la dirección y unida<strong>de</strong>s <strong>de</strong> la entrada apropiada <strong>de</strong> acuerdo a<br />
recursos liberados.<br />
− Recursos liberados llenan parcialmente un hueco en el mapa y no son contiguos a ninguna entrada<br />
⇒ El kernel crea nueva entrada en el mapa para los recursos liberados y la inserta en la posición<br />
apropiada.<br />
Ejemplo. Figura <strong>3.</strong>2<br />
• Dispositivo <strong>de</strong> swap con 10000 bloques empezando en la dirección 1 (a).<br />
• Secuencia <strong>de</strong> peticiones y liberaciones:<br />
− El kernel asigna 100 unida<strong>de</strong>s <strong>de</strong>l recurso (b).<br />
− El kernel recibe una petición <strong>de</strong> 50 (c).<br />
− Recibe una última petición <strong>de</strong> 100 unida<strong>de</strong>s (d).<br />
− Libera 50 unida<strong>de</strong>s empezando en la dirección 101 (e).<br />
− Libera 100 unida<strong>de</strong>s empezando en la dirección 1 (f).<br />
− Demanda 200 unida<strong>de</strong>s (g).<br />
− Libera 350 empezando en dirección 151. Se asignaron por separado 0 (h).<br />
Dirección<br />
Unida<strong>de</strong>s<br />
1 10000<br />
a<br />
Dirección Unida<strong>de</strong>s<br />
151 9850<br />
c<br />
Dirección Unida<strong>de</strong>s<br />
101 9900<br />
b<br />
Dirección Unida<strong>de</strong>s<br />
251 9750<br />
d<br />
Dirección Unida<strong>de</strong>s<br />
101 50<br />
251 9750<br />
e<br />
Dirección<br />
1 150<br />
Unida<strong>de</strong>s<br />
251 9750<br />
f<br />
Dirección Unida<strong>de</strong>s<br />
1 150<br />
451 9550<br />
g<br />
Dirección Unida<strong>de</strong>s<br />
1 10000<br />
h<br />
Figura <strong>3.</strong>2. Asignación <strong>de</strong> espacio en el dispositivo <strong>de</strong> swap.<br />
<strong>3.</strong><strong>3.</strong>1.2. Intercambiar Procesos fuera <strong>de</strong> Memoria.<br />
El kernel intercambia procesos al swap si necesita espacio en memoria:<br />
• Fork: Asignar espacio para el proceso hijo (crea un nuevo proceso).<br />
• Brk: Incremento tamaño <strong>de</strong>l segmento <strong>de</strong> datos <strong>de</strong> un proceso.<br />
• Crecimiento pila proceso.<br />
• Para intercambiar procesos que había intercambiado al dispositivo <strong>de</strong> swap.<br />
Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>3.</strong>9