Como o Linux é simultaneamente 32 bits e 64 bits? Ou isso é algo tratado no Glibc?
-
19-09-2019 - |
Pergunta
Como o Linux é simultaneamente 32 bits e 64 bits? Ou isso é algo tratado no Glibc?
Eu corro o CentOS 5.3 e é uma versão "64 bits"; Embora eu construa coisas por 64 bits e 32 bits. Pelo que acho que sei, o Windows supostamente tem um emulador de 32 bits. Linux faz a mesma coisa? Está no espaço do usuário ou no espaço do kernel?
Se a LIBC lida com isso, é como um emulador que diz, vou vincular -me a aplicativos de 32 bits, mas falo 64 bits no kernel?
Solução
A CPU pode executar instruções de 64 e 32 bits e o kernel pode alternar entre os modos. A única limitação é que você não pode vincular programas de 32 bits contra bibliotecas de 64 bits, portanto, você deve ter versões de 32 e 64 bits do LIBC, etc.
Outras dicas
Nada está impedindo que a CPU mude de 64 para 32 bits. Apenas troca.
Você pode ter um kernel de 64 bits e executar aplicativos de 32 bits. Você pode até ter um kernel de 32 bits e executar aplicativos de 64 bits (Mac OS X).
No entanto, você precisa dos liberes que eles usam para também ter 32 bits ou ou 64 bits, e é por isso que você pode ver os arquivos chamados lib64 ou lib32 no Linux para os bits de 64 bits ou 32 bits.
Como os processadores x86_64 são projetados sobre a tecnologia X86, eles ainda podem suportar programas de 32 bits sem qualquer emulação de hardware, como o que você precisaria para executar programas X86 em um ambiente PowerPC ou SPARC. No Linux, tudo o que você precisa fazer é instalar as bibliotecas de software necessárias para executar o software de 32 bits.