You are on page 1of 4

Para poder definir diferencias entre procesos e hilos considero importante que conozcamos

que consiste cada uno de ellos.

Entenderemos como proceso a las unidades de ejecución en un sistema operativo,


conformados por un PCB (Bloque de control de procesos); es decir, serie de estructuras de
datos asociadas que guardan información ya sea de control, estado, ancestros, registros
del procesador, área de memoria, pila, privilegios, entre otros atributos. Conceptualmente
cada uno de estos procesos tienen su propia CPU virtual. Desde luego, en la realidad la
verdadera CPU conmuta de un proceso a otro.
Los procesos son creados y destruidos por el sistema operativo, así como también este se
debe hacer cargo de la comunicación entre los mismos, pero lo hace a petición de otros
procesos. El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación
(fork). Los nuevos procesos pueden ser independientes y no compartir el espacio de
memoria con el proceso que los ha creado o ser creados en el mismo espacio de memoria.

A lo largo de la vida de un proceso, este va pasando por diferentes etapas, las cuales son:
 Nuevo: Se solicitó al sistema la creación de un proceso, y sus recursos y estructuras
están siendo creadas
 Listo: Está listo para ser asignado para su ejecución
 En ejecución: El proceso está siendo ejecutado
 Bloqueado: En espera de algún evento para poder continuar ejecutándose
 Terminado: El proceso terminó de ejecutarse; sus estructuras están a la espera de
ser borradas por el sistema
En la siguiente imagen podemos ver de manera gráficas, el ciclo de vida de los procesos
El cambio de estados que permiten los procesos nos permite la concurrencia entre los
mismos; es decir, la ejecución de los mismos parece simultánea, pero en realidad el CPU
está saltando entre un proceso y otro. Mientras un proceso se está ejecutando el otro se
encuentra en espera (bloqueado). Cuando el equipo cuenta con más de un CPU se pueden
ejecutar varios procesos en forma paralela, pero cada CPU solamente ejecuta un proceso
a la vez. El tiempo que el sistema operativo destina al cambio de estado de cada uno de
los procesos se conoce como overhead, este tiempo que podríamos creer despreciable,
puede ahorrarse si las condiciones de la concurrencia de procesos lo permitieran, por
ejemplo, si los procesos comparten información entre ellos.

Los hilos de ejecución o thread son el resultado de la necesidad de reducción de tiempo


y cambios de contexto. Los hilos también conocidos como procesos livianos también
cuentan con una estructura de control más liviana, ya que gran parte de la información que
se requiere para su ejecución se comparte con el proceso; es decir, que los hilos deben de
vivir dentro de los procesos. Con lo mencionado anteriormente podemos deducir, que un
proceso puede contener uno o más hilos.

Los hilos heredan los estados de Listo, Ejecución y bloqueado del proceso, pero resaltan
por las ventajas que su utilización conlleva.
Respuesta: el tiempo de respuesta mejora, ya que el programa puede continuar
ejecutándose, aunque parte de él esté bloqueado.
• Compartir recursos: los hilos comparten la memoria y los recursos del proceso al que
pertenecen, por lo que se puede tener varios hilos de ejecución dentro del mismo espacio
de direcciones.
• Economía: Es más fácil la creación, cambio de contexto y gestión de hilos que de
procesos.
• Utilización múltiples CPU: permite que hilos de un mismo proceso ejecuten en diferentes
CPU a la vez. En un proceso mono-hilo, un proceso ejecuta en una única CPU,
independientemente de cuantas tenga disponibles.

Resumiendo, un poco esta investigación, podemos concluir que

HILOS
PROCESOS
Creación Costosa Ligera
Recursos y memoria Independiente Compartida
Comunicación Compleja Sencilla
Cambio por SO Muy lento Rápido
Complejidad en programación Reducida Alta
Aunque los hilos comparten muchas características con los procesos, no podemos concluir que
son lo mismo; entre las principales diferencias que tienen encontramos:

 Los hilos no son independientes entre sí.


 Como todos los hilos pueden acceder a todas las direcciones de la tarea, un hilo puede
leer la pila de cualquier otro hilo o escribir sobre ella
 La seguridad entre los hilos no esta tan definida, ya que un error en uno de los hilos
puede conllevar a ocasionar fallas entre todos sus hermanos,

Con todo lo anterior podemos dar respuesta las siguientes preguntas

• ¿Un hilo puede ser un proceso?


Si, un proceso puede estar creado por uno o varios hilos, mientras al menos uno de los
hilos continúe en ejecución entonces el proceso lo estará, en el momento en que los hilos
finalicen su ejecución, de igual manera el proceso pasa a estado terminado y libera todos
los recursos. Como se mencionó anteriormente los hilos son procesos ligeros con tareas
específicas que pueden ser ejecutadas por los SO.

Un proceso puede ser paralelo, ¿Un hilo también puede?


Aquí me gustaría aclarar que los procesos pueden trabajar de manera concurrente si y solo
si se cuenta con más de un CPU para su ejecución, cuando el ovehead del SO es muy bajo,
da esta apariencia de paralelismo, en los hilos este tiempo de ejecución reduce muchísimo
(no es que no exista), entonces puede dar el mismo efecto de concurrencia. Si el equipo
donde se está ejecutando el proceso multihilo, tiene más de un CPU, sin problema los hilos
heredan la propiedad de ejecución en los diferentes CPU y ahora si tener un paralelismo
real.

You might also like