En sistemas operativos, un hilo de ejecución, hebra o subproceso es una secuencia de tareas encadenadas muy pequeña que puede ser ejecutada por un sistema operativo. Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo que otra tarea.
Los sockets designa un concepto abstracto por el cual dos programas (posiblemente situados en computadoras distintas) pueden intercambiar cualquier flujo de datos, generalmente de manera fiable y ordenada. El término socket es también usado como el nombre de una interfaz de programación de aplicaciones (API) para la familia de protocolos de internet TCP/IP, provista usualmente por el sistema operativo.
Socket a profundidad
Para que dos programas puedan comunicarse entre sí es necesario que se cumplan ciertos requisitos:
* Que un programa sea capaz de localizar al otro.
* Que ambos programas sean capaces de intercambiarse cualquier secuencia de octetos, es decir, datos relevantes a su finalidad.
* Un par de direcciones del protocolo de red (dirección IP, si se utiliza el protocolo TCP/IP), que identifican la computadora de origen y la remota.
* Un par de números de puerto, que identifican a un programa dentro de cada computadora.
Los sockets permiten implementar una arquitectura cliente-servidor. La comunicación debe ser iniciada por uno de los programas que se denomina programa "cliente". El segundo programa espera a que otro inicie la comunicación, por este motivo se denomina programa "servidor".
Un socket es un proceso o hilo existente en la máquina cliente y en la máquina servidora, que sirve en última instancia para que el programa servidor y el cliente lean y escriban la información. Esta información será la transmitida por las diferentes capas de red.
Diferencia entre hilos y procesos
Los hilos se distinguen de los tradicionales procesos en que los procesos son generalmente independientes, llevan bastante información de estados, e interactúan sólo a través de mecanismos de comunicación dados por el sistema. Por otra parte, muchos hilos generalmente comparten otros recursos de forma directa. En muchos de los sistemas operativos que dan facilidades a los hilos, es más rápido cambiar de un hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro. Este fenómeno se debe a que los hilos comparten datos y espacios de direcciones, mientras que los procesos, al ser independientes, no lo hacen. Al cambiar de un proceso a otro el sistema operativo (mediante el dispatcher) genera lo que se conoce como overhead, que es tiempo desperdiciado por el procesador para realizar un cambio de contexto (context switch), en este caso pasar del estado de ejecución (running) al estado de espera (waiting) y colocar el nuevo proceso en ejecución. En los hilos el tiempo perdido es casi despreciable.
Al igual que los procesos, los hilos poseen un estado de ejecución y pueden sincronizarse entre ellos para evitar problemas de compartición de recursos. Generalmente, cada hilo tiene una tarea especifica y determinada, como forma de aumentar la eficiencia del uso del procesador.
Los principales estados de los hilos son: Ejecución, Listo y Bloqueado. No tiene sentido asociar estados de suspensión de hilos ya que es un concepto de proceso. En todo caso, si un proceso está expulsado de la memoria principal, todos sus hilos deberán estarlo ya que todos comparten el espacio de direcciones del proceso.
Los hilos son la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo, la creación de éste es una característica que permite a una aplicación realizar varias tareas a la vez. Mientras que los sockets es una terminal que identifica de manera exclusiva un proceso de aplicación particular que se ejecuta en un dispositivo host individual. Un par de sockets se compone de direcciones IP de origen y destino, protocolo y números de puerto.
Fuentes:
Presentación sobre sockets e hilos
¿Qué son los hilos?
Sockets de Internet
Comentarios
Publicar un comentario