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 />
<strong>3.</strong>4.2.6. Gestión <strong>de</strong> las Tablas <strong>de</strong> Páginas (Directorios y Tablas <strong>de</strong> Páginas)<br />
El archivo fuente contiene la gestión <strong>de</strong> las tablas <strong>de</strong> páginas. Utiliza el mo<strong>de</strong>lo <strong>de</strong><br />
Paginación <strong>de</strong> Linux. Las funciones <strong>de</strong>pendientes <strong>de</strong> la arquitectura se <strong>de</strong>finen en :<br />
• pt_none: <strong>de</strong>vuelve el valor 1 si la entrada especificada <strong>de</strong> la tabla <strong>de</strong> páginas no está inicializada;<br />
• pte_present: <strong>de</strong>vuelve el valor l si la página especificada está presente en memoria;<br />
• pte_clear: inicializa a 0 la entrada especificada <strong>de</strong> la tabla <strong>de</strong> páginas;<br />
• pmd_none: <strong>de</strong>vuelve el valor 1 si la entrada especificada <strong>de</strong>l directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas<br />
no se inicializa;<br />
• pmd_bad: <strong>de</strong>vuelve el valor l si la entrada especificada <strong>de</strong>l directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas<br />
es errónea;<br />
• pmd_present: <strong>de</strong>vuelve el valor l si la página que contiene el directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas<br />
está presente en memoria;<br />
• pmd_clear: inicializa a 0 la entrada especificada <strong>de</strong>l directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas;<br />
• pgd_none: <strong>de</strong>vuelve el valor l si la entrada especificada <strong>de</strong>l directorio global <strong>de</strong> tablas <strong>de</strong> páginas no se<br />
inicializa;<br />
• pgd_bad: <strong>de</strong>vuelve el valor l si la entrada especificada <strong>de</strong>l directorio global <strong>de</strong> tablas <strong>de</strong> páginas es<br />
errónea;<br />
• pgd_present: <strong>de</strong>vuelve el valor l si la página que contiene el directorio global <strong>de</strong> tablas <strong>de</strong> páginas<br />
presente en memoria;<br />
• pgd_clear: inicializa a 0 la entrada especificada <strong>de</strong>l directorio global <strong>de</strong> tablas <strong>de</strong> páginas;<br />
• pte_read: <strong>de</strong>vuelve l si la página especificada es accesible en lectura;<br />
• pte_write: <strong>de</strong>vuelve 1 si la página especificada es accesible en escritura;<br />
• pte_exec: <strong>de</strong>vuelve 1 si la página especificada es accesible en ejecución;<br />
• pte_dirty: <strong>de</strong>vuelve 1 si el contenido <strong>de</strong> la página especificada se ha modificado:<br />
• pte_young: <strong>de</strong>vuelve l si el contenido <strong>de</strong> la página especificada ha sido accedido;<br />
• pte_wrprotect: hace la página especificada inaccesible en escritura;<br />
• pte_rdprotect: hace la página especificada inaccesible en lectura;<br />
• pte_exprotect: hace la página especificada inaccesible en ejecución;<br />
• pte_mkclean: pone a 0 el indicador <strong>de</strong> modificación <strong>de</strong>l contenido <strong>de</strong> la página especificada;<br />
• pte_mkold: pone a 0 el indicador <strong>de</strong> acceso al contenido <strong>de</strong> la página especificada;<br />
• pte_mkwrite: hace la página especificada accesible en escritura;<br />
• pte_mkread: hace la página especificada accesible en lectura;<br />
• pte_mkexec: hace la página especificada accesible en ejecución;<br />
• pte_mkdirty: marca la página como modificada;<br />
• pte_mkyoung: marca la página como accedida;<br />
• mk_ptte: <strong>de</strong>vuelve el contenido <strong>de</strong> una entrada <strong>de</strong> la tabla <strong>de</strong> páginas combinando la dirección <strong>de</strong> la<br />
página <strong>de</strong> memoria asociada y su protección;<br />
• pte_modify: modifica el contenido <strong>de</strong> una entrada <strong>de</strong> la tabla <strong>de</strong> páginas;<br />
• pte_page: <strong>de</strong>vuelve la dirección <strong>de</strong> la página <strong>de</strong> memoria contenida en una entrada <strong>de</strong> la tabla <strong>de</strong><br />
páginas;<br />
• pmd_page: <strong>de</strong>vuelve la dirección <strong>de</strong> la página <strong>de</strong> memoria que contiene una tabla intermedia;<br />
• pgd_offset: <strong>de</strong>vuelve la dirección <strong>de</strong> una entrada <strong>de</strong> la tabla global;<br />
• pmd_offset: <strong>de</strong>vuelve la dirección <strong>de</strong> una entrada <strong>de</strong> la tabla intermedia;<br />
• pte_offset: <strong>de</strong>vuelve la dirección <strong>de</strong> una entrada <strong>de</strong> la tabla <strong>de</strong> páginas;<br />
• pte_free_kernel: libera una tabla <strong>de</strong> páginas utilizada por el kernel;<br />
• pte_alloc_kernel: asigna una tabla <strong>de</strong> páginas utilizada por el kernel;<br />
• pmd_free_kernel: libera una tabla intermedia utilizada por el kernel;<br />
• pmd_alloc_kernel: asigna una tabla intermedia utilizada por el kernel;<br />
• pte_free: libera una tabla <strong>de</strong> páginas utilizada por un proceso;<br />
• pte_alloc: asigna una tabla <strong>de</strong> páginas utilizada por un proceso;<br />
• pmd_free: libera un directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas utilizado por un proceso;<br />
Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>3.</strong>27