GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la diferencia entre PAE de 32 bits y núcleos de 64 bits?

El kernel ve la memoria física y proporciona una vista de los procesos. Si alguna vez se preguntó cómo un proceso puede tener un espacio de memoria de 4 GB si toda su máquina tiene solo 512 MB de RAM, es por eso. Cada proceso tiene su propio espacio de memoria virtual. Las direcciones en ese espacio de direcciones se asignan a páginas físicas o al espacio de intercambio. Si desea intercambiar espacio, deberán volver a intercambiarse en la memoria física antes de que su proceso pueda acceder a una página para modificarla.

El ejemplo de Torvalds en la respuesta de XQYZ (DOS highmem) no es demasiado descabellado, aunque no estoy de acuerdo con su conclusión de que PAE es generalmente algo malo. Resolvió problemas específicos y tiene sus méritos, pero todo eso es argumentativo. Por ejemplo, el implementador de una biblioteca puede no percibir la implementación como fácil, mientras que el usuario de esa biblioteca puede percibir esta biblioteca como muy útil y fácil de usar. Torvalds es un implementador, por lo que está obligado a decir lo que dice la declaración. Para un usuario final, esto resuelve un problema y eso es lo que le importa al usuario final.

Por un lado, PAE ayuda a resolver otro problema heredado en máquinas de 32 bits. Permite que el kernel asigne los 4 GB completos de memoria y evite el agujero de memoria BIOS que existe en muchas máquinas y hace que un kernel puro de 32 bits sin PAE "vea" solo 3,1 o ​​3,2 GB de memoria, a pesar de los 4 GB físicos.

De todos modos, para el núcleo de 64 bits es una relación simétrica entre la página física y las páginas virtuales (dejando de lado el espacio de intercambio y otros detalles). Sin embargo, el kernel PAE mapea entre un puntero de 32 bits dentro del espacio de direcciones del proceso y una dirección de 36 bits en la memoria física. Aquí se necesita más contabilidad. Palabra clave:"Tabla de página extendida". Pero esto es un poco más una cuestión de programación. Esta es la principal diferencia. Más contabilidad en comparación con un espacio de direcciones lineal completo. Para PAE son fragmentos de 4 GB como mencionaste.

Aparte de eso ambos PAE y 64 bits permiten páginas grandes (en lugar de las páginas estándar de 4 KB en 32 bits).

Capítulo 3 del Volumen 1 del Manual del procesador Intel tiene una descripción general y el Capítulo 3 del Volumen 3A ("Administración de memoria en modo protegido") tiene más detalles, si desea leer sobre él.

A mí me parece que esta es una gran distinción que parece ser ignorada por muchas personas.

Estás bien. Sin embargo, la mayoría de las personas son usuarios, no implementadores . Por eso no les importará. Y siempre que no requiera grandes cantidades de memoria para su aplicación, a muchas personas no les importa (especialmente porque hay capas de compatibilidad).


Es posible que desee ver lo que dice Linus Torwalds al respecto aquí:

PAE le dio la vuelta a ese hecho tan simple y arruinó las cosas de manera real. A quien se le ocurrió la idea era totalmente incompetente y se había olvidado de todos los dolores de DOS HIGHMEM. Hay una muy buena razón por la que dejamos atrás el 286 y comenzamos a usar el 386, en lugar de tener basura HIGHMEM con ventanas en un espacio físico más grande.

[...]

Así que repite conmigo:PAE nunca arregló nada. Fue un error. Fue un fracaso total y el resultado de que los ingenieros de hw no entendieran el software.


Linux
  1. ¿Cuál es la diferencia entre el búfer y la memoria caché en Linux?

  2. ¿Cuál es la diferencia entre escribir en un archivo y una memoria mapeada?

  3. ¿Cuál es la diferencia entre fsck y e2fsck?

  4. ¿Cuál es la diferencia entre ls y l?

  5. ¿Cuál es la diferencia entre $(CC) y $CC?

¿Cuál es la diferencia entre los núcleos de macOS y Linux?

¿Cuál es la diferencia entre Linux y Unix?

¿Cuál es la diferencia entre Shell de inicio de sesión y sin inicio de sesión?

¿Qué es un Hipervisor? ¿Cuál es la diferencia entre el tipo 1 y 2?

¿Cuál es la diferencia entre curl y Wget?

¿Cuál es la diferencia entre DMA y E/S mapeada en memoria?