2009-10-01 8 views
6

¿Cómo es Linux simultáneamente 32bit y 64bit? ¿O es algo manejado en glibc?¿Cómo es linux simultáneamente 32bit y 64bit? ¿O es algo manejado en glibc?

Ejecuto CentOS 5.3 y es una versión de "64 bit"; aunque construyo cosas para 64 bit y 32 bit. Por lo que creo saber, Windows supuestamente tiene un emulador de 32 bits. ¿Linux hace lo mismo? ¿Está en el espacio de usuario o en el kernel?

Si libc lo maneja, ¿es como un emulador que dice: voy a vincular con aplicaciones de 32 bits, pero hablo 64 bits para el kernel?

Respuesta

5

La CPU puede ejecutar instrucciones de 64 y 32 bits y el núcleo puede alternar entre modos. La única limitación es que no puede vincular programas de 32 bits con bibliotecas de 64 bits, por lo que debe tener instaladas versiones de 32 bits y 64 bits de libc.

+4

Para responder la pregunta más directamente, un programa de 64 bits "habla" 64 bits al kernel y un programa de 32 bits "habla" 32 bits al kernel, y el kernel entiende ambos, suponiendo que 'CONFIG_IA32_EMULATION' era establecido cuando el núcleo fue compilado. En realidad, incluso los programas de 64 bits pueden hacer llamadas de sistema de 32 bits, aunque eso es un poco perverso ... – ephemient

+0

@ephemient: tu explicación de lo que está sucediendo me lo ha aclarado mejor. Tengo t de inmediato. +1 – insaner

3

Nada impide que la CPU cambie de 64 bits a 32 bits. Simplemente cambia.

Puede tener un núcleo de 64 bits y ejecutar aplicaciones de 32 bits. Incluso puede tener un kernel de 32 bits y ejecutar aplicaciones de 64 bits (Mac os x).

Sin embargo, necesita las librerías que utilizan para ser también de 32 bits o de 64 bits, por lo que es posible que vea archivos llamados lib64 o lib32 en Linux para las bibliotecas de 64 bits o de 32 bits.

+0

Linux no admite la ejecución de espacio de usuario de 64 bits en un núcleo de 32 bits. – ephemient

+0

Es posible sin embargo. xnu lo hace. –

1

Debido a que los procesadores x86_64 están diseñados con tecnología x86, aún pueden admitir programas de 32 bits sin emulación de hardware, como lo que necesitaría para ejecutar programas x86 en un entorno PowerPC o Sparc. En Linux, todo lo que necesita hacer es instalar las bibliotecas de software necesarias para ejecutar el software de 32 bits.

Cuestiones relacionadas