Continuamos de la anterior noticia.
El DEP y sus consecuencias:
Cuando en 2003 AMD presentó los procesadores Athlon 64, una novedad de estos era la presencia de la nueva función llamada NX (No Execute). Intel también la integró en algunos Pentium M, 4 y en los Pentium D, para luego terminar integrándola en todos los Core Duo/Solo, Core 2 Duo/Quad y demás, con el nombre XD (eXecute Disable). Ambos nombres comerciales hacen referencia a DEP (prevención de ejecución de datos), que es una tecnología que le permite al sistema marcar como no ejecutables ciertas direcciones de memoria a fin de impedir que se ejecute código desde ahí, para combatir desbordamientos de búffer por parte de software nocivo. Si se opta por DEP implementado en el procesador (capaz de proteger tanto los procesos en modo núcleo y usuario) en un sistema operativo compatible, éste requiere forzosamente la activación del modo PAE, dado que el DEP por hardware necesita el nivel de paginación adicional que ofrece PAE para disponer de más tablas donde marcar qué direcciones son ejecutables y cuáles no. Es así, incluso cuando se pretenda usar menos de 4 GB.
He aquí el problema de la implementación del DEP en el Service Pack 2 de Windows XP. Como señalamos antes, en modo PAE algunos punteros del núcleo pasan a ser de 64 bits, situación para la cual los controladores deben estar diseñados. Dada la gran cantidad de controladores de calidad dudosa presentes en el ámbito doméstico y que podrían no estar diseñados debidamente para modo PAE, lo cual comprometería gravemente la estabilidad del sistema, Microsoft optó por crear un núcleo PAE recortado, donde se conservan los tres niveles de paginación exigidos por el DEP, pero que por lo demás actúa como el núcleo normal sin PAE y que nunca remapeará la memoria.
Este modo PAE recortado lo encontramos principalmente en el Service Pack 2/3 de Windows XP y en las versiones x86-32 de Windows Vista. Siendo además el motivo de la paradoja de que con un Windows 2000 Professional o un XP RTM/SP1 podamos usar 4 GB al completo si el hardware lo permite, mientras que con el SP2/SP3 de XP o Vista no es posible.


Los 64 bits (AMD64/EM64T):
Los Athlon 64 presentaron la novedad de ser los primeros procesadores x86 con los registros ampliados a 64 bits y con un límite de direccionamiento físico de 52 bits (el bus de datos ya era de 64 bits desde el Pentium), aunque realmente se usan 48 bits para el espacio de memoria virtual (los demás bits, desde el 48 hasta el 63 son copias del 47, llamados direcciones no canónicas, dado que se consideró que aumentarían la complejidad del proceso sin beneficio real), y donde el bus de direcciones para memoria física de los diferentes procesadores AMD64/EM64T es menor: 48 bits para los K10, 40 bits para los K8 y Xeon, y 36 bits para los Core 2. En modo de 64 bits el PAE está siempre activo, siendo realmente un derivado ampliado del modo PAE, pero con un cuarto nivel de paginación. AMD lo denominó como AMD64, mientras que Intel lo implementó con el nombre EM64T.
Un sistema operativo de 64 bits puede direccionar, en teoría, más memoria que uno de 32 bits, además de eliminar la restricción de 2 GB por proceso sin tener que recurrir a la API AWE, la cual permite que los procesos ejecutados en un SO Windows x86-32 puedan reservarse más de 2 GB de memoria física.
A pesar de ello, el que sea la solución o no para que se reconozcan los 4 GB enteros o más dependerá de la placa base, pues si no permite remapeado de memoria se encontrará con la misma limitación que los SO x86-32, con o sin PAE.
Resumen de cuándo podremos usar o no 4 GB o más:
- Si nuestra placa base no permite remapear la memoria MMIO no hay nada que hacer para usar los 4 GB enteros o más, por mucho PAE que se habilite o por mucho S.O. de 64 bits que se instale.
- En el caso de que nuestra placa base sí lo permita, dependeremos entonces del S.O. que usemos. Si se trata de un sistema x86-32 Windows XP SP2-SP3 o Vista no será posible direccionar toda la memoria debido al recorte que sufrió su núcleo PAE. En cambio, las versiones x86-32 Enterprise (Advanced Server en Windows 2000) y Datacenter de Windows Server 200x sí que serán capaces de reconocer 4 GB o más con el hardware adecuado. Por último, con un SO x86-64 también lo conseguiremos. Como comentamos antes, con un Windows 2000 Professional o con un XP RTM/SP1 también lograremos disponer de hasta 4 GB, siempre que el hardware lo permita.
- Es importante señalar (gracias wilddog2040) que en las versiones x86-32 de Windows, a partir del Service Pack 1 se indicará en las propiedades de sistema la cantidad de memoria física instalada, no la disponible para el S.O. Vista x86-32. Mientras que el administrador de tareas mostrará la cantidad de memoria disponible, como antes del SP1.