2010-07-09 27 views
14

Digamos si tengo un procesador como this que dice # núcleos = 4, # hilos = 4 y sin compatibilidad con Hyper-threading.Hilos frente a núcleos

¿Eso significa que puedo ejecutar 4 programas/procesos simultáneos (ya que un núcleo es capaz de ejecutar solo un hilo)? ¿O eso significa que puedo ejecutar 4 x 4 = 16 programa/proceso simultáneamente?

De mi excavación, si no hay Hyper-threading, solo habrá 1 hilo (proceso) por núcleo. Corrígeme si estoy equivocado.

Respuesta

10

Eso es básicamente correcto, con el calificador obvio de que la mayoría de los sistemas operativos le permiten ejecutar muchas más tareas simultáneamente que núcleos o hilos, lo que logran entrelazando la ejecución de las instrucciones.

Un sistema con hyperthreading generalmente tiene el doble de subprocesos de hardware que los núcleos físicos.

+0

Es posible que desee tener cuidado con el uso de "simultáneamente". Para un usuario, podría parecer que algunas tareas están sucediendo simultáneamente, pero el hardware real podría no estar realizando cada tarea simultáneamente. Creo que la publicación de @mikaelbrandin con información sobre paralelo vs. concurrente es útil. – user3731622

+1

@ user3731622 Hice ese punto exacto en mi respuesta explicando que las CPU pueden intercalar instrucciones. ¿Cómo podría aclararlo? –

+0

Su respuesta es, probablemente, bastante clara para las personas con experiencia. Una forma en que podría aclarar un poco más a las personas inexpertas es que si usa alguna forma de la palabra aparece junto con simultánea o paralela y describe cómo algo puede aparecer simultáneamente cuando no es realmente simultáneo. – user3731622

5

El término subproceso se utiliza generalmente como una descripción de un concepto de sistema operativo que tiene el potencial para ejecutarse independientemente de otros subprocesos. Si lo hace depende de si está atascado esperando algún evento (E/S de disco o pantalla, cola de mensajes), o si hay suficientes CPUs físicas (hyperthreaded o no) para permitir que se ejecute frente a otras que no esperan trapos.

Hyperthreading es un término de proveedor de CPU que significa un único núcleo, que puede multiplexar su atención entre dos cálculos. La manera más fácil de pensar en un núcleo con hiperflujo es como si tuviera dos CPU reales, ambas ligeramente más lentas de lo que la fabricación dice que el núcleo realmente puede hacer.

12

Un hilo difiere de un proceso. Un proceso puede tener muchos hilos. Un hilo es una secuencia de comandos que tienen un cierto orden. Un núcleo lógico se puede ejecutar en la secuencia de comandos. El sistema operativo distribuye todos los subprocesos a todos los núcleos lógicos disponibles, y si hay más subprocesos que núcleos, los subprocesos se procesan en una entrada rápida, y el núcleo cambia de uno a otro muy rápido.

Parecerá que todos los hilos se ejecutan simultáneamente, cuando en realidad el sistema operativo distribuye el tiempo de CPU entre ellos.

Tener múltiples núcleos da la ventaja de que se colocarán menos hilos concurrentes en un solo núcleo, menos cambiando entre hilos = mayor velocidad.

Hyper-threading crea 2 núcleos lógicos en 1 núcleo físico, y hace que el cambio entre hilos sea mucho más rápido.

2

Básicamente, esto depende del sistema operativo. Un subproceso es una construcción de alto nivel que contiene un puntero de instrucción y donde el sistema operativo coloca una ejecución de subprocesos en un procesador lógico adecuado. Entonces con 4 núcleos básicamente puedes ejecutar 4 instrucciones en paralelo. Donde como un hilo simplemente contiene información sobre qué instrucciones ejecutar y la colocación de instrucciones en la memoria.

Una aplicación normalmente utiliza un único proceso durante la ejecución y el sistema operativo cambia entre procesos para dar a todos los procesos un tiempo de proceso "igual". Cuando una aplicación implementa varios subprocesos, los procesos asignan más de un intervalo para la ejecución, pero comparte la memoria entre los subprocesos.

Normalmente hace una diferencia entre la ejecución concurrente y paralela. Donde la ejecución paralela es cuando realmente se ejecutan físicamente las instrucciones de más de un procesador lógico y la ejecución simultánea es la conmutación frecuente de un único procesador lógico que da la apariencia de ejecución paralela.

Cuestiones relacionadas