Monografias.com > Computación > Internet
Descargar Imprimir Comentar Ver trabajos relacionados

Paginación en Linux



Partes: 1, 2

    1. Memoria virtual en
      Linux
    2. Paginación por
      demanda
    3. Intercambio
      (swapping)
    4. Modos de
      direccionamiento físico y virtual
    5. Control
      de acceso
    6. Tabla de
      páginas en Linux
    7. Asignación de
      páginas
    8. Liberación de
      páginas
    9. La cache
      de páginas Linux
    10. Intercambiando y
      liberando páginas en Linux
    11. Intercambio de
      páginas compartidas en Linux
    12. Intercambiando y
      descartando páginas
    13. La
      cache de intercambio de Linux
    14. Copy on
      write

    MEMORIA VIRTUAL EN LINUX

    Los procesos de
    Linux usan
    bibliotecas de
    código
    común, como por ejemplo rutinas de manejo de ficheros. No
    tendría sentido que cada proceso tenga
    su propia copia de la biblioteca,
    así pues Linux usa bibliotecas compartidas que varios
    procesos pueden usar al mismo tiempo. El
    código y los datos de estas
    bibliotecas compartidas tienen que estar unidos al espacio
    virtual de direccionamiento de un proceso y también al
    espacio virtual de direccionamiento de los otros procesos que
    comparten la biblioteca.

    Un proceso no utiliza todo el código y datos
    contenidos en su memoria
    virtual dentro de un período de tiempo determinado. La
    memoria
    virtual del proceso puede que tenga código que sólo
    se usa en ciertas ocasiones, como en la inicialización o
    para procesar un evento particular. Puede que sólo haya
    usado unas pocas rutinas de sus bibliotecas compartidas.
    Sería superfluo cargar todo su código y datos en
    la memoria
    física
    donde podría terminar sin usarse. El sistema no
    funcionaría eficientemente si multiplicamos ese gasto de
    memoria por el número de procesos en el sistema. Para
    solventar el problema, Linux usa una técnica llamada
    Páginación por Demanda
    (demand paging) que sólo copia una página de
    memoria virtual de un proceso en la memoria física del
    sistema cuando el proceso trata de usarla. De esta manera, en vez
    de cargar el código y los datos en la memoria
    física de inmediato, el núcleo de Linux altera la
    tabla de páginas del proceso, designando las áreas
    virtuales como existentes, pero no en memoria.

    Linux necesita saber de dónde viene esa memoria
    virtual y cómo ponerla en memoria para arreglar los fallos
    de página. Como estas áreas de memoria virtual
    vienen de varias fuentes, Linux
    introduce un nivel de abstracción en la interfaz haciendo
    que la estructura
    apunte a un grupo de
    rutinas de manejo de memoria virtual. De esta manera, toda la
    memoria virtual de un proceso se puede gestionar de una manera
    consistente sin que importe las diferentes maneras de gestionar
    esa memoria por parte de distintos servicios de
    gestión.

    Cuando un proceso reserva memoria virtual, en realidad
    Linux no reserva memoria física para el proceso. Lo que
    hace es describir la memoria virtual creando una nueva
    estructura. Esta se une a la lista de memoria virtual del
    proceso. Cuando el proceso intenta escribir en una dirección virtual dentro de la nueva
    región de memoria virtual, el sistema creará un
    fallo de página. El procesador
    tratará de decodificar la dirección virtual, pero
    dado que no existe ninguna entrada de tabla de páginas
    para esta memoria, no lo intentará más, y
    creará una excepción de fallo de página,
    dejando al núcleo de Linux la tarea de reparar el fallo.
    Linux mira a ver si la dirección virtual que se
    trató de usar está en el espacio de
    direccionamiento virtual del proceso en curso. Si así es,
    Linux crea los PTEs (entrada en la tabla de páginas)
    apropiados y reserva una página de memoria física
    para este proceso.

    Linux utiliza en un sistema Intel x86 utiliza
    páginas de 4 Kbytes. Cada una de estas páginas
    tiene asociado un único número; el número de
    marco de página (PFN). En este modelo de
    paginación, una dirección virtual está
    compuesta de dos partes: un desplazamiento y un número de
    página virtual. Si el tamaño de página es de
    4Kbytes, los bits 11:0 de la dirección de memoria virtual
    contienen el desplazamiento y los restantes bits desde el bit 12
    son el número de marco de página
    virtual.

    PAGINACIÓN POR DEMANDA

    Puesto que hay mucha menos memoria física que
    memoria virtual, el sistema operativo
    ha de tener especial cuidado de no hacer un mal uso de la memoria
    física. Una forma de conservar memoria física es
    cargar sólo las páginas que están siendo
    utilizadas por un programa.

    Esta técnica de cargar sólo páginas
    virtuales en memoria conforme son accedidas es conocida como
    Paginación por Demanda.

    Linux utiliza la paginación por demanda para
    cargar imágenes
    ejecutables en la memoria virtual de un proceso. Siempre que se
    ejecuta un proceso, se abre el fichero que la contiene y su
    contenido se asocia en la memoria virtual del proceso. Esto se
    hace modificando las estructuras de
    datos que describen el mapa de memoria del proceso y se conoce
    como asociación de memoria. Sin embargo,
    sólo la primera parte de la imagen se copia
    realmente en memoria física. El resto de la imagen se deja
    en disco. Conforme se va ejecutando, se generan fallos de
    página y Linux utiliza el mapa de memoria del proceso para
    determinar qué partes de la imagen ha de traer a memoria
    para ser ejecutadas.

    INTERCAMBIO (SWAPPING)

    Si un proceso necesita cargar una página de
    memoria virtual a memoria física y no hay ninguna
    página de memoria física libre, el sistema
    operativo tiene que crear espacio para la nueva página
    eliminando alguna otra página de memoria física. Si
    la página que se va a eliminar de memoria física
    provenía de una fichero imagen o de un fichero de datos
    sobre el que no se ha realizado ninguna escritura,
    entonces la página no necesita ser guardada. Tan
    sólo se tiene que desechar y si el proceso que la estaba
    utilizando la vuelve a necesitar simplemente se carga nuevamente
    desde el fichero imagen o de datos.

    Por otra parte, si la página había sido
    modificada, el sistema operativo debe preservar su contenido para
    que pueda volver a ser accedido. Este tipo de página se
    conoce como página sucia (dirty page) y para
    poderla eliminar de memoria se ha de guardar en un fichero
    especial llamado fichero de intercambio (swap file). El tiempo de
    acceso al fichero de intercambio es muy grande en relación
    a la velocidad del
    procesador y la memoria física, por lo que el sistema
    operativo tiene que conjugar la necesidad de escribir
    páginas al disco con la necesidad de retenerlas en memoria
    para ser usadas posteriormente.

    Linux utiliza la técnica de paginación por
    antigüedad (LRU Last Redently Used) para escoger de forma
    equitativa y justa las páginas a ser intercambiadas o
    descartadas del sistema. Este esquema implica que cada
    página del sistema ha de tener una antigüedad que ha
    de actualizarse conforme la página es accedida. Cuanto
    más se accede a una página más joven es; por
    el contrario cuanto menos se utiliza más vieja e
    inútil. Las páginas viejas son las mejoras
    candidatas para ser intercambiadas (Principio de Localidad
    Temporal).

    Gracias a los mecanismos de memoria virtual se puede
    conseguir fácilmente que varios procesos compartan
    memoria. Todos los accesos a memoria se realizan a través
    de las tablas de páginas y cada proceso tiene su propia
    tabla de páginas.

    Partes: 1, 2

    Página siguiente 

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter