2009-10-01 6 views
6

W jaki sposób Linux jest jednocześnie 32-bitowy i 64-bitowy? A może coś jest obsługiwane w glibc?W jaki sposób linux jest jednocześnie 32-bitowy i 64-bitowy? A może coś jest obsługiwane w glibc?

Uruchamiam CentOS 5.3 i jest to wersja "64-bitowa"; chociaż buduję rzeczy na 64-bitowe i 32-bitowe. Z tego, co myślę, że wiem, Windows podobno ma 32-bitowy emulator. Czy Linux robi to samo? Czy to w przestrzeni użytkownika lub w przestrzeni jądra?

Jeśli libc sobie z tym poradzi, czy jest to coś w rodzaju emulatora, który mówi, że połączę się z aplikacjami 32-bitowymi, ale będę mówił 64-krotnie do jądra?

Odpowiedz

5

Procesor może wykonywać zarówno instrukcje 64, jak i 32-bitowe, a jądro może przełączać się między trybami. Jedynym ograniczeniem jest to, że nie można łączyć programów 32-bitowych z bibliotekami 64-bitowymi, więc musisz mieć zainstalowane 32-bitowe i 64-bitowe wersje libc.

+4

Aby odpowiedzieć na to pytanie bardziej bezpośrednio, 64-bitowy program "mówi" 64-bitowo do jądra, a 32-bitowy program "mówi" 32-bitowy do jądra, a jądro rozumie oba, zakładając, że "CONFIG_IA32_EMULATION" było ustawione, gdy jądro zostało skompilowane. W rzeczywistości 64-bitowe programy mogą nawet tworzyć 32-bitowe układy, choć to trochę perwersyjne ... – ephemient

+0

@ephemient: twoje laikie wyjaśnienie tego, co się dzieje, wyjaśniło to najlepiej dla mnie. Mam natychmiast. +1 – insaner

3

Nic nie powstrzymuje procesora przed przejściem z 64-bitowego na 32-bitowy. Po prostu się przełącza.

Możesz mieć jądro 64-bitowe i uruchamiać aplikacje 32-bitowe. Możesz nawet mieć 32-bitowe jądro i uruchamiać 64-bitowe aplikacje (Mac os x).

Jednak potrzebujesz, aby używane przez nich libary były 32-bitowe lub 64-bitowe, dlatego możesz zobaczyć pliki o nazwie lib64 lub lib32 dla linuksa dla bibliotek 64-bitowych lub 32-bitowych.

+0

Linux nie obsługuje 64-bitowej przestrzeni użytkownika w 32-bitowym jądrze. – ephemient

+0

Jest to jednak możliwe. xnu to robi. –

1

Ponieważ procesory x86_64 są zaprojektowane w oparciu o technologię x86, nadal mogą obsługiwać programy 32-bitowe bez emulacji sprzętowej, na przykład w celu uruchomienia programów x86 w środowisku PowerPC lub Sparc. W systemie Linux wszystko, co musisz zrobić, to zainstalować niezbędne biblioteki oprogramowania, aby uruchomić oprogramowanie 32-bitowe.

Powiązane problemy