La motivación detrás de esta pregunta surge de explorar laPlaca Intel Galileo gen2que tiene un procesador de un solo subproceso.
- Estoy buscando una explicación conceptual sobre lo que eso significa para todas las aplicaciones del espacio de usuario que dependen de la existencia de subprocesos.
- ¿Significa esto que es necesario parchear el kernel para que las llamadas del sistema para la invocación de subprocesos se emulen en el software en lugar de depender del soporte de subprocesos de la CPU?
Respuesta1
Los sistemas multitarea manejan múltiples procesos y subprocesos independientemente de la cantidad de procesadores o núcleos instalados en el sistema y la cantidad de "hilos" que manejan. La multitarea funciona mediante división de tiempo: el kernel y cada proceso o subproceso en ejecución pasan algún tiempo ejecutándose y luego el sistema cambia al siguiente subproceso ejecutable. Los cambios ocurren con mucha frecuencia, lo que da la impresión de que todo funciona en paralelo incluso cuando no es así.
Todo esto sucede sin ningún cambio en las API, etc. Los sistemas multinúcleo deben poder ejecutar más subprocesos de los que soportan físicamente de todos modos, el caso de un solo núcleo es solo un ejemplo de eso.
Describir una CPU como de un solo subproceso se refiere asubprocesos múltiples simultáneos(SMT, o hyper-threading en el mundo Intel), no la capacidad de la CPU para ejecutar múltiples subprocesos (o procesos o tareas). Agregar funciones SMT a una CPU no agrega ninguna instrucción para ayudar a ejecutar subprocesos, solo permite un mejor uso del hardware en algunas circunstancias.