Cualquiera
El concepto de proceso se origina en el campo de los sistemas operativos, donde comúnmente se define
como un programa en ejecución.
Un thread se puede considerar como la agrupación de un trozo de programa junto con el conjunto
de registros del procesador que utiliza y una pila de máquina. El conjunto de los registros y de la pila de cada
thread se denomina contexto.
Desdela perspectiva de un sistema operativo, la administración y programación temporal de los
procesos es tal vez el aspecto más crítico. Sin embargo, en los sistemas distribuidos hay otras cuestiones
que son igualmente importantes.
Por ejemplo, para organizar eficientemente sistemas cliente-servidor, frecuentemente resulta
conveniente utilizar técnicas multithreading (multihilo). La principalcontribución de los threads (hilos) en los
sistemas operativos es que permiten que clientes y servidores sean construidos de tal manera que la
comunicación y el procesamiento local puedan traslaparse en el tiempo, permitiendo con ello mayores
niveles de desempeño.
Aunque los procesos constituyen el bloque básico en la implementación de sistemas distribuidos, la práctica
muestra que el plantearla granularidad (división) de un sistema distribuido en diferentes procesos, tal como
lo establecen los sistemas operativos en los que se construyen los sistemas distribuidos, no es suficiente.
Resulta que plantear una granularidad más fina en la forma de threads múltiples de control por proceso,
hace más fácil desarrollar aplicaciones distribuidas y obtener un mejor desempeño.
4.1 Introduccióna Procesos y Threads
Para entender el papel que juegan los threads en los sistemas distribuidos, es importante entender qué es
un proceso, y como se relacionan los procesos y los threads. Al ejecutar programas, el sistema operativo
crea un cierto número de procesos virtuales, cada uno para correr un programa diferente.
Con la finalidad de mantener un control y seguimiento de todos estosprocesadores virtuales, el sistema
operativo usa una tabla de procesos, la cual contiene entradas para almacenar los valores de los registros
del CPU, mapas de memoria, archivos abiertos, información del proceso, privilegios, etc. Un proceso es
frecuentemente definido como un programa en ejecución, es decir, un programa que está siendo ejecutado
en uno de los procesadores virtuales del sistemaoperativo.
Un asunto importante es que el sistema operativo tiene mucho cuidado de asegurar que procesos
independientes no puedan de forma maliciosa o inadvertida afectar el comportamiento adecuado de los
demás. En pocas palabras, procesos múltiples puedan compartir concurrentemente el mismo CPU y otros
recursos de hardware de forma transparente. Usualmente, el sistema operativo requiere dehardware que
permita esta separación.
Esta transparencia de concurrencia tiene un alto costo. Por ejemplo, cada vez que un proceso es
creado, el sistema operativo debe crear un espacio de direcciones independiente y completo. La asignación
de este espacio de memoria puede requerir de la inicialización de segmentos de memoria, por ejemplo,
poner en ceros todo el segmento de datos, copiar elprograma asociado en el segmento de texto
(instrucciones), y preparar un segmento de stack para datos temporales.
También resulta costoso el que el CPU realice un switch (cambio) de contexto (valores de registros,
contador de programa, apuntador de stack, etc.) para cambiar de la ejecución de un proceso a otro. Aparte
de grabar el contexto del CPU, el sistema operativo debe modificar los registrosde una Unidad de
Administración de Memoria (MMU) e invalidar cachés de traducción de direcciones, tales como el buffer de
traducción de direcciones virtuales (TLB – Translation Lookaside Buffer). Además, si el sistema operativo
brinda soporte a más procesos de los que pueden sostenerse simultáneamente en la memoria principal,
éste debe hacer un swap (cambio) de procesos entre la memoria...
Regístrate para leer el documento completo.