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


15

Ok, conozco el argumento clásico para evitar los núcleos cuádruples. 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 en sí mismo un argumento para obtener más núcleos? ¿Eso no ayuda mucho en muchas situaciones? Tienes algunas tareas intensivas de CPU en marcha; esos procesos podrían estar 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?


Un flujo fundamental para esta pregunta y las respuestas es la suposición de que un solo proceso tiene un solo subproceso. Este no es el caso en muchos casos. E incluso si el proceso es de un solo hilo, varias bibliotecas del sistema / dll agregan sus propios hilos.
harrymc

Respuestas:


12

El sistema operativo no puede dividir un proceso de subproceso único individual en varios 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 múltiples aplicaciones de procesador intensivo ejecutándose en segundo plano, es probable que todavía tenga un núcleo libre sentado haciendo poco o nada que pueda usar para ejecutar otras aplicaciones.


La palabra clave aquí es si tiene múltiples aplicaciones intensivas de procesador, esa es una situación poco común para la mayoría de los usuarios.
Gilles 'SO- deja de ser malvado'

Gracias por la respuesta. Sí, el último caso es lo que intento describir.
Doug T.

3

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 se pueden ejecutar 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 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 están destinadas a ejecutarse al mismo tiempo).

El sistema operativo puede usar múltiples núcleos para múltiples procesos, ya que de todos modos lo hace, pero difundir una aplicación de un solo núcleo a través de múltiples núcleos causará todo tipo de comportamientos inesperados.


Gracias. Entiendo que. Mi pregunta puede haber sido mal redactada. Quería preguntar más sobre los procesos de colocación del sistema operativo en núcleos separados. No de alguna manera mágica haciendo que el proceso de un solo hilo abarque los núcleos.
Doug T.

3

Cuando se trata de eso, no importa si un procesador está al 1% de uso o al 95% de uso (siempre que sea estable al 95% y no alcance el máximo), los programas se ejecutarán a la misma velocidad siempre que No está llegando 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 "estacionamiento central" 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.


2

Sus sentimientos iniciales son correctos: hay una inclinación negativa hacia múltiples núcleos, y no es realmente todo lo que se merece.

En el pasado, cuando la mayoría de los usuarios solo usaban su PC de escritorio para un simple procesamiento de texto, es posible que haya habido una discusión. Pero en estos días, con elementos como navegadores con múltiples pestañas, cada uno en su propio proceso (cromo y, por ejemplo, separación de nivel de proceso para pestañas) más cosas como decodificadores de video dentro de páginas web y tareas adicionales que podrían descargarse fácilmente como sobre la marcha renderizado de efectos también conocido como css3, incluso el navegador 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, múltiples núcleos puede 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 estamos hablando de paralelismo aquí. El cambio de tareas dentro de una CPU generalmente realiza un lote de operaciones antes de intercambiar 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 el número más eficiente de núcleos? 2? 4? 12? Esto probablemente dependerá de los hábitos de los usuarios ... Tiendo a este 2-4 para la mayoría de los usuarios, pero solo estoy adivinando.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.