Qual é a diferença entre o sistema operacional de 32 bits e o sistema operacional de 64 bits? Um sistema operacional de 32 bits pode ser executado em um processador de 64 bits?
Qual é a diferença entre o sistema operacional de 32 bits e o sistema operacional de 64 bits? Um sistema operacional de 32 bits pode ser executado em um processador de 64 bits?
Respostas:
Sua pergunta é específica da arquitetura. x64 é essencialmente uma extensão da arquitetura x86. Ele suporta um espaço de endereço de 64 bits. Ele fornece algumas novas instruções e novos registros.
Você pode executar o Windows x86 de 32 bits em uma máquina x64. Observe que você não pode fazer isso nos sistemas Itanium de 64 bits.
Um processador de 64 bits pode executar sistemas operacionais 32 e 64 (pelo menos uma lata x64). Um processador de 32 bits pode executar apenas 32 nativamente.
A diferença é principalmente sobre o tamanho de um ponteiro / referência. Em máquinas de 64 bits, você pode fazer referência a um endereço em um intervalo de endereços de 64 bits (fornecendo, assim, 2 ^ 64 bytes de memória). Em 32 bits, você pode endereçar apenas 2 ^ 32 bytes (= 4 GB). Agora, se você olhar para os computadores atuais, é óbvio por que o mundo está mudando para 64 bits: 32 bits não podem mais lidar com toda a RAM mais facilmente.
No x64 (AMD / Intel), você tem benefícios adicionais de 64 bits. A CPU possui mais registros e, portanto, permite um código mais eficiente.
Em outras arquiteturas, as diferenças entre 64 e 32 bits são menos óbvias. Por exemplo, o Nintendo 64 (lembra-se disso?) Era uma máquina de 64 bits, mas a maior parte do código era de 32 bits. Então, nesse caso, 64 bits serviu mais como um truque de marketing.
A resposta atualmente aceita é geralmente correta, mas não especificamente. Realmente não existe uma coisa chamada "CPU de 32 bits" ou "" CPU de 64 bits "- essa é uma descrição que se refere a apenas uma pequena parte da arquitetura da CPU. Em particular, faz referência ao número de linhas de seleção de endereço entre a CPU e a memória, ou seja, o chamado espaço de endereço disponível para operações de memória.
Antigamente, quando a CPU quando as pessoas costumavam sentar e tecer (enrolar) os fios entre um processador e a memória, você teria que usar 32 ou (teoricamente, porque não existia na época) 64 fios entre a CPU e o controlador de memória que seriam usados para especificar qual endereço de memória você deseja acessar. Por exemplo, digamos que temos uma arquitetura de memória de 2 bits: o envio de 00 seleciona o endereço 0, 01 seleciona o endereço 1, 10 seleciona o endereço 2 e 11 seleciona o endereço 3. Esse 2 bits fornece 2 ^ 2 bytes de RAM (4 bytes).
Se você usa uma CPU de 32 bits e adiciona mais 32 fios entre a CPU e o controlador de memória para poder suportar mais memória, agora você tem uma "CPU de 64 bits" que pode executar 32 bits código ou código de 64 bits. O que isso significa e como isso acontece? Bem, vamos pegar nossa CPU de 2 bits da parte anterior desta resposta e adicionar outra ligação, transformando-a em uma CPU de 3 bits, levando-nos de 4 bytes a 2 ^ 3 ou 8 bytes de RAM.
O código "2 bytes" existente será executado, configurando os valores dos 2 últimos fios, como indicado acima (00-11). Por padrão, a conexão extra será zero, então, na verdade, quando o código de 2 bytes é executado, quando seleciona 00, ele seleciona 000 e, quando seleciona 11, seleciona 011. Fácil.
Agora, um programador deseja escrever código de 3 bytes "nativo" e escreve seu software para aproveitar o espaço de endereço extra. Ela diz à CPU que sabe o que está fazendo e que assumirá o controle manual dos novos fios extras. Seu software conhece o (s) fio (s) extra (s) e envia corretamente 000-111, fornecendo acesso total à faixa de memória suportada por essa nova arquitetura de CPU.
Mas não é assim que tem que acontecer. De fato, normalmente não é assim que as coisas acontecem. Quando as CPUs de 64 bits foram introduzidas pela primeira vez (e havia muitas), todas elas foram criadas com arquiteturas / projetos totalmente novos. Eles não aderiram apenas a 32 fios adicionais e disseram "aqui está, esta é uma CPU de 64 bits que você pode usar no modo de 32 ou 64 bits", mas eles disseram "Esta é a nossa nova CPU e leva apenas a programação nessa linguagem de máquina totalmente nova, se comporta de maneira totalmente nova, resolve um bazilhão de problemas diferentes com muito mais elegância do que as antigas CPUs x86 / i386 de 32 bits de todos os tempos e é uma arquitetura nativa de 64 bits. . "
Essa era a história do Intel Itanium, agora conhecido como o "Itanic" por causa de quão massivamente afundou. Era para anunciar a nova era de 64 bits e era algo para se ver. Instruções de tamanho variável, caches enormes, espaço de endereço de 64 bits, toneladas de registros, super emocionante, super legal e super difícil de convencer todos a recompilar ou reescrever 20 anos de código legado. Isso aconteceu quando a AMD e a Intel estavam realmente competindo, e a AMD teve a brilhante idéia de dizer "vamos esquecer tudo isso 'resolver todos os problemas do mundo' 'e adicionar mais 32 fios ao i386 e criar um processador compatível com 32 bits de 64 bits. CPU de bit "e a arquitetura da CPU x86_64 nasceu.
De fato, se você olhar para os nomes e fontes do kernel para os principais sistemas operacionais (Linux, Windows, BSDs, etc.), você os encontrará repletos de referências às CPUs AMD64 e à arquitetura AMD64. A AMD criou uma estratégia vencedora para fazer com que todos mudassem para o mundo de 64 bits, preservando a compatibilidade com aplicativos de 32 bits, de maneira que um sistema operacional de 32 bits pudesse ser executado em hardware de 64 bits ou aplicativos de 32 bits. pode ser executado em um sistema operacional de 64 bits em hardware de 64 bits. A Intel seguiu a suíte mais cedo ou mais tarde com sua arquitetura "Intel EM64T" (que era basicamente idêntica à AMD64) e x86_64 venceu, enquanto o Itanic e outros como MIPS64 e ALPHA64 não eram mais vistos no mercado de desktops / servidores.
As CPUs tl; dr amd64, também conhecidas como x86_64, foram projetadas para serem compatíveis com o kernel e o código de 32 e 64 bits, mas a maioria das CPUs de 64 bits não é compatível com versões anteriores da mesma maneira. Uma CPU de 32 bits pode acessar no máximo 4GiB de memória, enquanto uma CPU de 64 bits pode acessar impressionantes 16 EiBs (16 × 1024 ^ 6 bytes, ou 4 bilhões de vezes mais memória que 4GiB).
Um sistema operacional de 32 e 64 bits pode ser executado em um processador de 64 bits, mas o sistema operacional de 64 bits pode usar a potência total do processador de 64 bits (registros maiores, mais instruções) - em suma, pode fazer mais trabalho ao mesmo tempo. Um processador de 32 bits suporta apenas o sistema operacional Windows de 32 bits.
32 and 64 bit OS can run on a 64 bit processor
geralmente não é correta