Um sistema operacional de 32 bits pode ser executado em um processador de 64 bits?

25

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?

aleatório
fonte
Se você está falando sobre o Windows (e a tag Win32 parece indicar isso), sim, com certeza - o Vista e o Win7 de 64 bits oferecem suporte a quase todos os aplicativos de 32 bits por meio de uma camada de compatibilidade - ainda não encontrei nada que não 't trabalho muito bem no Vista 64-bit (exceto para os motoristas de nível de sistema)
marc_s
5
A questão parece mais se você pode instalar o Win Vista x86 em uma caixa com um processador de 64 bits, e não se os aplicativos x86 rodam no Win Vista x64.
KTC

Respostas:

34

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.

Mehrdad Afshari
fonte
16

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.

Terdon
fonte
3

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

Mahmoud Al-Qudsi
fonte
1
Você tem alguns erros de fato: 1) o itanium não introduziu instruções de comprimento variável (todo x86 as possui); acrescentou instruções de palavras muito longas, capazes de operar simultaneamente em várias quantidades de 64 bits. 2) x86_64 não apenas bateu em mais linhas de endereço; Ele também adicionou vários registros extras e ampliou todos os registros (e as ALUs que operam neles) de 32 para 64 bits. Compare isso com o 8086/8088, que adicionou mais 4 linhas de endereço e registradores seletores de segmentos, mas manteve todos em 16 bits, como o 8080 anterior.
Psusi
-1

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.

CsTamas
fonte
3
Isso geralmente está incorreto, embora seja correto para x64 especificamente.
31430 ChrisInEdmonton
1
Um processador de 32 bits executará qualquer sistema operacional projetado para ser executado nessa arquitetura de processador.
Waxhead
um sistema operacional x86 de 32 bits, obviamente, não pode ser executado em ARM64, por isso 32 and 64 bit OS can run on a 64 bit processorgeralmente não é correta
phuclv
@ Phúc Pode haver processadores de 64 bits, que não suportam seus gêmeos de 32 bits. No entanto, você usa lógica falsa em seu argumento. O SunOS 4.4.1 no MicroSparc de 32 bits também não será executado no ARM32. Usando seus meios lógicos, geralmente não é correto que um SO de 32 bits possa ser executado em um processador de 32 bits. Se eu ignorar o bom senso como você, posso argumentar, que o SO ARM de 32 bits é executado no Intel i386 / x64, pois os desenvolvedores do Android executam imagens do ARM do Android em suas máquinas Wintel. Claro que o OS é para a família de processadores certo e claro, o OS é executado em hardware físico e não emulação (disse o suficiente, para fora)
Tino