32 bit işletim sistemi 64 bit işlemcide çalışabilir mi?


25

32 bit işletim sistemi ve 64 bit işletim sistemi arasındaki fark nedir? 32 bit işletim sistemi 64 bit işlemcide çalışabilir mi?


Eğer Windows hakkında konuşuyorsanız (ve Win32 etiketi bunu gösteriyor gibi görünüyor), o zaman evet, kesinlikle - Vista ve Win7 64-bit, bir uyumluluk katmanı üzerinden neredeyse tüm 32-bit uygulamaları destekliyor - henüz bir şey bulamadım 64-bit'te (sistem düzeyinde sürücüler hariç) iyi çalışma
marc_s

5
Sorun, x86 uygulamalarının Win Vista x64 olduğunu söylemekten ziyade 64 bit işlemcili bir kutuya Win Vista x86 deyince yüklenip yüklenemeyeceği gibi görünüyor.
KTC

Yanıtlar:


34

Sorunuz mimariye özgüdür. x64 aslında x86 mimarisinin bir uzantısıdır. 64 bit adres alanını destekler. Bazı yeni talimatlar ve yeni kayıtlar sağlar.

Bir x64 makinede 32-bit x86 Windows çalıştırabilirsiniz. Bunu Itanium 64-bit sistemlerde yapamayacağınızı unutmayın.


16

64 bit işlemci hem 32 hem de 64 işletim sistemini çalıştırabilir (en az bir x64 olabilir). 32 bit işlemci, yalnızca 32 yerel olarak çalışabilir.

Fark çoğunlukla İşaretçi / Referansın büyüklüğü ile ilgilidir. 64 bit makinelerde, 64 bit adres aralığında bir adrese başvurabilirsiniz (böylece 2 ^ 64 bayt bellek verir). 32 bit'te yalnızca 2 ^ 32 bayta (= 4 GB) adres verebilirsiniz. Şimdi mevcut bilgisayarlara bakarsanız, neden dünyanın 64 bit'e geçtiği açıktır: 32 bit artık tüm RAM'lere kolayca erişemiyor.

X64'te (AMD / Intel) 64 bitlik ek avantajlara sahipsiniz. CPU'nun daha fazla kaydı var ve bu nedenle daha verimli kodlar veriyor.

Diğer mimarilerde 64 ve 32 bit arasındaki farklar daha az belirgindir. Örneğin Nintendo 64 (hatırladın mı?) 64 bit bir makineydi ancak kodunun çoğu 32 bit idi. Yani bu durumda 64 bit bir pazarlama hilesi olarak daha fazlasını yaptı.


3

Halen kabul edilen cevap genel olarak doğrudur, ancak tam olarak öyle değildir. Gerçekten "32-bit CPU" veya "" 64-bit CPU "olarak adlandırılan tek bir şey yoktur - bu, CPU mimarisinin sadece küçük bir kısmına atıfta bulunan bir açıklamadır. CPU ve bellek arasındaki adres seçim hatlarının, yani bellek işlemleri için uygun olan adres alanı .

CPU'nun bir işlemci ve bellek arasındaki telleri oturtup ördüğü (ördüğü) zaman kullandığı eski zamanlarda, ya 32'yi kullanmak zorunda kalacaktınız (teorik olarak, çünkü o zamanlar yoktu) CPU ile bellek denetleyicisi arasında 64 kabloya erişmek istediğiniz bellek adresini belirtmek için kullanılacak kablolar. Örneğin, 2 bitlik bir bellek mimarisine sahip olduğumuzu varsayalım: 00 gönderildiğinde 0, 01 adresini seçer, 1 adresini seçer, 10 adres 2'yi seçer ve 11 adres 3'ü seçer. Bu 2 bit bize 2 ^ 2 bayt verir RAM (4 bayt).

32 bit CPU kullanıyorsanız ve daha fazla belleği destekleyebilmeniz için CPU ve bellek denetleyicisi arasına 32 kablo eklerseniz, artık 32 bit çalıştırabilen bir "64 bit CPU" vardır. kod veya 64 bit kod. Bu ne anlama geliyor ve bu nasıl oluyor? Şimdi 2-bit işlemcimizi bu cevabın önceki bölümünden alıp, başka bir kablo ekleyerek 3-bit işlemciye çevirip bizi 4 bayttan 2 ^ 3 veya 8 bayta RAM alalım.

Mevcut "2 bayt" kodu çalışacak ve son 2 kablonun değerlerini yukarıda belirtildiği gibi ayarlayarak (00-11) çalışacaktır. Ekstra bağlantıyı varsayılan olarak sıfır olarak bağlayacağız, bu yüzden aslında 2 baytlık kod çalıştığında, 00'ı seçtiğinde, aslında 000'ı ve 11'i seçtiğinde aslında 011'i seçiyor. Kolay.

Şimdi bir programcı "yerel" 3 baytlık bir kod yazmak istiyor ve ek adres alanından yararlanmak için yazılımını yazıyor. CPU'ya ne yaptığını bildiğini ve yeni, ekstra kabloların manuel kontrolünü alacağını söyler. Onun yazılımı fazladan kabloları bilir ve doğru bir şekilde 000-111'i gönderir ve bu yeni CPU mimarisi tarafından desteklenen hafıza aralığına tam erişim sağlar.

Ama böyle olması gerekmiyor. Aslında, bu normalde var olmayan şeyler olur nasıl. 64 bit CPU'lar ilk kez piyasaya sürüldüğünde (ve daha fazlası vardı), hepsi tamamen yeni mimariler / tasarımlarla geçti. Sadece 32 ek kabloyla bağlantıya geçmediler ve "işte burda, bu 32-bit veya 64-bit modunda kullanabileceğiniz 64-bit bir CPU'dur" demediler, aksine "Yeni işlemcimiz ve" dediler. sadece bu tamamen yeni makine dilinde programlama yapar, tamamen yeni bir şekilde davranır, eski x86 / i386 32-bit işlemcilerden çok daha farklı bir bazilyon problemi çözer ve 64-bit yerli bir mimariye sahiptir. ."

Ne kadar kitlesel bir biçimde battığından dolayı meşhur "Itanik" olarak bilinen Intel Itanium'un öyküsü buydu. Yeni 64-bit döneminde habercisi olması gerekiyordu ve bakması gereken bir şeydi. Değişken uzunluklu talimatlar, büyük önbellek, 64 bit adres alanı, tonlarca yazmaç, süper heyecan verici, süper serin ve herkesi 20 yıllık eski kodu yeniden derlemeye ya da yeniden yazmaya ikna etmek için çok zor. Bu, AMD ve Intel aslında rekabet ettikleri zamandı ve AMD, "tüm bunları unutalım" tüm dünyadaki sorunları çözelim "işte, i386'ya 32 kablo ekleyip 32-bit uyumlu hale getirmeye başladı. bit CPU "ve x86_64 CPU mimarisi doğdu.

Aslında, büyük işletim sistemleri için çekirdek adlarına ve kaynaklarına bakarsanız (Linux, Windows, BSD'ler, vb.), Bunları AMD64 CPU'lara ve AMD64 mimarisine referanslarla karıştırılmış bulacaksınız. AMD, 32-bit uygulamalarla uyumluluğu korurken, 32-bit bir işletim sisteminin 64-bit donanımda veya hatta 32-bit uygulamalarda çalışabileceği şekilde, herkesin 64-bit dünyaya geçiş yapmasını sağlayan bir strateji geliştirdi. 64 bit donanımda 64 bit işletim sistemi üzerinde çalışabilir. Intel, "Intel EM64T" mimarisiyle (temel olarak AMD64 ile aynıydı) ve daha sonraları x86_64 ile daha hızlı bir şekilde takip etti ve Itanic ve MIPS64 ve ALPHA64 gibi diğerleri artık masaüstü / sunucu pazarında görünmüyordu.

tl; dr amd64 aka x86_64 CPU'lar hem 32 hem de 64 bit çekirdek ve kodla uyumlu olacak şekilde tasarlanmıştır, ancak 64 bit işlemcilerin çoğu aynı şekilde geriye doğru uyumlu değildir . 32 bit CPU en fazla 4GiB belleğe erişebilirken, 64 bit CPU çarpıcı bir 16 EiB'ye (16 x 1024 ^ 6 bayt veya 4 milyar katı kadar 4GiB) erişebilir.


1
Bazı gerçek hatalarınız var: 1) itanyum değişken uzunluklu talimatlar vermedi (her x86'nın sahip olduğu); aynı anda birden fazla 64 bit büyüklüğünde çalışabilen çok uzun sözcük komutları ekledi. 2) x86_64 sadece daha fazla adres satırına tokat atmadı; ayrıca bir grup fazladan kayıt eklendi ve tüm kayıtları (ve üzerinde çalışan ALU'ları) 32 - 64 bit arasında genişletti. Bunu, 4 adres satırı ve segment seçici kaydı ekleyen, ancak 8080/8088 ile karşılaştırın.
psusi

-1

Hem 32 hem de 64 bit işletim sistemi 64 bit işlemcide çalışabilir, ancak 64 bit işletim sistemi 64 bit işlemcinin tam gücünü kullanabilir (daha büyük kayıtlar, daha fazla talimat) - kısacası aynı anda daha fazla iş yapabilir. 32 bit işlemci yalnızca 32 bit Windows işletim sistemini destekler.


3
Bu, genellikle x64 için doğru olsa da, genel olarak yanlıştır.
ChrisInEdmonton

1
Bir 32 bit işlemci, böyle bir işlemci mimarisinde çalışmak üzere tasarlanmış herhangi bir işletim sistemini çalıştıracaktır.
Waxhead

32-bit x86 işletim sistemi açıkça ARM64 üzerinde çalışamıyor, bu yüzden 32 and 64 bit OS can run on a 64 bit processorgenellikle doğru değil
phuclv

@ Phúc 32 bit ikizlerini desteklemeyen 64 bit işlemciler olabilir. Ancak argümanınızda yanlış mantık kullanıyorsunuz. 32 bit MicroSparc üzerindeki SunOS 4.4.1 de ARM32'de çalışmaz. Mantık araçlarınızı kullanarak, 32 bit bir işlemcinin 32 bit bir işlemcide çalışabileceği doğru değildir. Sizin gibi sağduyumu görmezden gelirsem, iddia ediyorum ki, 32 bit ARM OS, Intel i386 / x64 üzerinde çalışıyor, Android geliştiricileri Wintel makinelerinde Android ARM görüntüleri çalıştırıyor. Tabii ki işletim sistemi doğru işlemci ailesi için ve elbette işletim sistemi fiziksel donanım üzerinde çalışıyor ve öykünme değil (yeterince söyleniyor)
Tino
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.