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

• 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

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

Saved successfully!

Ooh no, something went wrong!