2009-10-01 23 views
6

Linux aynı anda 32bit ve 64bit nasıldır? Yoksa glibc'de bir şey mi var?Linux aynı anda 32bit ve 64bit nedir? Yoksa glibc'de bir şey mi var?

CentOS 5.3 çalıştırıyorum ve bu bir "64 bit" sürümüdür; Her ne kadar 64 bit ve 32 bit için bir şeyler inşa etsem de. Bildiğim kadarıyla, Windows'un sözde bir 32bit öykünücüsü var. Linux aynı şeyi yapıyor mu? Kullanıcı alanı veya çekirdek alanında mı?

Eğer libc işliyorsa, bu tür bir 32 bit uygulama ile bağlantı kuracağım ama çekirdeğe 64 bit konuşacağım bir emülatör gibi mi?

cevap

5

İşlemci, hem 64 hem de 32 bit yönergelerini yürütebilir ve çekirdek modlar arasında geçiş yapabilir. Tek sınırlama, 32bit programları 64bit kitaplıklarına karşı bağlayamamanızdır, böylece hem 32 hem de 64bit libc sürümleri yüklü olmalıdır.

+4

Soruyu daha doğrudan yanıtlamak için 64-bit bir program 64-bit kernele "konuşur" ve 32-bit bir program "konuşur" 32-bit çekirdeğe, ve çekirdek her ikisini de anlar, çünkü "CONFIG_IA32_EMULATION" Çekirdek derlendiğinde ayarlayın. Aslında, 64-bit programlar bile 32-bit syscalls yapmak için izin verilir, bu biraz sapık olsa da ... – ephemient

+0

@ephemient: ne olup bittiğini açıklayan sizin layman açıklama için bana en iyi açıkladı. Hemen var. +1 – insaner

3

Hiçbir şey, cpu 64bit'den 32bit'e geçmek için hiçbir şey durmuyor. Sadece geçer.

64 bit çekirdeğe sahip olabilir ve 32bit uygulamaları çalıştırabilirsiniz. Hatta 32bit çekirdeğe sahip olabilir ve 64bit uygulamaları çalıştırabilirsiniz (Mac os x). Ancak, 32bit veya 64bit olmak için kullandıkları kütüphanelere ihtiyacınız var, bu nedenle 64 bit veya 32 bit liberaller için linux üzerinde lib64 veya lib32 olarak adlandırılan dosyaları görebilirsiniz.

+0

Linux, 32 bit kernel üzerinde 64 bit kullanıcı alanını çalıştırmayı desteklemiyor. – ephemient

+0

Yine de mümkündür. xnu yapar. –

1

x86_64 işlemcileri x86 teknolojisine göre tasarlandığından, bir PowerPC veya Sparc ortamında x86 programlarını çalıştırmanız gerekeceği gibi herhangi bir donanım öykünmesi olmadan 32 bit programları destekleyebilirler. Linux'ta yapmanız gereken tek şey, 32 bit yazılımı çalıştırmak için gerekli yazılım kitaplıklarını kurmaktır.

İlgili konular