AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 481382
Accepted
jdonald
jdonald
Asked: 2018-11-13 21:09:33 +0800 CST2018-11-13 21:09:33 +0800 CST 2018-11-13 21:09:33 +0800 CST

O que é necessário para executar o software userland de 64 bits em um kernel de 32 bits?

  • 772

No Linux e no Windows, estou acostumado com a situação de precisar de um kernel de 64 bits para ter um sistema com multiarch/WoW onde posso executar software de 32 e 64 bits lado a lado.

E então, anos atrás, fiquei impressionado quando alguém me mostrou que o MacOS 10.6 Snow Leopard poderia executar aplicativos de 64 bits com o kernel no modo de 32 bits. Isso pode ser amplamente esquecido agora porque foi uma transição tecnológica única. Com o hardware à frente da curva no espaço móvel, até onde eu sei, isso nunca foi necessário na mudança para 64 bits para iOS e Android.

Minha pergunta: O que seria necessário para obter a mesma capacidade em um kernel Linux de 32 bits (i386 ou armhf)?

Eu entendo que isso provavelmente não é trivial. Se fosse, a Microsoft poderia ter colocado o recurso no Windows XP de 32 bits. Mas quais são os requisitos gerais? Já houve uma proposta de patch ou prova de conceito?

No mundo incorporado, acho que isso seria especialmente útil, pois o suporte de 64 bits pode ficar para trás por muito tempo nos drivers de dispositivo.

kernel 64bit
  • 2 2 respostas
  • 4014 Views

2 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2018-11-13T23:12:24+08:002018-11-13T23:12:24+08:00

    A execução de aplicativos de 64 bits requer algum suporte do kernel: o kernel precisa pelo menos configurar tabelas de páginas, tabelas de interrupção etc. contexto ao alternar entre aplicativos (e de aplicativos para o kernel e vice-versa). Assim, um kernel puramente de 32 bits não pode suportar espaço de usuário de 64 bits.

    No entanto, um kernel pode executar código de 32 bits no espaço do kernel, enquanto suporta código de 64 bits no espaço do usuário. Isso envolve um tratamento semelhante ao suporte necessário para executar aplicativos de 32 bits com um kernel de 64 bits: basicamente, o kernel precisa suportar as interfaces de 64 bits que os aplicativos esperam. Por exemplo, ele precisa fornecer algum mecanismo para o código de 64 bits chamar o kernel e preservar o significado dos parâmetros (em ambas as direções).

    A questão então é se vale a pena. No Mac e em alguns outros sistemas, um caso pode ser feito, pois o suporte ao código do kernel de 32 bits significa que os drivers não precisam fazer a troca simultaneamente. No Linux, o modelo de desenvolvimento é diferente: qualquer coisa no kernel é migrada conforme necessário quando grandes mudanças são feitas, e qualquer coisa fora do kernel não é realmente suportada pelos desenvolvedores do kernel. O suporte à área de usuário de 32 bits com um kernel de 64 bits é certamente útil e vale o esforço (pelo menos, foi quando o suporte x86-64 foi adicionado), não tenho certeza se há um caso a ser feito para 64 bits em 32 -pedaço...

    • 16
  2. Rui F Ribeiro
    2018-11-13T22:03:27+08:002018-11-13T22:03:27+08:00

    Snow Leopard foi capaz de executar binários de 64 bits em uma CPU Intel de 64 bits.

    Também foi capaz de inicializar com um kernel de 64 bits quando seu efi já era de 64 bits (meu lote de produção do Macbook "transition-model" pro já era uma máquina dessas).

    Não houve emulação envolvida, você apenas pagou um custo de desempenho menor ao inicializar no modo de 32 bits.

    Em CPUs puras de 32 bits, você não poderá fazer isso, pois eles não têm ideia de como interpretar código de 64 bits. A menos que você esteja emulando com software, o que seria muito lento para esse tipo de classe de máquinas incorporadas tradicionalmente fracas.

    • 3

relate perguntas

  • Como /proc/net/wireless é um "clone" de /proc/net/dev?

  • Danos no kernel do Linux Mint

  • Como os desenvolvedores do kernel Linux lidam com seu trabalho com milhões de linhas de código? É um método? [fechado]

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

  • Acesse o sistema de arquivos como usuário root

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve