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