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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Diseño <strong>de</strong> Sistemas Operativos<br />

Tema <strong>3.</strong> Gestión <strong>de</strong> Memoria<br />

hecho el rendimiento global <strong>de</strong>l sistema <strong>de</strong>pen<strong>de</strong> fuertemente <strong>de</strong> cómo <strong>de</strong> eficientemente se gestiona la<br />

memoria dinámica. Por tanto, todos los sistemas operativos multitarea actuales tratan <strong>de</strong> optimizar el uso <strong>de</strong> la<br />

memoria dinámica, asignándola sólo cuando es estrictamente necesario y liberándola tan pronto como sea<br />

posible. En esta sección <strong>de</strong>scribiremos: estructuras básicas <strong>de</strong>l kernel para gestionar la memoria dinámica<br />

<strong>de</strong>s<strong>de</strong> dos puntos <strong>de</strong> vista: asignación <strong>de</strong> memoria para el kernel y asignación <strong>de</strong> memoria para procesos,<br />

política <strong>de</strong> asignación <strong>de</strong> la memoria por parte <strong>de</strong>l kernel, el gestor <strong>de</strong> faltas <strong>de</strong> página, etc.<br />

<strong>3.</strong>4.<strong>3.</strong>1. Gestión <strong>de</strong> Marcos <strong>de</strong> Página.<br />

El kernel <strong>de</strong>be mantener el estado actual <strong>de</strong> cada marco <strong>de</strong> página ⇒ <strong>de</strong>be mantener información adicional a<br />

la que pue<strong>de</strong> guardarse en el <strong>de</strong>scriptor <strong>de</strong> las tablas <strong>de</strong> página. Se almacena información <strong>de</strong> cada página en<br />

un array (mem_map) <strong>de</strong> <strong>de</strong>scriptores <strong>de</strong> marco <strong>de</strong> página, <strong>de</strong>finidos por la estructura struct page en<br />

<br />

type<strong>de</strong>f struct page {<br />

struct list_head list;<br />

struct address_space *mapping;<br />

unsigned long in<strong>de</strong>x;<br />

struct page *next;<br />

struct page *prev;<br />

struct ino<strong>de</strong> *ino<strong>de</strong>;<br />

unsigned long offset;<br />

struct page *next_hash;<br />

atomic_t count;<br />

unsigned long flags;<br />

struct wait_queue *wait;<br />

struct page **pprev_hash:<br />

struct buffer_head *buffers;<br />

strcut list_head lru;<br />

} mem_map_t;<br />

Algunos <strong>de</strong> los campos más representativos son:<br />

• count: Es un contador <strong>de</strong> referencia <strong>de</strong> uso para la página y vale 0 si el marco <strong>de</strong> página está libre, o el<br />

número <strong>de</strong> procesos a los que ha sido asignada.<br />

• prev, next: Para insertar el <strong>de</strong>scriptor en una lista circular doblemente enlazada. El significado <strong>de</strong>pen<strong>de</strong><br />

<strong>de</strong>l uso <strong>de</strong> la página en cada momento<br />

• flags: Array <strong>de</strong> hasta 32 fIags <strong>de</strong> la forma PG_xyz que indican el estado <strong>de</strong>l marco <strong>de</strong> página<br />

Algunos <strong>de</strong> los flags más importantes son:<br />

• PG_DMA: Se pue<strong>de</strong> usar la página para DMA ISA<br />

• PG_locked: La página no acepta swap<br />

• PG_referenced: La página ha sido accedida recientemente en la caché <strong>de</strong> páginas<br />

• PG_reserved: Reservada para el kernel, o no usable<br />

• PG_slab: La página está en un slab<br />

• PG_swap_cache: La página está en la caché <strong>de</strong> swap<br />

En la siguiente figura se ilustra la memoria dinámica y los valores utilizados para referirse a ella.<br />

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

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

Saved successfully!

Ooh no, something went wrong!