Foro 1.
Diferencias entre procesos e hilos
Antes de explicar las diferencias entre procesos e hilos en el contexto de los Sistemas Operativos,
me gustaría descirbir brevemente cada uno de los conceptos:
¿Qué son procesos e hilos?
CONCEPTO DEFINICIÓN ESTADOS
Un proceso es cualquier programa en Nuevo: el SO crea uno o más procesos para
Proceso
ejecución, Para que un programa se ejecute, el poder ejecutar X programa.
SO debe crear un proceso para él.
En ejecución (running): el proceso se
Necesita ciertos recursos como tiempo de encuentra ejecutando instrucciones en el
CPU, memoria, archivos y dispositivos de CPU.
entrada y salida.
Bloqueado: proceso esperando a que ocurra
Aunque dos procesos estén asociados al mismo un suceso (frecuentemente a través de
programa, se consideran dos secuencias de dispositivos de E/S o señales de red).
ejecución separadas.
Preparado: listo y esperando a que se le
El proceso creador se denomina proceso padre, asigne a un procesador.
y el nuevo proceso, hijo.
Terminado: finaliza su ejecución y el SO le
Existen 2 opciones de creación: padre e hijo se retira los recursos que le habían sido
ejecutan concurrentemente o padre espera por asignados.
la finalización del hijo.
Un proceso tradicional es igual a una tarea con
un solo hilo.
Un hilo es una secuencia de tareas muy pequeña Creación: Se crea un proceso y se crea un hilo
Hilo
que puede ser ejecutada por un sistema para ese proceso. Luego, este hilo puede
operativo al mismo tiempo que otra. crear otros hilos dentro del mismo proceso.
Los hilos que comparten los mismos recursos,
Bloqueo: Un hilo necesita esperar por un
son en conjunto conocidos como un proceso. Al
compartirlos, cualquiera de estos hilos puede suceso, se bloquea (guarda sus registros,
acceder y modificar estos recursos. contador y punteros de pila). El CPU ejecuta
otro hilo.
Cada hilo mantiene independientemente el
contador, la pila de ejecución y estado de la CPU. Desbloqueo: Cuando el suceso por el que el
hilo se bloqueó se produce.
El proceso sigue en ejecución mientras al menos
uno de sus hilos de ejecución siga activo. Cuando Terminación: Cuando un hilo finaliza se liberan
el proceso finaliza, todos sus hilos de ejecución
tanto su contexto como sus columnas.
también han terminado.
Diferencias entre procesos e hilos
Las ventajas de los hilos se dan cuando hablamos de Multihilos, que es cuando un proceso tiene
múltiples hilos de ejecución los cuales realizan actividades distintas, que pueden o no ser
cooperativas entre sí, situación que es cada vez más común en nuevas aplicaciones de software.
Los beneficios de los hilos se derivan de las implicaciones de rendimiento ya que se tarda mucho
menos tiempo en crear un hilo nuevo en un proceso existente que en crear un proceso nuevo
con un solo hilo.
A su vez, se tarda mucho menos tiempo en terminar un hilo que un proceso, ya que cuando se
elimina un proceso se debe eliminar el bulk del mismo, mientras que un hilo se elimina su
contexto y pila.
Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso.
Los hilos también aumentan la eficiencia de la comunicación entre programas en ejecución. En la
mayoría de los sistemas en la comunicación entre procesos debe intervenir el núcleo para
ofrecer protección de los recursos y realizar la comunicación misma. En cambio, entre hilos
pueden comunicarse entre sí sin la invocación al núcleo.
¿Un hilo puede ser un proceso?
Sí, un proceso en su forma más arcáica consta de un solo hilo (proceso monohilo). En este
sentido podemos decir que un solo hilo puede ser un proceso mientras, además de la
información que este posee al ser hilo (el contador de programa, la pila de ejecución y el estado
de la CPU), también cuente con los recursos que un proceso contiene (llamadas al nucleo del
CPU y estados adicionales con los que un hilo normal no cuenta). Cuando un hilo modifica un
dato en la memoria, los otros hilos acceden a ese dato modificado inmediatamente.
Asimismo, en el momento en el que el hilo de ejecución finaliza, el proceso no existiría más al
tratarse de un proceso monohilo y todos sus recursos también serían.
Un proceso puede ser paralelo, ¿Un hilo también puede?
Sí, los hilos son subtareas que, por su naturaleza más ligera, pueden ser ejecutados en paralelo
con otras tareas (llámense otros hilos o programas). Todos los hilos comparten el mismo espacio
de direcciones y otros recursos como pueden ser archivos abiertos.
Esta situación abre la posibilidad a que cualquier modificación de un recurso desde un hilo pueda
afectar al entorno del resto de los hilos del mismo proceso. Por lo tanto, es necesario sincronizar
la actividad de los distintos hilos para que no interfieran unos con otros o corrompan estructuras
de datos. Es posible que los hilos requieran de operaciones atómicas para impedir que los datos
comunes sean cambiados o leídos mientras estén siendo modificados, para lo que usualmente se
utilizan los semáforos y cambios en el estado.
Bibliografía:
Stallings W. (2000). p135-155
Harvey M. y Deitel, P. J. (2004)
Carretero, J.; De Miguel, P.; García, F. y Pérez, F. (2001). p619-648