Como foi a mudança para 64 bits no Linux

15

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.

Louis Salin
fonte
Com cores voadoras.
Kaz

Respostas:

12

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:

  • Diretórios /libe /lib64diretórios separados para sistemas que possuem binários mistos
  • Compile 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" de compilações mistas de 32/64 bits.

Avery Payne
fonte
Além disso, links simbólicos para manter os nomes binários constantes e consistentes.
geoffc
e nós temos o que é chamado multilib alien.slackbook.org/dokuwiki/doku.php?id=slackware:multilib
phunehehe
Você poderia citar algum programa no Linux que possa ser compilado, mas apenas em 32 bits?
Maciej Piechotka
@Maciej Piechotka: não pense que sobraram muitos deles. Acho que me lembro do OpenOffice.org sendo complicado, mas isso foi no começo da conversão para 64 bits. Fora isso: aparentemente o Flash Player é complicado: P
wzzrd 18/08/10
Desde quando o Flash Player é compilado;) o gnash / lightspark funciona em 64 bits, mas o Adobe Flash Player é apropriado.
Maciej Piechotka
8

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 longfoi 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 longe ponteiros são todos de 64 bits.

O Windows seguiu o que é chamado de modelo de dados LLP64, o que significa que apenas long longe os ponteiros são de 64 bits. longpermanece de 32 bits. Parte do motivo era simplesmente que eles não queriam passar e corrigir o código quebrado que supunha longcaber em um int.

Matthew Flaschen
fonte
2
Também houve muito debate no mundo Unix. Um dos argumentos a favor da adição de "long long" era que havia muito código por aí que supunha que "long" tinha 32 bits. (Pelo menos no argumento particular eu entrei em comp.std.c não muito tempo antes de o padrão C99.)
David Thornley
2

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:

  • Dobra o tamanho dos arquivos no servidor
  • Requer que o usuário conheça sua versão. Ou mesmo que eles diferem por algo

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.

Maciej Piechotka
fonte
2

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).

John Mashey
fonte