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

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

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

Saved successfully!

Ooh no, something went wrong!