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 />
• pmd_alloc: asigna un <strong>de</strong>l directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas utilizado por un proceso;<br />
• pgd_free: libera el <strong>de</strong>l directorio global <strong>de</strong> tablas <strong>de</strong> páginas utilizado por un proceso;<br />
• pgd_alloc: asigna el <strong>de</strong>l directorio global <strong>de</strong> tablas <strong>de</strong> páginas utilizado por un proceso.<br />
Las funciones in<strong>de</strong>pendientes <strong>de</strong> la arquitectura son las siguientes:<br />
• copy_page: copia el contenido <strong>de</strong> una página <strong>de</strong> memoria en otra;<br />
• com: muestra un mensaje <strong>de</strong> error, y envía la señal SIGKILL al proceso que haya sobrepasado la<br />
memoria disponible;<br />
• free_one_pmd: libera la tabla <strong>de</strong> páginas apuntada por una entrada <strong>de</strong>l directorio intermedio <strong>de</strong> tablas<br />
<strong>de</strong> páginas;<br />
• free_one_pgd: libera el directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas apuntado por una entrada <strong>de</strong>l<br />
directorio global <strong>de</strong> tablas <strong>de</strong> páginas, llamando a free_one_pmd;<br />
• clear_page_tables: libera las tablas asociadas al espacio <strong>de</strong> direccionamiento <strong>de</strong> un proceso usuario,<br />
llamando a free_one_pmd para cada directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas;<br />
• free_page_tables: libera las tablas asociadas al espacio <strong>de</strong> direccionamiento <strong>de</strong> un proceso usuario,<br />
llamando a free_one_pmd para cada directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas, y seguidamente a<br />
pgd_free;<br />
• new_page_tables: asigna nuevas tablas para un proceso;<br />
• copy_one_pte: copia el contenido <strong>de</strong> una entrada <strong>de</strong> la tabla <strong>de</strong> páginas en otra, borrando la<br />
autorización <strong>de</strong> escritura si la copia en escritura se especifica;<br />
• copy_pte_range: copia el contenido <strong>de</strong> una serie <strong>de</strong> entradas <strong>de</strong> la tabla <strong>de</strong> páginas, llamando a<br />
copy_one_pte para cada entrada;<br />
• copy_pmd_range: copia el contenido <strong>de</strong> una serie <strong>de</strong> entradas <strong>de</strong>l directorio intermedio <strong>de</strong> tablas <strong>de</strong><br />
páginas, llamando a copy_pte_range para cada entrada <strong>de</strong>l directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas;<br />
• copy_page_range: copia el contenido <strong>de</strong> una región <strong>de</strong> memoria, llamando a la función<br />
copy_pmd_range para cada directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas afectado;<br />
• free_pte: libera una página apuntada por una entrada <strong>de</strong> la tabla <strong>de</strong> páginas;<br />
• forget_pte: libera una página apuntada por una entrada <strong>de</strong> la tabla <strong>de</strong> páginas, si esta entrada no es<br />
nula;<br />
• zap_pte_range: libera varias páginas llamando a free_pte;<br />
• zap_pmd_range: libera una serie <strong>de</strong> entradas <strong>de</strong>l directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas, llamando<br />
a la función zap_pte_range para cada entrada <strong>de</strong>l directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas;<br />
• zap_page_range: libera el contenido <strong>de</strong> una región <strong>de</strong> memoria, llamando a la función zap_pmd_range<br />
para cada directorio intermedio <strong>de</strong> tablas <strong>de</strong> páginas afectado;<br />
• zeromap_pte_range: inicializa varias entradas <strong>de</strong> la tabla <strong>de</strong> páginas con el mismo <strong>de</strong>scriptor;<br />
• zeromap_pmd_range: asigna tablas <strong>de</strong> páginas y las inicializa, llamando a la función<br />
zeromap_pte_range;<br />
• zeromap_page_range: asigna varios directorios intermedios <strong>de</strong> tablas <strong>de</strong> páginas, y llama a la función<br />
zeromap_pmd_range para cada directorio, para inicializar las entradas <strong>de</strong> las tabla s <strong>de</strong> páginas;<br />
• remap_pte_range: modifica las direcciones <strong>de</strong> páginas contenidas en varias entradas <strong>de</strong> la tabla <strong>de</strong><br />
páginas;<br />
• remap_pmd_range: asigna tablas <strong>de</strong> páginas y modifica las direcciones contenidas, llamando a<br />
relmap_pte_range;<br />
• remap_page_range: asigna varios directorios intermedios <strong>de</strong> tablas <strong>de</strong> páginas y modifica las entradas<br />
<strong>de</strong> tablas, llamando a la función remap_pmd_range.<br />
<strong>3.</strong>4.<strong>3.</strong> Gestión <strong>de</strong> Memoria en Linux.<br />
Hemos visto que Linux hace uso <strong>de</strong> las ventajas <strong>de</strong> la segmentación y <strong>de</strong> los circuitos <strong>de</strong> paginación <strong>de</strong> los<br />
procesadores i386 para traducir direcciones lógicas en direcciones físicas. Po<strong>de</strong>mos también <strong>de</strong>cir que alguna<br />
porción <strong>de</strong> RAM está permanentemente asignada al kernel y utilizada para almacenar el código <strong>de</strong>l kernel y<br />
estructuras <strong>de</strong> datos estátic as <strong>de</strong>l mismo. La restante parte <strong>de</strong> la RAM se <strong>de</strong>nomina memoria dinámica, y<br />
ésta es un recurso muy valioso y necesitado no sólo por los procesos sino también por el propio kernel. De<br />
Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>3.</strong>28