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
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 />
40007000<br />
0804b000 40087000<br />
0804a000 40005000<br />
40009000 c0000000<br />
08053000<br />
40082000 400b9000<br />
Figura <strong>3.</strong>17. Organización <strong>de</strong> las regiones <strong>de</strong> memoria <strong>de</strong> un proceso.<br />
Derechos <strong>de</strong> acceso. Hasta ahora hemos visto varios flags <strong>de</strong> página: (1) Los incluidos en cada entrada <strong>de</strong><br />
la tabla <strong>de</strong> página (Read/Write, Present y User/Supervisor), utilizados por el hardware para comprobar si el<br />
tipo <strong>de</strong> direccionamiento pue<strong>de</strong> ser ejecutado. (2) Los incluidos en el campo flags <strong>de</strong>l <strong>de</strong>scriptor <strong>de</strong> página<br />
(page), utilizados por Linux para diferentes propósitos. (3) Hay un tercer grupo <strong>de</strong> flags; los relacionados con<br />
todas las páginas <strong>de</strong> una región <strong>de</strong> memoria o con la región en sí, en vm_flags. Estos flags son fundamentales<br />
para que el gestor <strong>de</strong> excepción <strong>de</strong> falta <strong>de</strong> página <strong>de</strong>termine qué tipo <strong>de</strong> falta ha ocurrido y qué hacer al<br />
respecto.<br />
Flags <strong>de</strong> región <strong>de</strong> memoria:<br />
• VM_<strong>DE</strong>NYWRITE: La región mapea un archivo que no pue<strong>de</strong> abrirse para escribir.<br />
• VM_EXEC: Las páginas pue<strong>de</strong>n ejecutarse.<br />
• VM_EXECUTABLE: Las páginas contienen código ejecutable (la región mapea un archivo<br />
ejecutable).<br />
• VM_GROWSDOWN: La región pue<strong>de</strong> expandirse hacia abajo (direcciones más bajas).<br />
• VM_GROWSUP: La región pue<strong>de</strong> expandirse hacia arriba(direcciones más altas).<br />
• VM_IO: La región mapea el espacio <strong>de</strong> direcciones <strong>de</strong> E/S <strong>de</strong> un dispositivo.<br />
• VM_LOCKED: La región está bloqueada (las páginas <strong>de</strong> la región) y no permite swap.<br />
• VM_MAYEXEC: Pue<strong>de</strong> establecerse VM_EXEC.<br />
• VM_MAYREAD: Pue<strong>de</strong> establecerse VM_READ.<br />
• VM_MAYSHARE: Pue<strong>de</strong> establecerse VM_SHARE.<br />
• VM_MAYWRITE: Pue<strong>de</strong> establecerse VM_WRITE.<br />
• VM_READ: Las páginas pue<strong>de</strong>n leerse.<br />
• VM_SHARED: Las páginas pue<strong>de</strong>n ser compartidas.<br />
• VM_SHM: Las páginas <strong>de</strong> la región se utilizan para memoria compartida IPC.<br />
• VM_WRITE: Las páginas pue<strong>de</strong>n escribirse.<br />
• VM_SEQ_READ: La aplicación acce<strong>de</strong> a páginas secuencialmente.<br />
• VM_RAND_READ: La aplicación acce<strong>de</strong> a páginas <strong>de</strong> forma aleatoria.<br />
• VM_DONTCOPY: No copiar la región cuando se crea un nuevo proceso con fork().<br />
• VM_DONTEXPAND: Prohíbe la expansión <strong>de</strong> la región a través <strong>de</strong> la llamada al sistema mremap().<br />
• VM_RESERVED: No intercambiar (swap) la región.<br />
Existe una correspon<strong>de</strong>ncia con los flags <strong>de</strong> protección ⇒ los flags <strong>de</strong> protección <strong>de</strong> la región no siempre<br />
pue<strong>de</strong>n traducirse directamente a los <strong>de</strong> la página a nivel hardware: (1) A veces pue<strong>de</strong> que queramos generar<br />
Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>3.</strong>40