¿Qué hace que un circuito sea de arranque o capaz de ejecutar un sistema operativo? [cerrado]

-2

Publiqué esto en StackOverflow con la premisa de que cualquier programador (no un programador HTML, que no hace, estrictamente hablando, hace programación, aunque HTML requiere mucho conocimiento específico y tiene cierta semejanza con la programación) Debe estar familiarizado con esta información y ser capaz de responder. Sin embargo, tengo un voto negativo y una sugerencia para publicar aquí en su lugar. Así que estoy haciendo.

Me gustaría aclararme la siguiente área.

Consideremos el universo de los circuitos integrados. Un FPGA, un DSP, un chip controlador USB, una CPU y una GPU son ejemplos de IC. Sin embargo, me doy cuenta de que un controlador USB o un FPGA no puede "ejecutar un sistema operativo", mientras que una CPU sí puede. Otra fuente de confusión surgió cuando en una conferencia, nos dijeron que "Xeon PHI (el más antiguo, pre-Knights Landing) ejecuta un sistema operativo independiente y puede ser iniciado, por lo tanto, necesita comunicarse con él a través de la red". Según tengo entendido, esto diferencia al Phi de decir una GPU que, mientras está físicamente en el mismo bus PCI-E, es un dispositivo "esclavo" para la CPU.

Para que esta pregunta sea exacta, permítame resumir los siguientes puntos:

¿"Este IC es de arranque" es igual a "este IC puede ejecutar un sistema operativo"? ¿Qué hace que un IC sea capaz de lo anterior (por ejemplo, si comparamos un controlador ASMedia USB y una CPU, ambos son piezas de silicio que ejecuta código binario)?

¿Qué significa exactamente que un IC esté ejecutando un sistema operativo, en qué se diferencian los procesos en el silicio, por ejemplo, un controlador USB y una CPU?

Esto puede denominarse amplio, pero lo puse lo más preciso posible. Básicamente es una pregunta simple, pero dividida en partes para mayor claridad.

    
pregunta iksemyonov

2 respuestas

2

Ok, volviendo a lo básico. Un procesador ejecuta instrucciones almacenadas en algún tipo de memoria. Está diseñado para que el usuario pueda cambiar las instrucciones cuando sea necesario. Así que un procesador puede hacer muchas cosas diferentes dependiendo de la programación.

El procesador logra esto al tener un hardware que es de propósito general. Obtiene la instrucción, decide lo que debe hacerse y ejecuta la instrucción. Por ejemplo, el oleoducto RISC es una solución:

Un ASIC, como un Ethernet PHY, está diseñado para hacer una cosa. No cambia. Esto significa que necesita menos recursos de hardware que un procesador y puede ser mucho más rápido. Todas las instrucciones de obtención y decodificación ya no son necesarias.

Ahora, un sistema operativo consiste en un núcleo que elimina la necesidad de interactuar con el hardware, también conocido como abstracción. Arranca en el sentido de que hay un cargador de arranque en forma de instrucciones del procesador. El cargador de arranque carga el núcleo en la memoria, que nuevamente es un conjunto de instrucciones del procesador. El cargador de arranque luego pasa el control al kernel, y el kernel puede arrancar el sistema operativo y comenzar a ejecutar el código de usuario. El kernel actúa como un búfer entre el hardware y el software del lado del usuario.

    
respondido por el user110971
2

Estás buscando una distinción que sea más filosófica que práctica. Es la escalera de Wittgenstein.

  

donde está la línea que separa un IC programable de otro, que permite que el primero ejecute un sistema operativo

¿Cómo se distingue un sistema operativo de otros tipos de programas? Podría decir que un programa que carga otros programas bajo el control del usuario es un sistema operativo , y que el primer programa que ejecuta un procesador desde la ROM o la EPROM que carga otros programas es el gestor de arranque .

Entonces empiezas a tener problemas con los casos de límites. Algunos microcontroladores solo pueden reprogramarse externamente. A la inversa, las GPU son procesadores totalmente generales con una arquitectura extraña; Una NVIDIA GPU tiene su propio BIOS que inicia un sistema operativo de programación de tareas. Raspberry Pi es otro ejemplo: la GPU se inicia primero, ejecuta una ROM de inicio que lee la tarjeta SD y inicia la secuencia de arranque para el procesador ARM (tres etapas de programas-loading-programs antes de que ARM pueda ejecutar una instrucción).

Los FPGA hacen la distinción aún más compleja. El FPGA carga un 'flujo de bits' al inicio para definir su función. Eso podría incluir un procesador o varios, que luego necesitan cargar código desde algún lugar.

Luego hay sistemas como el procesador seguro aislado en el iPhone. Se "inicia", pero solo ejecutará el código firmado con las claves de Apple.

Más preguntas útiles son cosas como "¿este dispositivo tiene firmware que se puede reemplazar después de la fabricación", o "tiene esto un MMU que me permitiría ejecutar un sistema operativo protegido con memoria como Linux".

    
respondido por el pjc50

Lea otras preguntas en las etiquetas