Como foi feita a transição para 64 bits no Linux / Unix? O mundo do Windows ainda parece ter problemas e estou curioso para saber como foi tratado no mundo * nix.
Como foi feita a transição para 64 bits no Linux / Unix? O mundo do Windows ainda parece ter problemas e estou curioso para saber como foi tratado no mundo * nix.
Respostas:
O trabalho necessário para fazer o kernel de 64 bits foi feito um looooong tempo atrás usando sistemas DEC Alpha. Programas, no entanto, são uma questão diferente.
O consenso geral que vi até agora parece ser:
/lib
e /lib64
diretórios separados para sistemas que possuem binários mistosFora isso, você realmente não verá muita "tristeza" de compilações mistas de 32/64 bits.
multilib
alien.slackbook.org/dokuwiki/doku.php?id=slackware:multilib
Windows e * ix usavam modelos de dados diferentes para a transição. Esta página do UNIX.org é um pouco antiga, mas ainda fornece uma boa visão geral das compensações (observe que long long
foi adicionada posteriormente ao C99 e que era necessário ter pelo menos 64 bits). Você também pode ver um artigo da Wikipedia sobre o mesmo tópico. Como defendido no final do artigo UNIX.org, a maioria UNIX-like sistemas de ter ido com LP64, o que significa long
, long long
e ponteiros são todos de 64 bits.
O Windows seguiu o que é chamado de modelo de dados LLP64, o que significa que apenas long long
e os ponteiros são de 64 bits. long
permanece de 32 bits. Parte do motivo era simplesmente que eles não queriam passar e corrigir o código quebrado que supunha long
caber em um int
.
Como as distribuições Linux são principalmente OpenSource, já existe uma grande transição. A menos que você use um software apropriado (como o skype), você pode executar um sistema puro de 64 bits sem nenhuma desvantagem.
No entanto, a diferença real é que o IMHO é mais apropriado versus aberto do que unix e Windows, pois geralmente é o software de código aberto que é portado primeiro (alguns participantes precisam recompilar algo - talvez corrigir alguns problemas de compilação) - ou, na maioria dos casos, não portados em tudo menos recompilado;) - e propertário que é portado por último.
Possivelmente, adicionalmente, no Linux você tem repositórios para que a instalação seja tratada automaticamente - você não precisa escolher a versão de 64 bits ou de 32 bits (o sistema escolhe o seu automaticamente). No Windows, os programas são baixados e possuem versões separadas de 64 e 32 bits:
Eu acho que essa é a razão pela qual os binários do Windows geralmente são de 32 bits - é do tamanho único e nem todos foram para a versão de 64 bits.
Na verdade, tente "O longo caminho para os 64 bits" na fila do ACM: http://queue.acm.org/detail.cfm?id=1165766 Que foi posteriormente captado pelas comunicações do ACM. O primeiro micro de 64 bits foi o MIPS R4000, enviado no SGI Crimson 1T1992, o Dec Alphas enviado no final daquele ano.
Os R4000s estavam sendo executados primeiro no modo de 32 bits e depois no modo 64/32, ou seja, códigos de usuário de SO de 64 bits, 64 ou 32 bits. O Alphas sempre executava o UNIX apenas em 64 bits (uma escolha razoável, pois não havia base instalada de aplicativos de 32 bits).
Mais tarde, nos anos 90, a SGI contribuiu com esforços para o Linux de 64 bits (para rodar em Itaniums), na época em que o XFS foi portado para o Linux (ele realmente queria 64 bits).