¿El sistema operativo asigna cada proceso a un núcleo separado?

¿El sistema operativo asigna cada proceso a un núcleo separado?

Ok, conozco el argumento clásico para evitar los cuatro núcleos. A nivel de aplicación, la mayoría de las aplicaciones no se han escrito para múltiples núcleos. La mayoría del software de escritorio ni siquiera necesita paralelización.

Sin embargo, a nivel del sistema operativo, parece obvio que el sistema operativo dividiría los procesos entre los distintos núcleos. ¿No sería esto por sí solo un argumento para conseguir más núcleos? ¿No ayuda eso mucho en muchas situaciones? Tienes algunas tareas que requieren un uso intensivo de la CPU; es posible que cada uno de esos procesos esté acaparando el 100% de sus núcleos, pero aún puedo navegar por la web y hacer preguntas sobre SuperUser en mi último núcleo... ¿verdad?

Respuesta1

El sistema operativo no puede dividir un proceso individual de un solo subproceso en múltiples núcleos (aunque puede cambiar en qué núcleo se ejecuta una aplicación, pero esa es una pregunta diferente), sin embargo, puede ejecutar múltiples procesos, cada uno en su propio núcleo. Entonces, sí, si tiene varias aplicaciones con uso intensivo de procesador ejecutándose en segundo plano, es probable que todavía tenga un núcleo de repuesto haciendo poco o nada que pueda usar para ejecutar otras aplicaciones.

Respuesta2

Para agregar a la respuesta de @heavyd, la razón de esto es que el sistema operativo no tiene la capacidad de determinar qué partes del proceso pueden ejecutarse en paralelo y cuáles no. Si un programa no está diseñado para ejecutarse en núcleos paralelos, puede tener rutinas dentro de la aplicación que estén diseñadas para ejecutarse secuencialmente al mismo tiempo. Esto puede causar todo tipo de problemas (como si 2 rutinas usan el mismo bloque de memoria pero no deben ejecutarse al mismo tiempo).

El sistema operativo puede usar múltiples núcleos para múltiples procesos, ya que lo hace de todos modos, pero distribuir una aplicación de un solo núcleo en múltiples núcleos provocará todo tipo de comportamiento inesperado.

Respuesta3

A fin de cuentas, no importa si un procesador tiene un uso del 1 % o del 95 % (siempre que sea estable al 95 % y no alcance su punto máximo), los programas se ejecutarán a la misma velocidad siempre que no llega al 100%. Los ciclos de CPU no utilizados simplemente se desperdician.

Debido a esto, Windows 7 (en procesadores compatibles) tiene una tecnología conocida como "core parking" que básicamente desactiva los núcleos no utilizados en su computadora para ahorrar electricidad.

Las aplicaciones de un solo subproceso se transfieren automáticamente a núcleos alternativos; no estoy seguro de la tecnología detrás de esto, pero sé que funciona bastante bien.

Respuesta4

Sus sentimientos iniciales son correctos: HAY una inclinación negativa hacia múltiples núcleos, y en realidad no es tan merecida.

En el pasado, cuando la mayoría de los usuarios solo usaban su PC de escritorio para un simple procesamiento de textos, es posible que haya habido una discusión. Pero hoy en día, con cosas como navegadores con múltiples pestañas, cada una en su propio proceso (Chrome y, es decir, separación de niveles de proceso para pestañas), además de cosas como decodificadores de video dentro de páginas web y tareas adicionales que podrían descargarse fácilmente sobre la marcha. renderizado de efectos también conocido como css3, incluso el navegador por sí solo puede justificar una razón para mucha más memoria RAM y algunos núcleos.

Agregue a eso el hecho de que algunos usuarios también pueden jugar en esta PC, o usar herramientas como garageband, imovie, handbrake y múltiples núcleos pueden ser un gran beneficio.

No es cierto suponer que necesita maximizar (es decir, 100% de uso de CPU en un solo núcleo) un núcleo para que otro núcleo sea útil. Porque aquí estamos hablando de paralelismo. El cambio de tareas dentro de una CPU generalmente realiza un lote de operaciones antes de cambiar su pila a otro proceso. No todas estas tareas están vinculadas a la CPU, por lo que no verá un pico de CPU aunque el núcleo esté bloqueado.

Básicamente, tienes razón, pero ¿cuál es la cantidad de núcleos más eficiente? 2? 4? 12? Lo más probable es que esto dependa de los hábitos de los usuarios... Tiendo a usar este 2-4 para la mayoría de los usuarios, pero sólo estoy adivinando.

información relacionada