32 bit çekirdeğinde 64 bit kullanıcı alanı yazılımını çalıştırmak için ne gerekir?


10

Linux ve Windows'da, 32-bit ve 64-bit yazılımları yan yana çalıştırabileceğim multiarch / WoW içeren bir sisteme sahip olmak için 64 bit çekirdeğe ihtiyacım olduğu duruma alışkınım.

Ve sonra, yıllar önce birisi bana MacOS 10.6 Snow Leopard'ın çekirdekle 32 bit modunda 32 bit modunda çalıştırabileceğini gösterdiğinde aklımı aldı. Bu büyük ölçüde unutulmuş olabilir çünkü bir defalık teknoloji geçişiydi. Mobil alanda eğrinin önündeki donanımla birlikte, bildiğim kadarıyla iOS ve Android için 64 bit'e geçişte buna hiç gerek yoktu.

Sorum: 32 bit Linux çekirdeğinde (i386 veya armhf) aynı özelliği elde etmek için ne gerekir?

Bunun muhtemelen önemsiz olmadığını anlıyorum. Öyleyse, Microsoft özelliği Windows XP 32 bit'e yerleştirmiş olabilir. Yine de genel gereksinimler nelerdir? Hiç önerilen bir yama ya da kavram kanıtı oldu mu?

Gömülü dünyada 64 bit destek aygıt sürücülerinde uzun süre geride kalabileceğinden bunun özellikle yararlı olacağını düşünüyorum.


Snow Leopard'ın 32 bit çekirdekli 64 bit uygulamaları çalıştırabileceğinden emin misiniz? Çekirdek IIRC de yetenekli donanımda 64-bit olarak güncellendi.
muru


Yanıtlar:


16

64 bit uygulamaların çalıştırılması, çekirdekten biraz destek gerektirir: çekirdeğin CPU'da 64 bit kod çalıştırmayı desteklemek için gerektiğinde en azından sayfa tablolarını, kesme tablolarını vb. Ayarlaması gerekir ve tam 64 bit'i kaydetmesi gerekir uygulamalar arasında geçiş yaparken (ve uygulamalardan çekirdeğe ve arkaya) bağlam. Bu nedenle, tamamen 32 bit bir çekirdek 64 bit kullanıcı alanını destekleyemez.

Ancak çekirdek çekirdek alanında 32 bit kod çalıştırırken kullanıcı alanında 64 bit kodu destekleyebilir. Bu, 32 bit uygulamaları 64 bit çekirdekli çalıştırmak için gereken desteğe benzer şekilde işlemeyi içerir: temel olarak, çekirdek uygulamaların beklediği 64 bit arabirimleri desteklemelidir. Örneğin, 64-bit kodun çekirdeği çağırması ve parametrelerin anlamını (her iki yönde) koruması için bir mekanizma sağlaması gerekir.

O zaman soru buna değip değmeyeceği. Mac ve diğer bazı sistemlerde, 32 bit çekirdek kodunu desteklemesi, sürücülerin aynı anda anahtarı yapmak zorunda olmadığı anlamına gelen bir durum ortaya çıkabilir. Linux'ta geliştirme modeli farklıdır: büyük değişiklikler yapıldığında çekirdek içindeki herhangi bir şey gerektiği gibi taşınır ve çekirdek dışındaki hiçbir şey çekirdek geliştiricileri tarafından gerçekten desteklenmez. 64 bit çekirdeği olan 32 bit kullanıcı alanını desteklemek kesinlikle yararlı ve çabaya değer (en azından x86-64 desteği eklendiğinde), 32'de 64 bit için yapılması gereken bir durum olduğundan emin değilim -bit...


Teşekkürler bu yardımcı olur, ancak Gilles unix.stackexchange ile ilgili cevabını gösterdiğine rağmen, tamlık için daha fazla arzu edildiğini düşünüyorum. Yorum akışında gömülü olarak topladığım şeyden, görünüşe göre bu mimari sınırlamalar nedeniyle armhf üzerinde hala im386 için teorik olarak mümkün değil mi? Yapılacak durum: ilk motivasyon, vakfın yol haritasının Pi Zero ile uyumluluğu korurken yıllar boyunca tek bir çekirdeği korumak olduğu Raspbian idi.
jdonald

3

Kar leoparı, Intel 64 bit CPU'da 64 bit ikili dosyaları çalıştırabildi.

Ayrıca, efi'niz zaten 64 bit olduğunda 64 bit çekirdeği ile önyükleme yapabildi (Macbook "geçiş modeli" pro üretim grubum zaten böyle bir makineydi).

Herhangi bir emülasyon yoktu, 32 bit modunda afair açarken daha düşük bir performans maliyeti ödediniz.

Saf 32 bit CPU'larda, 64 bit kodun nasıl yorumlanacağı hakkında hiçbir fikri olmadığı için bunu yapamazsınız. Yazılımla öykünmediğiniz sürece, bu tür geleneksel güçsüz gömülü makine sınıfı için yavaşlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.