Come è stato gestito il passaggio a 64 bit su Linux


15

Come è stata gestita la transizione a 64 bit su Linux / Unix? Il mondo Windows sembra avere ancora problemi con esso e sono curioso di sapere come è stato gestito nel mondo * nix.


A pieni voti.
Kaz,

Risposte:


12

Il lavoro necessario per rendere il kernel a 64 bit è stato fatto un lunghissimo tempo fa utilizzando sistemi DEC Alpha. I programmi, tuttavia, sono una questione diversa.

Il consenso generale che ho visto finora sembra essere:

  • Separati /libe /lib64directory per sistemi con binari misti
  • Compilare come 64 bit; se la compilazione non riesce, ricompilare come 32 bit fino a quando l'origine non può essere cancellata per 64 bit.

A parte questo, non vedrai molto "dolore" da build miste a 32/64 bit.


Inoltre symlink per mantenere i nomi binari costanti e coerenti.
geoffc,


Potresti nominare un programma su Linux che può essere compilato ma solo su 32 bit?
Maciej Piechotka,

@Maciej Piechotka: non pensare che ne siano rimasti molti. Penso di ricordare che OpenOffice.org è stato complicato, ma era molto indietro quando è iniziata la conversione a 64 bit. A parte questo: apparentemente Flash Player è complicato: P
wzzrd,

Da quando viene compilato Flash Player;) gnash / lightspark funziona su 64 bit ma Adobe Flash Player è corretto.
Maciej Piechotka,

8

Windows e * ix hanno utilizzato diversi modelli di dati per la transizione. Questa pagina UNIX.org è un po 'vecchia, ma fornisce comunque una buona panoramica dei compromessi (si noti chelong long stata successivamente aggiunta a C99 e doveva essere almeno a 64 bit). Puoi anche vedere un articolo di Wikipedia sullo stesso argomento. Come auspicato alla fine di questo articolo UNIX.org, la maggior parte dei sistemi UNIX-like sono andati con LP64, quali mezzi long,long long e puntatori sono tutti a 64 bit.

Windows è andato con quello che viene chiamato il modello di dati LLP64, il che significa che solo long longe i puntatori sono a 64 bit. longrimane a 32 bit. Parte del motivo era semplicemente che non volevano passare attraverso e riparare il codice non funzionante che si riteneva longadatto a un int.


2
Ci sono stati molti dibattiti anche nel mondo Unix. Uno degli argomenti a favore dell'aggiunta di "long long" era che c'era troppo codice là fuori che presupponeva che "long" fosse 32 bit. (Almeno nel particolare argomento mi sono imbattuto in comp.std.c non molto tempo prima dello standard C99.)
David Thornley,

2

Dato che le distribuzioni Linux sono per lo più OpenSource, la transizione è già ampiamente avvenuta. A meno che non si utilizzi un software appropriato (come skype), è possibile eseguire il sistema a 64 bit puro senza svantaggi.

Tuttavia, la vera differenza tra IMHO è più corretta rispetto a aperta anziché a Unix rispetto a Windows poiché di solito è il software open source che viene portato per primo (alcuni volontari devono ricompilare qualcosa - forse risolvere alcuni problemi di compilazione) - o nella maggior parte dei casi non portati su tutto tranne che appena ricompilato;) - e proprietario che è stato portato per ultimo.

Forse anche su Linux hai repository in modo che l'installazione venga gestita automaticamente - non è necessario scegliere la versione a 64 o 32 bit (il sistema sceglie automaticamente il tuo). Su programmi Windows vengono scaricati e con versione separata a 64 e 32 bit:

  • Raddoppia la dimensione dei file sul server
  • Richiede all'utente di conoscere la sua versione. O anche che differiscono per qualcosa

Immagino che sia il motivo per cui i binari di Windows sono di solito a 32 bit - è a misura unica e non tutti sono passati alla versione a 64 bit.


2

In realtà, prova "La lunga strada a 64 bit" nella coda ACM: http://queue.acm.org/detail.cfm?id=1165766 che è stato successivamente raccolto da Communications of the ACM. Il primo micro 64-bit era MIPS R4000, spedito in SGI Crimson 1Q1992, Dec Alphas spedito alla fine di quell'anno.

Gli R4000 erano inizialmente in esecuzione in modalità 32 bit, quindi in seguito in modalità 64/32, vale a dire, sistema operativo a 64 bit, codici utente a 64 o 32 bit. Gli Alpha hanno sempre eseguito UNIX solo a 64 bit (una scelta ragionevole, poiché non esisteva una base installata di app a 32 bit).

Più tardi negli anni '90, SGI contribuì allo sforzo di Linux a 64 bit (per funzionare su Itaniums), circa il tempo in cui XFS fu portato su Linux (voleva davvero a 64 bit).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.