it-swarm-pt.tech

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?

23
Prabhu

Sua pergunta é específica da arquitetura. x64 é essencialmente uma extensão da arquitetura x86. Suporta um espaço de endereçamento 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 em sistemas Itanium de 64 bits.

32
Mehrdad Afshari

Um processador de 64 bits pode executar 32 e 64 SO (pelo menos um 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ê só pode endereçar 2 ^ 32 bytes (= 4 GB). Agora, se você olhar para os computadores atuais, é óbvio por que o mundo está se movendo para 64 bits: 32 bits não podem mais facilmente endereçar todos os RAM.

Em x64 (AMD/Intel) você tem benefícios adicionais de 64 bits. A CPU tem 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 (lembre-se disso?) Era uma máquina de 64 bits, mas a maior parte de seu código era de 32 bits. Então, nesse caso, o bit 64 serviu mais como um truque de marketing.

14
Lemmy

A resposta atualmente aceita é geralmente correta, mas não especificamente. Não existe realmente uma única 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, ela faz referência ao número de linhas de seleção de endereço entre a CPU e a memória, isto é, o chamado espaço de endereço disponível para operações de memória.

Nos tempos passados, quando a CPU, quando as pessoas costumavam se sentar e tecer (embrulhar) 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ê queria acessar. Por exemplo, digamos que temos uma arquitetura de memória de 2 bits: o envio de 00 selecionaria o endereço 0, 01 selecionaria o endereço 1, 10 selecionaria o endereço 2 e 11 selecionaria o endereço 3. Esse 2 bit nos dá 2 ^ 2 bytes de RAM (4 bytes).

Se você pegar uma CPU de 32 bits e adicionar mais 32 fios entre a CPU e o controlador de memória para poder suportar magicamente mais memória, agora você tem uma "CPU de 64 bits" que pode rodar 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 outro fio, transformando-o em uma CPU de 3 bits, levando de 4 bytes para 2 ^ 3 ou 8 bytes de RAM.

O código "2-byte" existente será executado, configurando os valores dos últimos 2 fios, como indicado acima (00-11). Conectaremos a conexão extra a zero por padrão, então, na verdade, quando o código de 2 bytes é executado, quando ele seleciona 00, ele está realmente selecionando 000 e, quando seleciona 11, ele está realmente selecionando 011. Fácil.

Agora, um programador quer escrever código "nativo" de 3 bytes e grava seu software para aproveitar o espaço de endereço extra. Ela diz à CPU que ela 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, dando-lhe acesso total à faixa de memória suportada pela nova arquitetura da CPU.

Mas não é assim que tem que acontecer. Na verdade, isso é normalmente não como as coisas acontecem. Quando as CPUs de 64 bits foram introduzidas pela primeira vez (e houve muitas), todas foram com arquiteturas/projetos totalmente novos. Eles não apenas adicionaram 32 fios adicionais e disseram "aqui você vai, este é um processador de 64 bits que você pode usar no modo de 32 ou 64 bits", mas eles disseram "Este é nosso novo processador e só é preciso programação nesta linguagem de máquina inteiramente nova, comporta-se desta maneira inteiramente nova, resolve um bazillion de problemas diferentes muito mais elegantemente do que as antigas CPUs x86/i386 de 32 bits já fizeram, e é uma arquitetura nativa de 64 bits. "

Essa foi a história do Intel Itanium, agora conhecido como o "Itanic" por causa do quão massivamente afundou. Era para anunciar na nova era de 64 bits, e era algo para ser visto. 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 a todos a recompilar ou reescrever 20 anos de código herdado. Isso ocorreu quando a AMD e a Intel estavam na verdade competindo, e a AMD teve a brilhante idéia de dizer "vamos esquecer tudo isso", resolver todos os problemas do mundo e adicionar 32 fios ao i386 e fazer um 64-bit compatível com 32-bit. CPU bit "e a arquitetura da CPU x86_64 nasceu.

De fato, se você olhar os nomes e fontes do kernel para os principais sistemas operacionais (Linux, Windows, BSDs, etc), você os encontrará repletos de referências a CPUs AMD64 e arquitetura AMD64. A AMD criou uma estratégia vencedora para fazer com que todos migrassem para o mundo de 64 bits, preservando a compatibilidade com aplicativos de 32 bits, de forma que um sistema operacional de 32 bits pudesse ser executado em hardware de 64 bits ou até mesmo em 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 a Itanic e outras como MIPS64 e ALPHA64 não eram mais vistas no mercado de desktops e servidores.

as CPUs AMD86 x86_64 são projetadas para serem compatíveis tanto com o kernel quanto com o código de 32 e 64 bits, mas a maioria das CPUs de 64 bits é decididamente não retroativamente compatível 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 vezes mais memória do que 4GiB) .

3
Mahmoud Al-Qudsi