PAE não altera nada em relação a endereços virtuais. Como o nome sugere, é apenas sobre endereços físicos. Como programador de aplicativos, o PAE não altera nada para você. Seu programa ainda tem um espaço de endereçamento de 32 bits, do qual o kernel leva aproximadamente 1 bit (o Linux concede 1GB, 2GB ou 3GB ao espaço do usuário, dependendo das opções de compilação). Se você quer um espaço de endereçamento maior, você precisa de um sistema de 64 bits.
O ponto da PAE é permitir que o kernel resolva mais de 4GB de RAM física. Para utilizar toda essa RAM, você precisa de vários processos, cada um dos quais pode mapear no máximo 2 GB (ou 1 GB ou 3 GB).
No modo PAE, as tabelas MMU mapeiam endereços virtuais de 32 bits para endereços físicos de 40 bits, com uma tabela de três níveis (ao contrário do modo não PAE, em que as tabelas MMU mapeiam endereços virtuais de 32 bits para endereços físicos de 32 bits) com uma tabela de dois níveis).
A indicação “48 bits virtual” refere-se às capacidades da CPU. Acho que isso significa que a CPU é de 64 bits (ou seja, uma que suporta amd64 x86-64 ) . Para usar endereços virtuais de 48 bits, você precisa executar um sistema operacional de 64 bits. Aqui, 48 bits é um pouco confuso para um programador de aplicativos: a CPU traduz apenas 48 bits do endereço, mas o endereço é codificado em 64 bits - os ponteiros ocupam 8 bytes, não 6. Os 16 bits superiores podem conter additional tags usadas pelo sistema operacional .