¿El sistema operativo explota múltiples núcleos?

¿El sistema operativo explota múltiples núcleos?

Sé que más núcleos no siempre es mejor y que la mayoría de las aplicaciones son de un solo subproceso, pero ¿el sistema operativo utiliza núcleos adicionales? Por ejemplo, supongamos una aplicación como un diccionario de fuerza bruta. ¿Ejecutar cuatro instancias separadas de esto (en un 1/4 separado del diccionario) en un procesador de cuatro núcleos generaría los mismos beneficios si el programa fuera en realidad multiproceso? Esencialmente, ¿el sistema operativo permitiría que las cuatro instancias se ejecuten realmente a la vez sin apropiarse?

Tiendo a ejecutar muchas aplicaciones independientes a la vez (Firefox con un montón de pestañas, Office, chat, herramientas de desarrollo, juegos).

Respuesta1

Generalmente, sí, el sistema operativo distribuiría 4 instancias de un programa en 4 núcleos si los núcleos estuvieran disponibles para su uso (es decir, otros programas no los estén usando). Esto podría brindarle beneficios similares en comparación con tener 4 subprocesos, excepto por una posible sobrecarga (por ejemplo, lo más probable es que 4 subprocesos compartan una copia de cualquier diccionario cargado, mientras que lo más probable es que 4 procesos carguen cada uno copias separadas del diccionario).

Respuesta2

Para utilizar todos los núcleos disponibles, necesita (a) soporte del sistema operativo y (b) una carga de trabajo de aplicaciones que pueda aprovechar múltiples núcleos. El soporte del sistema operativo es un hecho para todos los sistemas operativos modernos, por lo que todo se reduce a si la carga de trabajo de su aplicación puede aprovechar múltiples núcleos.

Si ejecuta varias aplicaciones simultáneamente, puede beneficiarse de varios núcleos. Si varios programas intentan ejecutarse al mismo tiempo, el sistema operativo los programará en varios núcleos.

Si está utilizando solo una aplicación a la vez, entonces depende de la aplicación si varios núcleos lo ayudarán. En particular, depende de si la aplicación está escrita para ser multiproceso o monoproceso. Una aplicación de un solo subproceso solo hace una cosa a la vez y, por lo tanto, solo puede usar un único núcleo. Una aplicación de subprocesos múltiples crea múltiples subprocesos para hacer varias cosas a la vez, lo que permite que el sistema operativo programe cada subproceso en un núcleo diferente y potencialmente permite aceleraciones en un procesador multinúcleo.

Las aplicaciones deben diseñarse y escribirse especialmente para utilizar múltiples subprocesos y aprovechar múltiples núcleos, y muchas aplicaciones comunes no se benefician de múltiples núcleos, pero algunas sí. Por ejemplo, Photoshop está escrito de modo que si le pide que realice una tarea computacionalmente costosa, dividirá la tarea en partes más pequeñas y las distribuirá entre múltiples subprocesos, para que puedan ejecutarse en múltiples núcleos. Esto requirió una programación especial por parte de los desarrolladores de Photoshop y requiere mucho esfuerzo adicional por parte de los desarrolladores, por lo que muchas o la mayoría de las aplicaciones no se han molestado en usar este estilo de programación y no se beneficiarán mucho de una máquina de múltiples núcleos, pero algunas sí.

Dado que tiende a ejecutar muchos programas independientes al mismo tiempo, probablemente verá al menos algunos beneficios de un procesador multinúcleo.

información relacionada