¿Por qué los hilos se llaman hilos?


9

Entiendo que un proceso es una unidad de propiedad de recursos e instrucciones ejecutables. Los subprocesos permiten que un proceso comparta sus recursos con múltiples ejecuciones, y es más fácil para un sistema operativo programar subprocesos debido a todos los gastos generales asociados con procesos completos.

¿Pero por qué el hilo del nombre ? ¿Tiene alguna referencia a una cadena o al entrelazado de ejecución? Aun así, este no es un término intuitivo en mi opinión.

Respuestas:


11

¿Has mirado en un diccionario? La palabra hilo tiene un significado más allá de la costura.

3: algo continuo o extendido: como

a: una línea de razonamiento o línea de pensamiento que conecta las partes en una secuencia (a partir de ideas o eventos)

http://www.merriam-webster.com/dictionary/thread


Interesante. Había hecho una búsqueda de "definir hilo" pero esa definición no era una de ellas. Me alegra que hayas mencionado esto, porque es lo suficientemente abstracto como para cruzar el puente del uso general a la programación.
Matt

9

¿Alguna vez has visto cómo los hilos múltiples, retorcidos, forman un cordón más grueso y fuerte?

Esa es la metáfora, cada subproceso es independiente, pero todos los subprocesos juntos colaboran para una salida computacional final. Además, como en el hilo textil, un hilo puede romperse sin comprometer la estructura de todo el cordón.

ingrese la descripción de la imagen aquí


2
mientras que siempre imaginé "hilos" que solo usted y el Gran Maestro B los describieron, no estoy seguro acerca de todo el "cordón retorcido, más grueso y más fuerte". En cambio, la mayoría de los subprocesos en un sistema operativo se ven así: miqel.com/bonnaroo_2008_music/yarn_string_trips.jpg (el chico de la derecha sería el controlador de memoria) Sí, algunas veces pocas de esas cadenas están destinadas a resolver un problema común, pero la mayoría son solo allí y el sistema operativo simplemente les permite a todos hacer lo que quieran (dentro de lo razonable)
DXM

7

tl; dr: Se llaman hilos porque "hilo" es una metáfora adecuada.


Cuando inicia un hilo, confía en el sistema operativo para asignar el tiempo de procesamiento para que su hilo pueda ejecutarse. Mientras se ejecuta su hilo, el procesador (o núcleo) está poniendo toda su atención en su hilo. Cuando el sistema operativo cambia el núcleo a un subproceso diferente, el subproceso deja de ejecutarse mientras se repara el otro subproceso.

Entonces la ejecución salta por todos lados. Pero la integridad del conjunto de instrucciones de la máquina permanece intacta, a pesar de estos saltos, porque construimos cercas y mecanismos de concurrencia para proteger su estado y el estado de los objetos con los que interactúa.

Entonces, el hilo se refiere, no a la ejecución de instrucciones en un hilo particular, sino a las instrucciones que eventualmente se ejecutarán dentro del hilo que hemos creado. En otras palabras, cada subproceso puede considerarse como una máquina o agente individual (los llamamos procesos ligeros), sin tener que pensar en todos los cambios de contexto que realiza el sistema operativo para dar la apariencia de que todos ejecutando simultáneamente.

En otras palabras, a pesar de todos los saltos que hace el sistema operativo detrás de escena, lo que llamamos un hilo (la secuencia de operaciones que estamos ejecutando en un proceso ligero) todavía puede considerarse como la misma secuencia de operaciones, si no hubiéramos generado el hilo, asumiendo que hemos tomado las protecciones de concurrencia necesarias.


Si esta descripción parece demasiado pesada y abstracta, entonces piense en un hilo en un foro, como Reddit. Puede ramificar nuevas discusiones; cada discusión es su propio hilo. Puede saltar de un lado a otro entre hilos. Pero cada hilo aún mantiene su integridad estructural como una conversación individual.


4

Es difícil desenredar (juego de palabras completo) la fuente del término "Hilo" porque varias cosas enturbian las aguas.

El uso del hilo en el foro o en el sentido del correo electrónico casi seguramente proviene de la frase "hilo de conversación" que, según esto, se remonta hasta 1593.

Sin embargo, las cosas parecen estar menos claras para el significado del hilo sobre el que está preguntando, ya que de acuerdo con este enlace, los hilos como los conocemos en realidad no se llamaron "hilos" hasta los años 70 o posiblemente a principios de los 80 a pesar de la implementación de un proceso de memoria compartida en realidad es anterior a lo que consideramos procesos pesados ​​hoy en día. Dado que una forma relacionada de multiprocesamiento de memoria compartida se llama "fibra", sospecho firmemente que la palabra "hilo" debe ser una reminiscencia de telas de tejido o alguna otra analogía relacionada con textiles.


3

Creo que tiene que ver con un 'hilo de razonamiento' o un 'hilo de pensamiento'.

A diferencia de un proceso, los hilos comparten memoria. Entonces, si un proceso se compara con una persona con su propia mente (memoria), un hilo se puede comparar con una línea de pensamiento dentro de esa mente.


1

Leí en alguna parte la analogía de los hilos en la programación. Piense en la CPU como una aguja de coser, y el hilo como la cadena real. Ahora, si tiene varias agujas de coser pero solo un hilo. No creas, será bastante ineficiente. La otra CPU / aguja de coser estará esperando que el hilo esté disponible. Sin embargo, si tenemos varios subprocesos, el trabajo se puede realizar en poco tiempo.


1
¿Qué tiene de malo? ¿Por qué -1?
diestro
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.