12.10.2014 Views

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

SHOW MORE
SHOW LESS

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 />

procesos. (2) Memoria virtual. El proceso <strong>de</strong>be tener la ilusión <strong>de</strong> estar solo en el sistema. Espacio <strong>de</strong><br />

direcciones contiguo y que comienza en 0. Esto facilita el trabajo <strong>de</strong> los compiladores.<br />

Otras características <strong>de</strong> la gestión <strong>de</strong> memoria también son <strong>de</strong>seables, si bien están menos relacionadas con<br />

el direccionamiento: (1) Ofrecer al proceso más memoria <strong>de</strong> la que hay físicamente disponible. Se emplean<br />

técnicas <strong>de</strong> swapping y paginación por <strong>de</strong>manda. (2) Aprovechar la memoria mediante técnicas Copy-onwrite<br />

. (3) Mapeado <strong>de</strong> ficheros sobre memoria. (4) En general, mejorar el rendimiento <strong>de</strong>l sistema mediante<br />

diversas técnicas a la hora <strong>de</strong> asignar o liberar memoria (Buddy system, Slab allocator, caches, etc).<br />

<strong>3.</strong>4.2.1. Espacios <strong>de</strong> Direcciones<br />

Tres tipos <strong>de</strong> direcciones:<br />

• Direcciones lógicas. Generadas por el proceso, cada dirección lógica consiste en un selector <strong>de</strong><br />

segmento y un <strong>de</strong>splazamiento (offset) que <strong>de</strong>nota la distancia <strong>de</strong>l principio <strong>de</strong>l segmento a la dirección<br />

actual.<br />

• Direcciones lineales (direcciones virtuales). Obtenidas tras aplicar una transformación a la<br />

dirección lógica por parte <strong>de</strong> la MMU. 32 bits se pue<strong>de</strong>n utilizar para direccionar 4Gb (es <strong>de</strong>cir<br />

4294967296 direcciones físicas <strong>de</strong> memoria). Las direcciones lineales se representan normalmente en<br />

hexa<strong>de</strong>cimal, su rango <strong>de</strong> valores va <strong>de</strong>s<strong>de</strong> 0x00000000 hasta 0xffffffff.<br />

• Direcciones físicas. Referencian la memoria física. Se obtienen tras aplicar una transformación por<br />

parte <strong>de</strong> la MMU.<br />

Las transformaciones y el formato <strong>de</strong> las direcciones <strong>de</strong>pen<strong>de</strong>n <strong>de</strong> la arquitectura. En Linux los espacios <strong>de</strong><br />

direcciones lógico y lineal son idénticos.<br />

En los procesadores <strong>de</strong> la arquitectura i386:<br />

• El paso <strong>de</strong> dirección lógica a lineal se <strong>de</strong>nomina segmentación.<br />

• El paso <strong>de</strong> dirección lineal a física se <strong>de</strong>nomina paginación. Si se <strong>de</strong>shabilita la paginación, dirección<br />

física = dirección lineal.<br />

La memoria virtual se soporta en la paginación y en bits <strong>de</strong> presencia y referencia.<br />

dirección_logica (48 bits = segmento + <strong>de</strong>splazamiento) ⇒ unidad <strong>de</strong> segmentación ⇒ dirección_lineal (32<br />

bits) ⇒ unidad <strong>de</strong> paginación ⇒ dirección_física (32 bits).<br />

Tablas separadas para la segmentación y paginación. Las direcciones lógicas son <strong>de</strong> 48 bits divididas en dos<br />

partes: <strong>de</strong>scriptor <strong>de</strong> segmento (16 bits) y <strong>de</strong>splazamiento (32 bits). Las direcciones lineales y físicas son <strong>de</strong><br />

32 bits. En Linux, dado que no pue<strong>de</strong> <strong>de</strong>sactivarse la segmentación, la i<strong>de</strong>ntidad entre los espacios lógico y<br />

lineal se consigue realizando la programación a<strong>de</strong>cuada.<br />

<strong>3.</strong>4.2.2. Segmentación en el i386<br />

Características <strong>de</strong> i386: (1) microprocesador <strong>de</strong> 32 bytes, (2) hasta <strong>de</strong> 4 Gbytes <strong>de</strong> memoria física<br />

direccionable; (3) soporta segmentación y paginación (página <strong>de</strong> 4 Kbytes); (4) 4 niveles <strong>de</strong> privilegio (0 – 3);<br />

(5) Soporta mecanismos <strong>de</strong> multiproceso (multitarea) y <strong>de</strong> protección entre procesos, incluido protección <strong>de</strong><br />

memoria; (6) modo <strong>de</strong> compatibilidad con 8086 (modo real); (7) soporta un coprocesador x87; (8) presentado<br />

en 1985, la arquitectura se mantiene hasta hoy (Pentium 4) con mejoras estructurales, 100% compatible hacia<br />

atrás.<br />

Segmentación = traducción <strong>de</strong> dirección virtual a dirección lineal (o virtual). Segmento = Espacio contiguo <strong>de</strong><br />

dirección lineales. Cada segmento está caracterizado por: dirección base (dirección lineal <strong>de</strong> inicio <strong>de</strong><br />

segmento), límite (tamaño en bytes o páginas), atributos.<br />

El i386 contiene registros <strong>de</strong> segmentación para hacer más rápida la selección <strong>de</strong> selectores <strong>de</strong> segmentos.<br />

Estos registros son: CS, SS. DS, ES, FS y GS. Aunque estos son sólo 6 <strong>de</strong> todos los que dispone el i386, un<br />

programa pue<strong>de</strong> reutilizar los mismos registros <strong>de</strong> segmentación para diferentes propósitos para guardar su<br />

contenido en memoria y restaurarlo más tar<strong>de</strong>. Tres <strong>de</strong> estos seis registros <strong>de</strong> segmentación tienen propósitos<br />

Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>3.</strong>21

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!