¿Los Sistemas Operativos necesitan saber cuál es la arquitectura de hardware sobre la que se están ejecutando?

¿Los Sistemas Operativos necesitan saber cuál es la arquitectura de hardware sobre la que se están ejecutando?

Quizás esta sea una pregunta teórica básica, pero no tengo idea de la respuesta y no he encontrado información al respecto.

¿Los sistemas operativos (imagínense las distribuciones de Windows o Linux) necesitan saber si se ejecutan en una microarquitectura u otra (por ejemplo, en la arquitectura Intel Sandy Bridge o en la arquitectura Intel Haswell)? ¿O el sistema operativo no tiene idea de estos detalles?

El hecho de que el sistema operativo sea el "puente" entre el usuario y la arquitectura del microprocesador me ha hecho pensar que el sistema operativo sí necesita conocer esos detalles porque quizás hay ciertas cosas del sistema operativo que no se ejecutan de manera idéntica en un Intel Sandy Bridge. que en un Bulldozer AMD.

Si la respuesta es sí, ¿cómo se comunica el hardware con el SO cuál es su arquitectura?

Respuesta1

Intel y AMD x86 (y x86_64) tienen la misma "arquitectura" de procesador en lo que a sistema operativo se refiere. Los conjuntos de instrucciones "centrales" son idénticos y definen un nivel mínimo de funcionalidad del procesador.

Los procesadores pueden funcionar de forma completamente diferente.internamenteo inclusofísicamente, pero en lo que respecta al código de máquina (bytes hexadecimales) para las instrucciones, son idénticos. Tienen la misma arquitectura externa (x86), pero diferenteinternoarquitecturas (a menudo denominadas uArch o microarquitecturas).

Como resultado, la transferencia inicial del firmware del sistema (UEFI), que realiza la activación básica de la placa base y la inicialización del procesador, al sistema operativo es idéntica en AMD e Intel, ya que las mismas instrucciones para cargar bytes y elegir rutas de código serán las mismas. Una vez que se ejecuta el código de arranque, puede comenzar a cargar bibliotecas que pueden detectar extensiones de CPU y ejecutar código optimizado según lo que encuentre.

ARM y x86 son arquitecturas completamente diferentes tanto interna como externamente y los mismos bytes de código de máquina producirán código completamente diferente o no funcional, por lo que el ejecutable de arranque deberá compilarse para apuntar a la arquitectura específica en la que se ejecuta para poder generar el código de máquina correcto.

información relacionada