
Como foi feita a transição para 64 bits no Linux/Unix? O mundo Windows ainda parece ter problemas com isso e estou curioso para saber como isso foi tratado no mundo *nix.
Responder1
O trabalho necessário para tornar o kernel de 64 bits foi feitomuuuito longohá algum tempo usando sistemas DEC Alpha. Os programas, no entanto, são uma questão diferente.
O consenso geral que vi até agora parece ser:
/lib
Diretórios separados/lib64
para sistemas que possuem binários mistos- Compilar como 64 bits; se a compilação falhar, recompile como 32 bits até que a fonte possa ser limpa para 64 bits.
Fora isso, você realmente não verá muita "tristeza" com compilações mistas de 32/64 bits.
Responder2
O Windows e o *ix usaram modelos de dados diferentes para a transição. Este UNIX.orgpáginaé um pouco antigo, mas ainda fornece uma boa visão geral das vantagens e desvantagens (observe que long long
foi adicionado posteriormente ao C99 e precisava ter pelo menos 64 bits). Você também pode ver umArtigo da Wikipédiasobre o mesmo assunto. Conforme defendido no final do artigo UNIX.org, a maioria dos sistemas semelhantes ao UNIX usam LP64, o que significa que long
, long long
, e ponteiros são todos de 64 bits.
O Windows adotou o chamado modelo de dados LLP64, o que significa que apenas long long
os ponteiros e são de 64 bits. long
permanece 32 bits. Parte do motivo era simplesmente que eles não queriam analisar e consertar códigos quebrados que presumiam long
caber em um arquivo int
.
Responder3
Como as distribuições Linux são principalmente OpenSource, em grande parte a transição já foi feita. A menos que você use software proprietário (como o Skype), você poderá executar um sistema puro de 64 bits sem quaisquer desvantagens.
No entanto, a verdadeira diferença IMHO é mais proprietária versus aberta do que Unix versus Windows, pois geralmente é o software de código aberto que é portado primeiro (algum voluntário precisa recompilar algo - talvez corrigir alguns problemas de compilação) - ou na maioria dos casos não portado em tudo menos recompilado;) - e o proprietário que é portado por último.
Possivelmente, adicionalmente no Linux você tem repositórios para que a instalação seja feita automaticamente - você não precisa escolher a versão de 64 ou 32 bits (o sistema escolhe a sua automaticamente). No Windows, os programas são baixados e possuem versões separadas de 64 e 32 bits:
- Duplica o tamanho dos arquivos no servidor
- Requer que o usuário conheça sua versão. Ou mesmo que eles diferem em alguma coisa
Acho que essa é a razão pela qual os binários do Windows geralmente são de 32 bits - é um tamanho único e nem todos adotaram a versão de 64 bits.
Responder4
Na verdade, tente "The Long Road to 64 bits" no ACM Queue: http://queue.acm.org/detail.cfm?id=1165766 Isso foi posteriormente captado pelas Comunicações da ACM. O primeiro micro de 64 bits foi o MIPS R4000, lançado no SGI Crimson 1T1992, Dec Alphas lançado no final daquele ano.
Os R4000s funcionavam inicialmente no modo de 32 bits e, posteriormente, no modo 64/32, ou seja, sistema operacional de 64 bits, códigos de usuário de 64 ou 32 bits. Alphas sempre rodavam UNIX apenas em 64 bits (uma escolha razoável, já que não havia base instalada de aplicativos de 32 bits).
Mais tarde, na década de 1990, 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 Linux (ele realmente queria 64 bits).