Comment Linux est-il simultanément 32 bits et 64 bits? Ou est-ce quelque chose géré dans la glibc?

Comment est Linux simultanément 32 bits et 64 bits? Ou est-ce quelque chose géré dans la glibc?

Je lance CentOS 5.3 et c’est une version “64 bits”; bien que je construise des choses pour 64 bits et 32 ​​bits. D’après ce que je pense savoir, Windows est censé avoir un émulateur 32 bits. Est-ce que Linux fait la même chose? Est-ce dans l’espace utilisateur ou dans le kernel?

Si libc le gère, est-ce un peu comme un émulateur qui dit: je vais créer un lien avec des applications 32 bits, mais parler 64 bits au kernel?

Le processeur peut exécuter les instructions 64 et 32 ​​bits et le kernel peut basculer entre les modes. La seule limitation est que vous ne pouvez pas lier de programmes 32 bits à des bibliothèques 64 bits. Vous devez donc avoir installé les versions 32 et 64 bits de libc, etc.

Rien n’empêche le processeur de passer de 64 bits à 32 bits. Cela change juste.

Vous pouvez avoir un kernel 64 bits et exécuter des applications 32 bits. Vous pouvez même avoir un kernel 32 bits et exécuter des applications 64 bits (Mac OS X).

Cependant, vous avez besoin des librairies 32 bits ou 64 bits, ce qui explique pourquoi vous pouvez voir des fichiers appelés lib64 ou lib32 sous Linux pour les bibliothèques 64 bits ou 32 bits.

Les processeurs x86_64 étant conçus sur la technologie x86, ils peuvent toujours prendre en charge les programmes 32 bits sans émulation matérielle, comme ce dont vous avez besoin pour exécuter des programmes x86 dans un environnement PowerPC ou Sparc. Sous Linux, il vous suffit d’installer les bibliothèques de logiciels nécessaires pour exécuter le logiciel 32 bits.