한국   대만   중국   일본 
Binario multiarquitetura ? Wikipedia, a enciclopedia livre Saltar para o conteudo

Binario multiarquitetura

Origem: Wikipedia, a enciclopedia livre.

O binario multiarquitetura ou binario gordo(em traducao literal) e um programa de computador que possui um conjunto de instrucoes de diversas arquiteturas de computador, podendo assim rodar em diferentes plataformas de hardware . O metodo de implementacao mais comum deste tipo de tecnologia, e a inclusao de codigo de maquina de varios conjuntos de instrucoes, gerando assim um arquivo binario evidentemente maior que aquele voltado a apenas uma plataforma computacional.

Esta tecnologia nao e algo implementado apenas a nivel de sistema operacional , pois existem varias maneiras de lidar com esta tecnologia, como por exemplo, um programa instalador, que seleciona a arquitetura adequada na operacao de instalacao, a distribuicao do codigo-fonte , para que seja compilado no momento da instalacao, ou ainda, uma compilacao do tipo JIT , com a utilizacao de uma maquina virtual .

Apple [ editar | editar codigo-fonte ]

Binario Multiarquitetura [ editar | editar codigo-fonte ]

A implementacao do binario multiarquitetura da Apple Inc. , veio no periodo de transicao arquitetural do Macintosh 68k , para o PowerPC , no ano de 1994 . Muitas aplicacoes da antiga arquitetura, rodavam de forma transparente em sua nova plataforma envolvendo um esquema de emulacao , porem, codigo emulado de uma forma geral roda em velocidades menores, a codigo nativo de uma determinada arquitetura. Eles fizeram isto juntando em um mesmo binario, trechos pertencentes a ambas as arquiteturas. Enquanto o codigo antigo 68k, residia na Resource fork, [ 1 ] o codigo mais atual PowerPC residia na data fork, no formato Preferred Executable Format, [ 2 ] criando um binario multiarquitetura. [ 3 ]

Binarios multiarquitetura NeXT/Apple [ editar | editar codigo-fonte ]

Binarios multiarquitetura NeXTSTEP [ editar | editar codigo-fonte ]

Binarios gordos, foi uma funcionalidade dos sistemas operacionais NeXT e NeXTSTEP /OPENSTEP, comecando pelo NeXTSTEP 3.1. No NeXTSTEP, eles eram chamados "Multi-Architecture Binaries". Os binarios multiarquitetura eram compilados de forma que pudesser rodar em hadrware Motorola 68k , IA-32 e PC , sendo apenas um arquivo binario, para todas as plataformas. Um tempo depois, permitia aplicacoes OPENSTEP rodar em PC e varias plataformas RISC que eram suportadas por tal sistema operacional. Binarios multiarquitetura eram arquivos com um formato especial, onde um arquivo armazenada um ou mais subarquivos Mach-O , e cada um destes representava uma arquitetura suportada. Cada arquivo binario multiarquitetura possuia uma estrutura ( struct fat_header ) contendo duas variaveis do tipo "unsigned integers". O primeiro inteiro ( magic ), servia para identificar o arquivo como um binario multiarquitetura. O segundo inteiro ( nfat_arch ), definia quantas arquiteturas aquele arquivo possuia(ou, quantas versoes compiladas para diferentes arquiteturas, aquele binario possuia). Apos este cabecalho, estruturas do tipo fat_arch( struct fat_arch ) existiam no arquivo, que definiam "offset"(ponto de inicio do arquivo), definindo onde comecava determinado arquivo, o alinhamento, o tamanho da CPU e o tipo de arquitetura para o qual aquele subarquivo pertencia.

A versao da GCC entregue com as ferramentas de desenvolvimento, permitia a compilacao cruzada de um codigo-fonte para diferentes arquiteturas do NeXTStep . Por exemplo, era possivel escolher as arquiteturas alvo da compilacao, com o parametro '-arch'. Esta era uma forma bastante conveniente de se distribuir um software que rodava em diversas arquiteturas.

Tambem era possivel a criacao de bibliotecas, com diferentes arquivos objeto

Mach-O e Mac OS X [ editar | editar codigo-fonte ]

A Apple adquiriu a NeXT em meados de 1996 , e continuaram o trabalho com o OPENSTEP. Mach-O se tornou o arquivo objeto nativo no sistema operacional livre da Apple, o Darwin (2000) e o Apple Mac OS X (2001), e os binarios multiarquitetura vindos do NeXT, continuaram a ser suportados pelo sistema operacional. No Mac OS X, os binarios multiarquitetura podem ser usados em diversas variantes de uma arquitetura, e binarios 32-bit , com codigo otimizado para as geracoes de processadores PowerPC G3 , PowerPC G4 e PowerPC 970 . Tambem suporta versoes 32-bit e 64-bit do PowerPC. [ 4 ]

Binario universal da Apple [ editar | editar codigo-fonte ]

Ver artigo principal: Binario universal

Um binario universal e, uma tecnologia da Apple Inc. onde um tipo de arquivo executavel ou um pacote de aplicativos que roda nativamente em computadores Macintosh baseados tanto em processadores PowerPC da IBM como em x86 Intel .

Linux [ editar | editar codigo-fonte ]

FatELF: Binario Universal para Linux [ editar | editar codigo-fonte ]

FatELF , e uma implementacao para Linux e outros derivados do Unix . Tecnicamente, o FatELF e uma extensao dos arquivos tipo ELF do Linux. [ 5 ] Adicionalmente a abstracao de arquitetura de computador e ABI , de acordo com o desenvolvedor Ryan C. Gordon o FatELF proveria as seguintes vantagens ao Linux [ 6 ] :

  • Distribuicoes Linux nao precisariam separar os downloads por plataforma;
  • A separacao de bibliotecas dentro de /lib, /lib32 e /lib64 nao seria mais necessaria na estrutura de diretorios ;
  • Os binarios e bibliotecas mais adequadas seriam escolhidas pelo sistema operacional, e nao por shell scripts ;
  • Se a Interface binaria de aplicacao mudar, software legado sera ainda suportado;
  • Distribuicao de plugins de navegador que funcionam em qualquer arquitetura;
  • Distribuicao de um binario unico sendo compativel entre Linux e BSD(e suas variantes), sem a necessidade de uma camada adicional de abstracao;
  • O mesmo dispositivo raiz pode ser arrancado(bootado) em diferentes arquiteturas, para fins de desenvolvimento e experimentacao;
  • Facilidade para aplicacoes portateis, que armazenados em um pen-drive podem ser utilizados em varios computadores;

Uma maquina virtual da distribuicao Ubuntu , pode ser encontrada aqui. [ 7 ] O projeto FatELF esta parado, porem, os patches podem ser encontrados no site do desenvolvedor, pois apos uma longa e calorosa discussao, [ 8 ] os desenvolvedores mais antigos do kernel Linux, acharam mais prudente e ate mesmo pouco vantajoso a inclusao de tais patches a arvore principal de software.

Referencias [ editar | editar codigo-fonte ]

Ligacoes externas [ editar | editar codigo-fonte ]


Ícone de esboço Este artigo sobre informatica e um esboco . Voce pode ajudar a Wikipedia expandindo-o .