Bagaimana pergeseran ke 64 bit ditangani di Linux

15

Bagaimana transisi ke 64 bit ditangani di Linux / Unix? Dunia Windows tampaknya masih memiliki masalah dengan itu dan saya ingin tahu bagaimana itu ditangani di dunia * nix.

Louis Salin
sumber
Dengan warna terbang.
Kaz

Jawaban:

12

Pekerjaan yang diperlukan untuk membuat kernel 64-bit dilakukan sebuah memberiku waktu lalu menggunakan sistem Desember Alpha. Program, bagaimanapun, adalah masalah yang berbeda.

Konsensus umum yang saya lihat sejauh ini tampaknya adalah:

  • Pisahkan /libdan /lib64direktori untuk sistem yang memiliki binari campuran
  • Kompilasi sebagai 64-bit; jika kompilasi gagal, kompilasi ulang sebagai 32-bit sampai sumber dapat dihapus untuk 64-bit.

Selain itu, Anda benar-benar tidak akan melihat banyak "kesedihan" dari campuran 32/64 bit.

Avery Payne
sumber
Ditambah symlink untuk menjaga nama biner konstan dan konsisten.
geoffc
dan kami memiliki apa yang disebut multilib alien.slackbook.org/dokuwiki/doku.php?id=slackware:multilib
phunehehe
Bisakah Anda menyebutkan program apa pun di Linux yang dapat dikompilasi tetapi hanya pada 32-bit?
Maciej Piechotka
@ Maciej Piechotka: jangan berpikir ada banyak yang tersisa. Saya pikir saya ingat OpenOffice.org rumit, tetapi itu jauh ketika konversi ke 64-bit dimulai. Selain itu: ternyata Flash Player itu rumit: P
wzzrd
Sejak saat Flash Player dikompilasi;) gnash / lightspark bekerja pada 64-bit tetapi Adobe Flash Player adalah propertary.
Maciej Piechotka
8

Windows dan * ix menggunakan model data yang berbeda untuk transisi. Halaman UNIX.org ini agak lama, tetapi masih memberikan gambaran yang baik tentang pertukaran (catatan yang long longkemudian ditambahkan ke C99, dan harus setidaknya 64-bit). Anda juga dapat melihat artikel Wikipedia tentang topik yang sama. Seperti yang dianjurkan pada akhir artikel UNIX.org, yang paling UNIX-seperti sistem telah pergi dengan LP64, yang berarti long, long longdan pointer ke-64-bit.

Windows berjalan dengan apa yang disebut model data LLP64, yang berarti bahwa hanya long longpointer yang 64-bit. longtetap 32-bit. Sebagian alasannya adalah karena mereka tidak ingin melalui dan memperbaiki kode yang rusak yang dianggap longsesuai dengan int.

Matthew Flaschen
sumber
2
Ada banyak perdebatan di dunia Unix juga. Salah satu argumen yang mendukung penambahan "long long" adalah bahwa ada terlalu banyak kode di luar sana yang mengasumsikan bahwa "long" adalah 32 bit. (Setidaknya dalam argumen tertentu saya membahas tentang comp.std.c tidak terlalu lama sebelum standar C99.)
David Thornley
2

Karena sebagian besar distro Linux adalah OpenSource, maka sudah banyak transisi yang dilakukan. Kecuali Anda menggunakan perangkat lunak propertary (seperti skype), Anda dapat menjalankan sistem 64-bit murni tanpa kerugian.

Namun perbedaan nyata IMHO lebih propertary vs terbuka kemudian unix vs windows karena biasanya perangkat lunak sumber terbuka yang porting terlebih dahulu (beberapa volonteer perlu mengkompilasi ulang sesuatu - mungkin memperbaiki beberapa masalah kompilasi) - atau dalam kebanyakan kasus tidak porting di semua kecuali baru saja dikompilasi;) - dan propertary yang porting terakhir.

Mungkin tambahan di Linux Anda memiliki repo sehingga instalasi ditangani secara otomatis - Anda tidak perlu memilih versi 64-bit atau 32-bit (sistem memilih Anda secara otomatis). Pada Windows program diunduh dan memiliki versi 64-bit dan 32-bit yang terpisah:

  • Menggandakan ukuran file di server
  • Membutuhkan pengguna untuk mengetahui versinya. Atau bahkan mereka berbeda oleh sesuatu

Saya kira itulah alasan mengapa binari Windows biasanya 32-bit - ini adalah satu ukuran yang cocok untuk semua dan tidak semua orang telah beralih ke versi 64-bit.

Maciej Piechotka
sumber
2

Sebenarnya, coba "Jalan Panjang ke 64-bit" di ACM Queue: http://queue.acm.org/detail.cfm?id=1165766 Itu kemudian diambil oleh Communications of the ACM. Mikro 64-bit pertama adalah MIPS R4000, dikirim dalam SGI Crimson 1Q1992, Dec Alphas dikirim akhir tahun itu.

R4000s berjalan pada awalnya dalam mode 32-bit, kemudian dalam mode 64/32, yaitu, OS 64-bit, kode pengguna 64 atau 32-bit. Alphas selalu menjalankan UNIX dalam 64-bit-saja (pilihan yang masuk akal, karena tidak ada basis aplikasi 32-bit yang diinstal.)

Kemudian pada tahun 1990-an, SGI berkontribusi pada Linux 64-bit (untuk dijalankan di Itaniums), tentang waktu XFS dipindahkan ke Linux (benar-benar menginginkan 64-bit).

John Mashey
sumber