Linux'ta 64 bite geçiş nasıl yapıldı


15

Linux / Unix'te 64 bite geçiş nasıl ele alındı? Windows dünyasının hala sorunları var gibi görünüyor ve * nix dünyasında nasıl ele alındığını merak ediyorum.


Uçan renklerle.
Kaz

Yanıtlar:


12

Çekirdek 64-bit yapmak için gerekli çalışma yapıldı looooong DEC Alpha sistemleri kullanarak önce zaman. Ancak programlar farklı bir konudur.

Şimdiye kadar gördüğüm genel fikir birliği şöyle görünüyor:

  • Karma ikili dosyaları olan sistemler için ayrı /libve /lib64dizinler
  • 64 bit olarak derleyin; derleme başarısız olursa, kaynak 64-bit için temizlenene kadar 32-bit olarak yeniden derleyin.

Bunun dışında, 32/64 bitlik karma yapılardan çok fazla "keder" görmeyeceksiniz.


Ayrıca ikili adları sabit ve tutarlı tutmak için semboller.
geoffc


Linux'ta derlenebilecek ancak 32 bitlik herhangi bir program söyleyebilir misiniz?
Maciej Piechotka

@Maciej Piechotka: bunlardan çok fazla şey olduğunu düşünmeyin. Sanırım OpenOffice.org'un zor olduğunu hatırlıyorum, ancak 64-bit'e dönüşüm başladığında bu geri döndü. Bunun dışında: görünüşe göre Flash Player zor: P
wzzrd

Flash Player derlendiğinden beri;) gnash / lightspark 64 bit üzerinde çalışıyor, ancak Adobe Flash Player uygun.
Maciej Piechotka

8

Windows ve * ix geçiş için farklı veri modelleri kullandı. Bu UNIX.org sayfası biraz eski, ancak yine de ödünleşimler hakkında iyi bir genel bakış sunuyor ( long longdaha sonra C99'a eklenmiş ve en az 64 bit olması gerekiyordu). Aynı konuyla ilgili bir Wikipedia makalesi de görebilirsiniz . UNIX.org makalenin sonunda savunduğu gibi, çoğu UNIX benzeri sistemlerde LP64, araçlarla gitti long, long longve işaretçileri tüm 64-bit.

Windows, LLP64 veri modeli olarak adlandırılan modelle gitti, bu da yalnızca long longişaretçilerin 64 bit olduğu anlamına geliyor . long32 bit kalır. Sebebin bir kısmı, geçmesi ve longuygun olduğu kabul edilen kırık kodu düzeltmek istemedikleriydi int.


2
Unix dünyasında da birçok tartışma vardı. "Uzun uzun" eklemeyi destekleyen argümanlardan biri, orada "uzun" un 32 bit olduğunu varsayan çok fazla kod olmasıydı. (En azından comp.std.c'de C99 standardından çok uzun bir süre önce girmediğim belirli bir argümanda.)
David Thornley

2

Linux dağıtımları çoğunlukla Açık Kaynak olduğundan, büyük ölçüde geçiş yapılmıştır. Uygun yazılımı (skype gibi) kullanmadığınız sürece, saf 64 bit sistemi herhangi bir dezavantaj olmadan çalıştırabilirsiniz.

Bununla birlikte, gerçek fark IMHO, genellikle ilk önce taşınan açık kaynak yazılım olduğundan (bazı volonteer bir şeyleri yeniden derlemelidir - belki bazı derleme sorunlarını çözebilir) - veya çoğu durumda taşınmamış olan açık veya unix ile pencerelere göre daha uygundur. sadece yeniden derlenmiş olanlar hariç;) - ve son taşınan özellik.

Muhtemelen Linux'ta depolarınız vardır, böylece kurulum otomatik olarak işlenir - 64 bit veya 32 bit sürümü seçmenize gerek yoktur (sistem otomatik olarak seçer). Windows'ta programlar indirilir ve ayrı 64 bit ve 32 bit sürümleri vardır:

  • Sunucudaki dosyaların boyutunu iki katına çıkarır
  • Kullanıcının sürümünü bilmesini gerektirir. Ya da bir şeyle farklılık gösterse bile

Sanırım Windows ikili dosyalarının genellikle 32 bit olmasının nedeni budur - hepsi tek bedene uyar ve herkes 64 bit sürüme gitmedi.


2

Aslında, ACM Kuyruğunda "64 bite kadar Uzun Yol" deneyin: http://queue.acm.org/detail.cfm?id=1165766 Bu daha sonra ACM İletişim tarafından alındı. İlk 64 bit mikro, SGI Crimson 1Q1992'de sevk edilen MIPS R4000'di, Dec Alphas o yılın sonlarında gönderildi.

R4000'ler önce 32 bit modunda, daha sonra 64/32 modunda, yani 64 bit OS, 64 veya 32 bit kullanıcı kodlarında çalışıyordu. Alfalar her zaman yalnızca 64 bitlik bir sürümde UNIX çalıştırdı (32 bitlik uygulamaların yüklü bir tabanı olmadığından makul bir seçim.)

Daha sonra 1990'larda SGI, XFS'nin Linux'a taşındığı zaman (gerçekten 64-bit olmasını istedi) hakkında 64-bit-boyutlu Linux (Itaniums üzerinde çalıştırmak için) çabalarına katkıda bulundu.

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.