¿Se puede ejecutar un SO de 32 bits en un procesador de 64 bits?

25

¿Cuál es la diferencia entre el sistema operativo de 32 bits y el sistema operativo de 64 bits? ¿Se puede ejecutar un SO de 32 bits en un procesador de 64 bits?

al azar
fuente
Si está hablando de Windows (y la etiqueta Win32 parece indicar eso), entonces sí, absolutamente: Vista y Win7 de 64 bits admiten casi todas las aplicaciones de 32 bits a través de una capa de compatibilidad. Todavía no he encontrado nada que no no funciona bien en Vista de 64 bits (a excepción de los controladores de nivel de sistema)
marzo
55
La pregunta parece más si puede instalar, por ejemplo, Win Vista x86 en una caja que tiene un procesador de 64 bits, en lugar de si las aplicaciones x86 se ejecutan en, digamos, Win Vista x64.
KTC

Respuestas:

34

Su pregunta es específica de la arquitectura. x64 es esencialmente una extensión de la arquitectura x86. Es compatible con un espacio de direcciones de 64 bits. Proporciona algunas nuevas instrucciones y nuevos registros.

Puede ejecutar Windows x86 de 32 bits en una máquina x64. Tenga en cuenta que no puede hacer esto en los sistemas Itanium de 64 bits.

Mehrdad Afshari
fuente
16

Un procesador de 64 bits puede ejecutar el SO 32 y 64 (al menos una lata x64). Un procesador de 32 bits solo puede ejecutar 32 de forma nativa.

La diferencia es principalmente sobre el tamaño de un puntero / referencia. En máquinas de 64 bits, puede hacer referencia a una dirección en un rango de direcciones de 64 bits (lo que le proporciona 2 ^ 64 bytes de memoria). En 32 bits solo puede direccionar 2 ^ 32 bytes (= 4 GB). Ahora, si nos fijamos en las computadoras actuales, es obvio por qué el mundo se está moviendo a 64 bits: 32 bits ya no puede abordar fácilmente toda la RAM.

En x64 (AMD / Intel) tiene beneficios adicionales de 64 bits. La CPU tiene más registros y, por lo tanto, permite un código más eficiente.

En otras arquitecturas, las diferencias entre 64 y 32 bits son menos obvias. Por ejemplo, la Nintendo 64 (¿recuerda eso?) Era una máquina de 64 bits, pero la mayor parte de su código era de 32 bits. En ese caso, 64 bits sirvió más como un truco de marketing.

terdon
fuente
3

La respuesta actualmente aceptada es generalmente correcta, pero no específicamente. Realmente no hay una sola cosa llamada "CPU de 32 bits" o "" CPU de 64 bits ", es una descripción que se refiere solo a una pequeña parte de la arquitectura de la CPU. En particular, hace referencia al número de líneas de selección de direcciones entre la CPU y la memoria, es decir, el llamado espacio de direcciones disponible para operaciones de memoria.

En los días de antaño, cuando la CPU, cuando la gente solía sentarse y tejer (enrollar) los cables entre un procesador y la memoria, habría tenido que usar 32 o (en teoría, porque no existía en ese momento) 64 cables entre la CPU y el controlador de memoria que se utilizarían para especificar a qué dirección de memoria desea acceder. Por ejemplo, supongamos que tenemos una arquitectura de memoria de 2 bits: enviar 00 seleccionaría la dirección 0, 01 seleccionaría la dirección 1, 10 seleccionaría la dirección 2 y 11 seleccionaría la dirección 3. Este 2 bits nos da 2 ^ 2 bytes de RAM (4 bytes).

Si toma una CPU de 32 bits y agrega 32 cables más entre la CPU y el controlador de memoria para que pueda soportar mágicamente más memoria, ahora tiene una "CPU de 64 bits" que puede ejecutar 32 bits código o código de 64 bits. ¿Qué significa esto y cómo sucede? Bueno, tomemos nuestra CPU de 2 bits de la parte anterior de esta respuesta y agreguemos otro cable, convirtiéndola en una CPU de 3 bits, llevándonos de 4 bytes a 2 ^ 3 u 8 bytes de RAM.

El código existente de "2 bytes" se ejecutará, configurando los valores de los últimos 2 cables como se indica arriba (00-11). Conectaremos la conexión adicional a cero de manera predeterminada, por lo que, en realidad, cuando se ejecuta el código de 2 bytes, cuando selecciona 00, en realidad selecciona 000 y cuando selecciona 11, en realidad selecciona 011. Fácil.

Ahora un programador quiere escribir código "nativo" de 3 bytes y escribe su software para aprovechar el espacio de direcciones adicional. Ella le dice a la CPU que sabe lo que está haciendo y que tomará el control manual de los nuevos cables adicionales. Su software conoce los cables adicionales y envía correctamente 000-111, lo que le da acceso completo al rango de memoria compatible con esta nueva arquitectura de CPU.

Pero no es así como tiene que suceder. De hecho, normalmente no es así como suceden las cosas. Cuando se introdujeron por primera vez CPU de 64 bits (y había muchas), todas fueron con arquitecturas / diseños completamente nuevos. No solo agregaron 32 cables adicionales y dijeron "aquí tienes, esta es una CPU de 64 bits que puedes usar en modo de 32 bits o 64 bits", sino que dijeron "Esta es nuestra nueva CPU y solo requiere programación en este lenguaje de máquina completamente nuevo, se comporta de esta manera completamente nueva, resuelve miles de problemas diferentes de manera mucho más elegante que las antiguas CPU x86 / i386 de 32 bits, y es una arquitectura nativa de 64 bits. ".

Esa fue la historia del Intel Itanium, ahora conocido como el "Itanico" debido a lo masivo que se hundió. Se suponía que anunciaría la nueva era de 64 bits, y era algo para contemplar. Instrucciones de longitud variable, cachés enormes, espacio de direcciones de 64 bits, toneladas de registros, súper emocionante, súper genial y súper difícil de convencer a todos para que recompilen o reescriban 20 años de código heredado. Esto fue cuando AMD e Intel estaban realmente compitiendo, y AMD tuvo la brillante idea de decir "olvidemos todo esto 'resuelva todos los problemas del mundo' y simplemente agregue 32 cables más al i386 y haga un 64- compatible de 32 bits bit CPU "y nació la arquitectura de CPU x86_64.

De hecho, si observa los nombres y las fuentes del núcleo para los principales sistemas operativos (Linux, Windows, BSD, etc.), los encontrará repletos de referencias a CPU AMD64 y arquitectura AMD64. A AMD se le ocurrió una estrategia ganadora para hacer que todos se cambien al mundo de 64 bits al tiempo que conserva la compatibilidad con las aplicaciones de 32 bits, de manera que un sistema operativo de 32 bits pueda ejecutarse en hardware de 64 bits o incluso aplicaciones de 32 bits podría ejecutarse en un sistema operativo de 64 bits en hardware de 64 bits. Intel siguió a la suite más temprano que tarde con su arquitectura "Intel EM64T" (que era básicamente idéntica a AMD64) y x86_64 ganó mientras que Itanic y otros como MIPS64 y ALPHA64 no se vieron más en el mercado de escritorio / servidor.

Las CPU tl; dr amd64 aka x86_64 están diseñadas para ser compatibles con el núcleo y el código de 32 y 64 bits, pero la mayoría de las CPU de 64 bits definitivamente no son compatibles con versiones anteriores de la misma manera. Una CPU de 32 bits puede acceder a un máximo de 4 GiB de memoria, mientras que una CPU de 64 bits puede acceder a unos impresionantes 16 EiB (16 × 1024 ^ 6 bytes, o 4 mil millones de veces más memoria que 4 GiB).

Mahmoud Al-Qudsi
fuente
1
Tiene algunos errores de hecho: 1) el itanium no introdujo instrucciones de longitud variable (cada x86 las ha tenido); añadió instrucciones de palabras muy largas, que podían operar simultáneamente en múltiples cantidades de 64 bits. 2) x86_64 no solo golpeó más líneas de dirección; también agregó un montón de registros adicionales y amplió todos los registros (y las ALU que operan en ellos) de 32 a 64 bits. Compare esto con el 8086/8088, que agregó 4 líneas de dirección más y registros de selector de segmento, pero los mantuvo a todos en 16 bits, como el 8080 anterior.
psusi
-1

Tanto el sistema operativo de 32 bits como el de 64 bits pueden ejecutarse en un procesador de 64 bits, pero el sistema operativo de 64 bits puede usar toda la potencia del procesador de 64 bits (registros más grandes, más instrucciones); en resumen, puede hacer más trabajo al mismo tiempo. Un procesador de 32 bits solo admite el sistema operativo Windows de 32 bits.

CsTamas
fuente
3
Esto es incorrecto en general, aunque correcto para x64 específicamente.
ChrisInEdmonton
1
Un procesador de 32 bits ejecutará cualquier sistema operativo diseñado para ejecutarse en dicha arquitectura de procesador.
Waxhead
un sistema operativo x86 de 32 bits obviamente no puede ejecutarse en ARM64, por 32 and 64 bit OS can run on a 64 bit processorlo que generalmente no es correcto
phuclv
@ Phúc Puede haber procesadores de 64 bits, que no admiten su gemelo de 32 bits. Sin embargo, usas lógica falsa en tu argumento. SunOS 4.4.1 en MicroSparc de 32 bits tampoco se ejecutará en ARM32. Usando sus medios lógicos, generalmente no es correcto que un SO de 32 bits pueda ejecutarse en un procesador de 32 bits. Si ignoro el sentido común como usted, puedo argumentar que el sistema operativo ARM de 32 bits se ejecuta en Intel i386 / x64, ya que los desarrolladores de Android ejecutan imágenes ARM de Android en sus máquinas Wintel. Por supuesto, el sistema operativo es para la familia de procesadores adecuada y, por supuesto, el sistema operativo se ejecuta en hardware físico y no en emulación (suficiente dicho, fuera)
Tino