
En las computadoras, el kernel se encuentra entre la aplicación y el hardware (CPU) y permite que el software interactúe con el hardware.
Entonces, en Microsoft Surface X (procesador SQ1 y SQ2), ¿por qué los desarrolladores no pueden transferir sus aplicaciones desde Windows x86? por ejemplo, Chrome, Firefox, algunas herramientas y juegos de referencia... Pensé que Microsoft sólo necesitaba reemplazar su kernel x86-64 con la versión ARM y la mayoría de las aplicaciones funcionarán bien.
Lo mismo ocurre con Linux.
Respuesta1
En este caso, el kernel hace menos de lo esperado. En particular, el kernel no traduce, analiza, interpreta o modifica el código de máquina del que está hecho un binario compilado.
cuando alguiencompilacódigo fuente a un binario, lo que realmente están haciendo es traducir ese código fuente ainstrucciones de código de máquinaque la CPU entienda.
Una de las cosas que hacex86una plataforma, es un compartidoConjunto de instruccionesen todo el hardware compatible. De esa manera, un compilador puede esperar que cualquier CPU x86 comprenda la PUSH
instrucción y haga lo esperado cuando la ejecute a través de un subproceso.
BRAZOutiliza un conjunto de instrucciones diferente. En este caso, el código fuente debe compilarse (traducirse) en instrucciones que una CPU ARM pueda entender (instrucciones definidas en su conjunto de instrucciones).
No todos los programas utilizan binarios "nativos" (binarios que consisten exclusivamente en instrucciones bien formadas que se implementan mediante el conjunto de instrucciones de la CPU). Los lenguajes como Java y C# se compilan en un lenguaje ensamblador virtual y se compilan JIT en instrucciones nativas en tiempo de ejecución. Otros utilizan intérpretes personalizados para una plataforma determinada.
En resumen, las CPU ARM no reconocen el lenguaje que utilizan los programas compilados x86 y viceversa. Si bien el Kernel controlará cosas como el acceso al hardware y la programación de la CPU, no cambia las instrucciones de los programas que se ejecutan en el sistema. simplemente crea el proceso, inicia la ejecución y otorga tiempo de ejecución en la CPU, de modo que muchos procesos puedan compartirlo semisimultáneamente.