Pregunta ¿Qué es Paginación en la gestión de memoria?


Solo estaba leyendo Operating System Principles by Silberschatz et al cuando me encontré con paginación en la gestión de memoria. Estoy un poco confundido al respecto.
Se afirma que Memoria física(Supongo que es RAM) se divide en marcosy memoria lógica se divide en páginas. La CPU genera direcciones lógicas que contienen número de página y un compensar. Este número de página se usa para recuperar el número de fotograma de un tabla de página que da el dirección base
por lo que la dirección física se calcula como base + desplazamiento.
Mi pregunta es:

  • ¿Se mantiene la tabla de páginas para cada proceso?
  • Yo lógicamente creo que la respuesta sería yes ya que cada proceso necesitará asignar sus propias páginas a marcos. Puedo estar equivocado. Por favor aclara

    También:

  •  la paginación y la segmentación (donde se crean "agujeros" en la memoria) son dos técnicas totalmente diferentes que no se usan en combinación. ¿Correcto?

  • 4


    origen


    Wikipedia es tu amigo. - martineau
    @martineau Wikipedia también es un amigo muy técnico que puede tener todos los datos y hechos que necesita, pero no es tan bueno para explicarle algo. - Vian Esterhuizen
    Sospecho que la respuesta a ambas preguntas del OP depende del sistema operativo. - martineau
    @martineau ... depende del sistema operativo y la arquitectura del hardware - artistoex
    Un sistema operativo en el que no tiene una tabla de páginas de nivel superior individual para cada proceso se denomina sistema operativo "Espacio de direcciones único". Singularity es afaik un ejemplo reciente de dicha elección. - sylvainulg


    Respuestas:


    La segmentación produce direcciones lineales, la paginación produce direcciones físicas

    En cuanto a las direcciones lógicas y físicas, de Bovet & Cesati (Understanding the Linux Kernel), tengo esto:

    how logical addresses map to physical

    Como puede ver, la paginación y la segmentación se llevan a cabo por unidades separadas del hardware. Aunque pueden tener lugar al mismo tiempo, el sistema operativo puede desactivar la unidad de segmentación (por lo que las direcciones se tratan efectivamente no como lógicas sino lineales).

    Generalidades

    Puede que ya sepas esto, pero lo dejo aquí de todos modos para que esté completo.

    Las páginas ocupan marcos: intercambio

    En lo que respecta a Silberschatz capítulos 8, f se refiere, marcos refiérase al diseño de la memoria física. El SO divide la RAM en áreas de marcos de tamaño igual y convenientemente dimensionado (por ejemplo, 4K). Páginas son datos de tamaño de fotograma, la unidad básica de reemplazo de página.

    Puede haber más páginas que marcos disponibles. Algunas páginas ocupan marcos, algunas páginas se intercambian en el disco.

    Si se intercambia una página desde el disco, se alinea con un cierto cuadro en la memoria (cualquiera que sea el algoritmo de reemplazo de página que se ajuste).

    Los sistemas operativos y el hardware cooperan

    Al igual que con muchos objetivos del sistema operativo, la gestión de la memoria siempre funciona en concierto con el hardware: tanto el SO como el hardware cooperan para hacer el trabajo. Cómo lo hacen en un escenario realista depende de

    1. el conjunto de primitivas de administración de memoria que proporciona el hardware (paginación, segmentación y qué diablos existe), y
    2. qué subconjunto del sistema operativo realmente utiliza en la arquitectura y situación particulares (Linux @ z Architecture es diferente de Linux @ Intel es diferente de Windows @ Intel es diferente de Window @ Intel @ Boot-up)

    Por ejemplo, solo unas pocas arquitecturas proporcionan segmentación y la figura anterior se aplica a x86. Linux, por razones de portabilidad, no lo explota mucho. Si recuerdo correctamente de Tanenbaum, OS / 2 fue el único sistema operativo que explotó la segmentación de Intel en toda su extensión.

    Hasta ahora esta Respuesta.

    Dependiendo de por qué necesita saber esto, el siguiente enfoque podría ayudarlo (me ha ayudado).

    Le sugiero que primero se familiarice con el hardware y las primitivas individuales. Si Silberschatz vaga sobre este punto, pruebe con Tanenbaum (Sistemas Operativos Modernos) o Hennessy & Patterson (Computer Architechture, A Quantitative Approach). Si su curiosidad no está satisfecha para entonces, vea cómo un sistema operativo particular la usa en diversas situaciones en una plataforma en particular.


    0





    ¿Se mantiene la tabla de páginas para cada proceso?

    Si el sistema debe proporcionar un espacio de direcciones virtuales seguro para cada proceso, entonces sí.

    la paginación y la segmentación (donde se crean "agujeros" en la memoria) son dos técnicas totalmente diferentes que no se usan en combinación. ¿Correcto?

    No, hay un esquema de memoria virtual llamado segmentación paginada. (Recuerdo que este concepto causó exasperación por parte de mis compañeros de clase cuando el prof. Lo introdujo. Si Silberschatz y otros no mencionaron esto, entonces ese libro de texto está incompleto). El objetivo original de la memoria virtual paginada era proporcionar un gran espacio de direcciones para ejecutar una gran programa en una computadora con RAM limitada. En una memoria virtual paginada simple con multiprocesamiento, no habría restricciones para que dos procesos compartan una página. Pero una memoria virtual segmentada está destinada a multiprocesamiento y aislaría cada proceso a sus propios segmentos.

    Si bien puede parecer redundante, el esquema típico de memoria virtual utilizado en un sistema operativo seguro usa tanto páginas como segmentos, donde los segmentos son imágenes binarias de los procesos. El HW típico probablemente solo admitirá páginas de tamaño fijo. La segmentación se implementa en el sistema operativo. El concepto de segmentos facilita la gestión de múltiples procesos en la memoria. El concepto de páginas facilita una huella de memoria mínima en cada proceso. Una biblioteca de tiempo de ejecución compartida sería un caso especial de un segmento de ejecución de solo escritura protegido contra escritura que se podía compartir entre procesos.

    Tenga en cuenta que "segmento" en los esquemas de memoria virtual normalmente se refieren a un fragmento de memoria que es lógicamente coherente y tiene una longitud arbitraria. Este tipo de "segmento" no se debe confundir con el "segmento" Intel 8086/88 (también conocido como x86) que comienza en un límite de dirección de 16 bytes (es decir, un "párrafo") y está restringido a 64 KB de tamaño. Los segmentos X86 son una variación de la banca de memoria en lugar de memoria virtual.

    Los esquemas de banca de memoria son para sistemas que tienen un tamaño de dirección pequeño (por ejemplo, 16 bits) pero un espacio de memoria física más grande (por ejemplo, hasta 1 MB de memoria direccionable). La memoria virtual es (o fue diseñada para) la situación opuesta: el tamaño de la dirección es grande (por ejemplo, al menos 32 bits) y la memoria instalada es menor que el espacio de direcciones (no siempre es cierto hoy en día). La memoria virtual suele ser completamente invisible para los programas de usuario, mientras que el programador Intel 8086/88 debe conocer modelos de memoria pequeños / medianos / grandes y lejos versus cerca punteros. Por cierto, esa conferencia en la que aprendí por primera vez sobre la memoria virtual y la "segmentación paginada" ocurrió antes de Intel diseñó el i8086.

    Como texto de apoyo, Wikipedia también menciona que la segmentación y la paginación se pueden combinar (en hardware).


    0



    Linux usa segmentos solo cuando tiene que - artistoex
    @artistoex - ¿Te refieres a los segmentos x86? Ver respuesta editada. - sawdust
    Sí, exactamente, segmentos de inteligencia. - artistoex
    Acaban de decir en el libro de texto que los dos también pueden usarse en combinación. - Fasih Khatib