Por que o Linux na arquitetura sparc64 usa ponteiros de 32 bits no espaço do usuário e ponteiros de 64 bits no espaço do kernel?

3

Quais são as vantagens de se desviar da norma? que são ponteiros de 64 bits no espaço do usuário e do kernel para uma arquitetura de 64 bits?

Referência: link (página 2)

    
por gjain 27.05.2012 / 08:55

3 respostas

4

Compatibilidade.

Primeiro, observe que o suporte de 64 bits da Sun remonta a 1998, com o Solaris 7, bem antes do AMD64 e até mesmo do Itanium ter suporte ao sistema operacional. Ao suportar 32 bits e 64 bits na área de usuário, você pode deixar a grande maioria dos softwares rodar completamente inalterados.

Confira o guia do desenvolvedor do Solaris 64-bit (datado de 2005). Primeiro, ele observa que existem dois sistemas separados:

The Solaris operating environment supports two first-class ABIs simultaneously. In other words, two separate, fully functional system call paths connect into the 64–bit kernel. Two sets of libraries support applications.

e, em seguida, enfatiza repetidamente que, se você tem um bom código C antigo que assume 32 bits, ele funcionará muito bem - mesmo continuar para construir bem, como se nada tivesse mudado :

As discussed in Getting Past the 4 Gigabyte Barrier, most 32-bit applications run unchanged in the Solaris 64-bit operating environment.

...

Source level compatibility has been maintained for 32-bit applications. For 64-bit applications, the principal changes that have been made are with respect to the derived types used in the application programming interface.

Transições tecnológicas bem-sucedidas geralmente são acompanhadas por híbridos e quimeras peculiares que às vezes passam da utilidade deles.

    
por 27.05.2012 / 09:22
4

Respondendo a pergunta revisada: Por que o Linux na arquitetura sparc64 usa ponteiros de 32 bits no espaço do usuário e ponteiros de 64 bits no espaço do kernel?

Isso provavelmente foi feito para reduzir o tamanho do código tanto dos binários quanto do tempo de execução, já que os ponteiros usam metade do tamanho na memória, mantendo outras vantagens no modo de 64 bits. É claro que a desvantagem é uma limitação do tamanho da memória virtual para 4 GB, mas isso era um problema menor há sete anos do que hoje.

Na arquitetura AMD64 (x86_64), os ponteiros de 32 bits no modo de 64 bits são um projeto em andamento: X32 System V Interface Binária do Aplicativo . O interesse é maior com essa família de processadores, pois você também tem mais registros disponíveis no modo de 64 bits e os usa em vez de aplicativos de aceleração de memória.

    
por 28.05.2012 / 00:21
1

De acordo com o documento para o qual você postou um link, a arquitetura Solaris x86_64 não usa ponteiros de 32 bits no espaço do usuário e ponteiros de 64 bits no kernel espaço.

De qualquer forma, este documento está incorreto, incompleto / ausente para explicar qual versão do Solaris é usada e quais versões e opções do compilador são usadas ou simplesmente não se aplicam ao Solaris, mas ao Linux , como demonstrado pela execução do programa em diferentes computadores Linux .

Ambos os modelos de 32 bits (ILP32) e 64 bits (LP64) são suportado no Solaris 10 e mais recente, independentemente da arquitetura de CPU de 64 bits usada (x86_64 ou UltraSPARC / SPARC64) e não há ponteiros de 32 bits no modelo de 64 bits. Para obter detalhes, consulte o Guia do desenvolvedor do Solaris 64-bit .

No SPARC, o Solaris suporta binários / ponteiros de 64 bits desde 2.7 (1998).

    
por 27.05.2012 / 11:56