Documente Academic
Documente Profesional
Documente Cultură
Una de las diferencias fundamentales entre los S.O.C. y los S.O.D. es que los
primeros son más orientados hacia el propósito general, mientras que los segundos
se diseñan para aplicaciones más específicas, o bien por su complejidad, más
limitadas en cuanto la variedad de ámbitos. Lo anterior nos dice que la ejecución de
procesos y la distribución de carga se ejecutan con mayor certeza, ya que se
conocen de antemano los tiempos, tamaños de códigos, flujos de datos y solicitudes
de servicios.
El trabajo de control entre procesos distribuidos usa las reglas del software de
aplicación, es decir en un esquema de alto nivel. Debido a su naturaleza, los S.O.D.
requieren de usar mejor algoritmos que sean deterministas, distribuidos, óptimos y
globales. Una noción importante es que en un S.O.D. elegimos una estrategia no
migratoria, ya que esto resulta indeseable en un ambiente distribuido, excepto en
aquellos caso sen que la planificación de la carga de trabajo tenga cierta
incertidumbre y se requiera balanceo dinámico de la carga; entonces el objetivo final
es lograr la transparencia en el balance, que consumirá recursos del sistema.
Como ya se dijo, los sistemas distribuidos tienen una planificación de carga certera,
es decir que se conoce razonablemente bien el tamaño del código y de los datos,
porque se trata de aplicaciones de propósito específico, sin embargo esto no
cancela la necesidad de hacer trabajos de medición de la carga, llevar conteo de
procesos, administrar sus estados de forma remota y llevar un seguimiento de la
fracción de tiempo en que se realiza; con la tarea extra de propagar esta información
de manera concurrente. Sin embargo la dispersión uniforme de estas tareas busca
hacerlas transparentes y eficientes.
En S.O.D. evitaremos a toda costa el consumo de recursos para recolectar medidas
y desplazar procesos, y trasladaremos esa tarea a la complejidad del software, que
consiste en un grupo de programas actuando de manera coordinada, procesando
datos tiempo real o a gran escala. Como las máquinas ejecutan sus algoritmos en
forma síncrona, el sistema presenta un cierto equilibrio entre demanda y resultado;
pero hay que considerar que la mayoría de los algoritmos que intercambian
información en una red de transporte funcionan correctamente sólo hasta después
de intercambiar la información y actualizado los registros; pero son poco confiables
mientras las tablas están en proceso de actualización, por eso los nodos de un S.D.
deben funcionar de manera soberana.
Cuando se usan clientes multihilos cada conexión puede ir a una réplica diferente
del mismo servidor.
En este caso los distintos archivos se transmiten en paralelo asegurando que la
página WEB completa se despliega en un tiempo más corto.
Servidores Multihilos
El principal uso de la tecnología multihilos está del lado del servidor. Básicamente
buscan mejorar el desempeño (aún en servidores monoprocesador) y la forma
cómo se estructura el servidor. Por ejemplo, en general un servidor de archivos
espera una petición de entrada para una operación de archivo, posteriormente
ejecuta la petición (operación bloqueante al disco) y luego envía la respuesta de
regreso. Tenemos la alternativa del Modelo Servidor/Trabajador; Las peticiones
son enviadas por los clientes hasta el servidor. Después de examinar la petición el
hilo servidor elige un hilo trabajador sin utilizar y le encarga la petición. El hilo
trabajador realiza la lectura, lo cual puede provocar que se suspenda hasta que
los datos sean recuperados. Si el hilo se suspende, el procesador, selecciona otro
para su ejecución.
Vale la pena preguntarse cómo se programa, por ejemplo un servidor de archivos
en la ausencia de hilos. Veamos que el servidor recibe las peticiones, las examina
y las trata de resolver antes de recibir la siguiente petición. Mientras espera al
disco duro, el servidor está ocioso y no procesa otra petición. Se procesan menos
peticiones por segundo (throughput), en cambio con los hilos se gana un
rendimiento considerable.