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.
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.
Risposte:
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:
/lib
e /lib64
directory per sistemi con binari mistiA parte questo, non vedrai molto "dolore" da build miste a 32/64 bit.
multilib
alien.slackbook.org/dokuwiki/doku.php?id=slackware:multilib
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 long
e i puntatori sono a 64 bit. long
rimane a 32 bit. Parte del motivo era semplicemente che non volevano passare attraverso e riparare il codice non funzionante che si riteneva long
adatto a un int
.
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:
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.
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).