PplWare Mobile

Porque há no Windows pastas Program Files e Program Files(x86)?

                                    
                                

Este artigo tem mais de um ano


Autor: Pedro Simões


  1. Nelson says:

    É possivel explicar o porque de serem escolhidos esses numeros? (x86), é alguma base diferente?

  2. Sergio says:

    é comum referir-se aos x86 como todos os CPUs com base em 386, de 32 bits. E vão desde o 386 passando pelos 486, Pentium Pro, Pentium, Pentium MMX, Pentium II e III e IV.
    A partir dos Pentium IV já passaram a ser conhecidos como i686
    Antes dos 386, era tudo sistemas de 4, 8 e 16 bits sendo o ultimo CPU 16bits o Intel 286 (para PC), pois a Motorola tinha os famosos 680×0 (série 68000 a 68040) que equipavam os CBM Amiga, Atari ST e Apple Mac (desde o Mac II ao Quadra era tudo CPU Motorola).
    O CBM Amiga deixou muita saudade…

    • Asdrubal says:

      xiiii…
      Os actuais processadores da intel para PC’s continuam a ser baseados em x86.
      E x86 não é do 386, mas sim da arquitectura 8086. Antes do 386, ou 80386, existiu o 80286 o 8086, 8080, 8008, 4004… processadores da intel para PC’s. A seguir ao 80386, foi o 80486, 80586 (Pentium)… Actualmente estes processadores da intel é tudo baseado na arquitectura 8086.

    • PAULO SILVA says:

      Esta mas quase…, tem de referir a introdução no mercado dos CPU’s da AMD de 64bits, o que é a base de todas as instruções da microsoft para CPU’s em 64bits, pois foi lançada muito antes de qualquer CPU intel para consumo (vide: AMD Athlon x64, Opteron x64), e como tal foi desenvolvido o windows xp 64bits com base nos CPU’s da AMD, e quando a intel lançou os CPU’s da linha Core, a microsoft recusou-se a fazer um S. O. para a intel uma vez que já tinha a trabalhar com a AMD em 64bits, por isso as instruções do kernel microsoft são com base na AMD!
      para mais duvidas googlem.

      • Mario says:

        O que sao DLLs?? Qual a diferenca entre um .bat um .dll e um .exe? Porque no mac ou linux n existem 2 pastas? Quais as vantagens de programas 64bits em comparacao aos 32bits? Velocidade?

  3. V.T. says:

    Bom artigo. Parabéns!

    • Diogo Gaspar says:

      Obrigado V.T.
      É importante ter feedback por parte dos leitores.
      Um abraço.

      • Mario says:

        O que sao DLLs?? Qual a diferenca entre um .bat um .dll e um .exe? Porque no mac ou linux n existem 2 pastas? Quais as vantagens de programas 64bits em comparacao aos 32bits? Velocidade? Agradecia que me explicassem para assim entender melhor o artigo. Obrigado!

  4. Rodrigo says:

    Artigo muito vago…o que sao DLLs?? Qual a diferenca entre um .bat um .dll e um .exe? Porque no mac ou linux n existem 2 pastas? Quais as vantagens de programas 64bits em comparacao aos 32bits? Velocidade? Agradecia que me explicassem para assim entender melhor o artigo!

    • Temos de começar por algum lado e explicar as coisas de forma bem definida. Começamos por conceitos mais básicos e vamos evoluindo.

      Mas contamos contigo para nos ajudar e dar ainda mais informações úteis.

    • int3 says:

      DLL são ficheiros compilados onde tens funções para executar. Basicamente um programa tem uma parte de memória só para ele executar. Quando o programa é muito complexo e para ser fácil de gerir é preciso dividir as coisas por livrarias dinâmicas (Dynamic Linked Library). Os programas são “linkados” durante a compilação e quando o programa é corrido e dentro da execução precisa de saltar para uma função num DLL aí o SO cria mais espaço e um endereçamento diferente. É uma questão muito técnica e não quero confundir-te porque sei que não vais entender.
      .bat é um ficheiro script com comandos para a linha de comandos. .exe é um ficheiro binário executável já linkado. Os executáveis são linkados com as livrarias do sistema operativo quer estáticas (static libs) quer dinâmicas (dynamic libs ou DLL). Assim o sistema operativo pode apontar para o “start” do programa que por sua vez salta para o “main” do executável. As libs estáticas até são compiladas e juntadas no mesmo executável acho eu.
      Mac e linux diferem.
      No mac é possível ter várias arquiteturas destintas no mesmo “object file” (ficheiro compilado mas não linkado -> não é executável porque não existe um start).
      No linux já é preciso diferir:
      /lib
      /lib32
      /lib64

      No MacOS (temos que ver isto pelo kernel. o kernel chama-se XNU, Xnu is not Unix) podemos ver que tipo de ficheiro estamos a lidar:
      $ file libosxfuse.dylib
      libosxfuse.dylib: Mach-O universal binary with 4 architectures: [ppc_7400: Mach-O dynamically linked shared library ppc_7400] [ppc64: Mach-O dynamically linked shared library ppc64] [i386: Mach-O dynamically linked shared library i386] [x86_64: Mach-O 64-bit dynamically linked shared library x86_64]
      libosxfuse.dylib (for architecture ppc7400): Mach-O dynamically linked shared library ppc_7400
      libosxfuse.dylib (for architecture ppc64): Mach-O dynamically linked shared library ppc64
      libosxfuse.dylib (for architecture i386): Mach-O dynamically linked shared library i386
      libosxfuse.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64

      esta libraria dinâmica (similar ao dll no windows) tem 4 arquiteturas no mesmo ficheiro. 32 bits da intel e 64 bits da intel e powerPC de 64 bits e powerPC dos antigos que presumo que seja 32 bits.

      Executáveis:
      $ file Mail
      Mail: Mach-O 64-bit executable x86_64
      São do tipo Mach-O.

      No linux:
      # file /lib/security/pam_google_authenticator.so
      /lib/security/pam_google_authenticator.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=9da71b105f036115dc6b5cd49bc076f606baac04, stripped

      São do tipo ELF. Neste caso é uma livraria compilada para 64 bits da intel.

      /bin# file echo
      echo: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=9a7491319c83fdfccc9e23340320177e8d186e3d, stripped

      Um exemplo de um executável no linux.

      O windows NT chama-se PE (Portable executable). ELF no linux e Mach-O no XNU.

      Vantagens?
      Num ciclo consegues calcular números muito maiores que em vez de 32 bits.
      O número máximo em 32 bits que podes manter num registo no CPU é 2^32-1. Corta a metade se for signed porque precisas de um bit para dizer se é positivo ou negativo.
      Em 64 bits é o mesmo mas 2^64-1. E é um valor muito grande.

      Termos práticos? 64 bits consegues mapear endereços de memória até 64 bits de tamanho. Imagina uma rua grande. Cada casa pode armazenar 1 byte de informação. O número de casa casa começa em 0 depois 1 depois 2 por aí fora. se tiveres 32 bits podes ir até 4Biliões. Ou 4 biliões de bytes. São 4 GBs. Por isso só podes ter memória endereçada e usável até 4GBs. em 64 bits o número é tão grande que deve ser na ordem dos petabytes. por isso podes ter mais casas na mesma rua 😉

      Velocidade é quase igual para situações que não precisas de usar números maiores que 32 bits. se tiveres uma aplicação a 32 bits e precisar de fazer uma multiplicação de um número maior que 4 biliões então tens que fazer-lo em vários ciclos. E isso demora ocupa tempo ao CPU que poderia estar a fazer outras coisas.

      Espero que tenha sido simples. Não é algo fácil de explicar porque é necessário um background na área.

  5. int3 says:

    O macOS não precisa de separar visto que é o único sistema operativo que tem um kernel que consegue lidar no mesmo executável e livrarias de diferentes arquiteturas :p nem o linux consegue.

  6. Belmiro says:

    É interessante explicarem mas não entendi porque a MS nos sistemas 64 bit ainda separa tudo: nas pastas de instalação se estivesse tudo unido e para o utilizador comum é igual ao litro.

    • int3 says:

      não pode. não leste o artigo? pode causar conflitos.
      todos os sistemas são assim tirando o macOS

      • Monica says:

        errado, o computador lê as pastas especificas, não as duas pastas 32 e 64, por isso é exactamente igual ao litro…. se um user instalar as duas versões pode haver problemas, mas pensa um bocado antes de falares, o user instala o programa onde lhe dá na gana, não vai usar esta ou aquela pasta se nem souber o que significa…. por isso essa teoria cai por terra…. eu sempre selecciono uma pasta qql, nem sabia dessa separação, umas vezes mando para a 32 e outras para a 64, que nada têm a ser com a versão que eu uso para instalar

  7. jonhy says:

    Dentro de ambas as pastas os programas são instalados em pastas separadas. Como é possível confundir ficheiros?

  8. didicomputers says:

    ainda tenho o meu 486 aki para os jogos antigos

  9. Miguel says:

    Mais engraçado é a pasta System32 ter os DLLs de 64 bits (óbvio) e a pasta SysWow64 ter os DLLs de 32 bits (mais óbvio ainda) 😀

  10. helio says:

    é possível um aplicativo 64 bits rodar tranquilamente num computador
    q tem os 2 programas, ou seja, 32 e 64 bits?

  11. marcos says:

    Excelente esposição. Você ganhou mais uma estrela em seu curriculol

Deixe um comentário

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.