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

• DPL = 0 (Modo kernel para el nivel <strong>de</strong> privilegio <strong>de</strong>l <strong>de</strong>scriptor),<br />

• D/B = 1 (Offset <strong>de</strong> 32 bits),<br />

• Abarca <strong>de</strong>s<strong>de</strong> 0 a 2 32 – 1, y el selector <strong>de</strong> segmentose <strong>de</strong>fine por la macro __KERNEL_CS. Para<br />

direccionar el segmento, el kernel se tiene que cargar el valor asociado a esta macro en el registro CS.<br />

Segmento <strong>de</strong> datos <strong>de</strong>l kernel:<br />

• Base: 0x00000000, Límite (limit): 0xfffff,<br />

• G = 1 (granularidad en páginas),<br />

• S = 1 (Segmento normal <strong>de</strong> código o datos),<br />

• Type = 0x2 (Datos, pue<strong>de</strong> ser leído y escrito),<br />

• DPL = 0 (Modo kernel),<br />

• D/B = 1 (Offset <strong>de</strong> 32 bits),<br />

• Idéntico al <strong>de</strong>scriptor <strong>de</strong> segmento anterior salvo por el tipo, y se <strong>de</strong>fine por la macro __KERNEL_DS.<br />

Segmento <strong>de</strong> código <strong>de</strong> usuario:<br />

• Base: 0x00000000, Límite: 0xfffff<br />

• G = 1 (granularidad en páginas)<br />

• S = 1 (Segmento normal <strong>de</strong> código o datos)<br />

• Type = 0xa (Código, pue<strong>de</strong> ser leído y ejecutado)<br />

• DPL = 3 (Modo usuario)<br />

• D/B = 1 (Offset <strong>de</strong> 32 bits)<br />

• El <strong>de</strong>scriptor <strong>de</strong> segmento se <strong>de</strong>fine por la macro __USER_CS.<br />

Segmento <strong>de</strong> datos <strong>de</strong> usuario:<br />

• Base: 0x00000000, Límite: 0xfffff,<br />

• G = 1 (granularidad en páginas),<br />

• S = 1 (Segmento normal <strong>de</strong> código o datos),<br />

• Type = 0x2 (Datos, pue<strong>de</strong> ser leído y escrito),<br />

• DPL = 3 (Modo usuario),<br />

• D/B = 1 (Offset <strong>de</strong> 32 bits),<br />

• El <strong>de</strong>scriptor <strong>de</strong> segmento se <strong>de</strong>fine por la macro __USER_DS.<br />

Un Segmento <strong>de</strong> Estado <strong>de</strong> Tarea (TSS) para cada proceso. El campo base <strong>de</strong>l <strong>de</strong>scriptor <strong>de</strong> TSS contiene la<br />

dirección <strong>de</strong>l campo tss <strong>de</strong>l <strong>de</strong>scriptor <strong>de</strong> proceso correspondiente.<br />

• G = 0 (Granularidad <strong>de</strong> bytes)<br />

• Limite = 0xeb (el TSS es <strong>de</strong> 236 bytes)<br />

• Type = 9 o 11 (TSS disponible)<br />

• DPL = 0 (Los procesos no <strong>de</strong>ben acce<strong>de</strong>r a un TSS en modo usuario)<br />

Un segmento <strong>de</strong> LDT por <strong>de</strong>fecto para cada proceso, que apunta a una LDT compartida por todos los<br />

procesos con contenido nulo. El <strong>de</strong>scriptor segmento se almacena en la variable <strong>de</strong>fault_ldt. Cada procesador<br />

tiene su propio <strong>de</strong>scriptor <strong>de</strong> segmento LDT, su Base se inicializa al la dirección almacenada en <strong>de</strong>fault_ldt y<br />

el campo límite se establece a 7.<br />

4 segmentos más para funciones <strong>de</strong> APM (Advanced Power Management, que consiste en un conjunto <strong>de</strong><br />

rutinas BIOS <strong>de</strong>dicada a la gestión <strong>de</strong> los estados <strong>de</strong> la potencia <strong>de</strong>l sistema) y 4 se <strong>de</strong>jan sin usar. Como la<br />

GDT tiene 8192 entradas, el máximo número <strong>de</strong> procesos es 4090.<br />

<strong>3.</strong>4.2.4. Paginación en el i386<br />

La unidad <strong>de</strong> paginación <strong>de</strong> la MMU traduce la dirección lineal a física: (1) Se chequea el tipo <strong>de</strong> acceso<br />

respecto a los <strong>de</strong>rechos <strong>de</strong> acceso <strong>de</strong> la dirección lineal. (2) Si el acceso no es válido, se genera una<br />

excepción <strong>de</strong> falta <strong>de</strong> página.<br />

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

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

Saved successfully!

Ooh no, something went wrong!