Está en la página 1de 14

Universidad Laica Eloy Alfaro de Manabí Facultad de

Ciencias Informáticas

Materia: Sistemas Distribuidos

Trabajo Autónomo

Tema: Conceptos básicos y ejemplos de sistemas distribuidos

Nombre:
Rosado Párraga Dannes Alberto

Curso: 7mo semestre “B”

Docente: Ing. Wilian Delgado Muentes

Fecha: 16 de noviembre de 2020

Año Lectivo: 2020 (2)


Contenido
Introducción ................................................................................................................................... 3
Sistemas Distribuidos ..................................................................................................................... 4
Características ................................................................................................................................ 4
Evolución ........................................................................................................................................ 4
Uso de Hilos en Sistemas Distribuidos ........................................................................................... 6
Introducción
La computación desde sus inicios ha sufrido muchos cambios, desde las grandes
computadoras que permitían realizar tareas en forma limitada y de uso un tanto exclusivo
de organizaciones muy selectas, hasta las actuales computadoras ya sean personales o
portátiles que tienen las mismas e incluso mayores capacidades que los primeros y que
están cada vez más introducidos en el quehacer cotidiano de una persona.

Los mayores cambios se atribuyen principalmente a dos causas, que se dieron desde las
décadas de los setenta:

• El desarrollo de los microprocesadores, que permitieron reducir en tamaño y costo


a las computadoras y aumentar en gran medida las capacidades de los mismos y
su acceso a más personas.
• El desarrollo de las redes de área local y de las comunicaciones que permitieron
conectar computadoras con posibilidad de transferencia de datos a alta velocidad.

Es en este contexto que aparece el concepto de "Sistemas Distribuidos" que se ha


popularizado tanto en la actualidad y que tiene como ámbito de estudio las redes como
por ejemplo: Internet, redes de teléfonos móviles, redes corporativas, redes de empresas,
etc. Este documento presenta una panorámica de los aspectos relevantes que están
involucrados en los Sistemas Distribuidos".
Sistemas Distribuidos
"Sistemas cuyos componentes hardware y software, que están en computadoras
conectadas en red, se comunican y coordinan sus acciones mediante el paso de mensajes,
para el logro de un objetivo. Se establece la comunicación mediante un protocolo
preestablecido”.

Características
• Concurrencia: Esta característica de los sistemas distribuidos permite que los
recursos disponibles en la red puedan ser utilizados simultáneamente por los
usuarios y/o agentes que interactúan en la red.
• Carencia de reloj global: Las coordinaciones para la transferencia de mensajes
entre los diferentes componentes para la realización de una tarea, no tienen una
temporización general, está más bien distribuida en los componentes.
• Fallos independientes de los componentes: Cada componente del sistema
pudiera fallar de manera independientemente, y los demás continuar ejecutando
sus acciones. Esto permite el logro de las tareas con mayor efectividad, pues el
sistema en su conjunto continúa trabajando.

Evolución
Procesamiento central (Host): Refiere a uno de los primeros modelos de computadoras
interconectadas, llamados centralizados, donde todo el procesamiento de la organización
se llevaba a cabo en una sola computadora, normalmente un Mainframe, y los usuarios
empleaban sencillas computadoras personales.

Algunos problemas de este modelo son:

• Cuando la carga de procesamiento aumentaba se tenía que cambiar el hardware del


Mainframe, lo cual es más costoso que añadir más computadores personales
clientes o servidores que aumenten las capacidades.
• El otro problema que surgió son las modernas interfases gráficas de usuario, las
cuales podían conllevar a un gran aumento de tráfico en los medios de
comunicación y por consiguiente podían colapsar a los sistemas.

Grupo de Servidores: Otro modelo que entró a competir con el anterior, también un tanto
centralizado, son un grupo de computadoras actuando como servidores, normalmente de
archivos o de impresión, poco inteligentes para un número de minicomputadores que
hacen el procesamiento conectados a una red de área local.

Algunos problemas de este modelo son:

• Podría generarse una saturación de los medios de comunicación entre los servidores poco
inteligentes y los minicomputadores, por ejemplo, cuando se solicitan archivos grandes
por varios clientes a la vez, podían disminuir en gran medida la velocidad de transmisión
de información.
La Computación Cliente Servidor: Este modelo, que predomina en la actualidad,
permite descentralizar el procesamiento y recursos, sobre todo, de cada uno de los
servicios y de la visualización de la Interfaz Gráfica de Usuario. Esto hace que ciertos
servidores estén dedicados sólo a una aplicación determinada y por lo tanto ejecutarla en
forma eficiente.

Introducción a los Hilos (Threads)

Muchos sistemas operativos distribuidos soportan múltiples hilos de control dentro de un


proceso que:

• Comparten un único espacio de direcciones.


• Se ejecutan quasi - paralelamente como si fueran procesos independientes.

Ej.: servidor de archivos que debe bloquearse ocasionalmente en espera de acceso al disco:

• Si tiene varios hilos de control podría ejecutar un segundo hilo mientras el primero
espera:
o El resultado sería mejor rendimiento y desempeño.
o No se logra esto con procesos servidores independientes puesto que deben
compartir un buffer caché común y deben estar en el mismo espacio de
direcciones.

En muchos sentidos los hilos son como mini procesos:

Cada hilo:

o Se ejecuta en forma estrictamente secuencial.


o Tiene su propio contador de programa y una pila para llevar un registro de su
posición.
• Los hilos comparten la cpu de la misma forma que lo hacen los procesos:
o Secuencialmente, en tiempo compartido.
• Solo en un multiprocesador se pueden ejecutar realmente en paralelo.
• Los hilos pueden crear hilos hijos.
• Mientras un hilo está bloqueado se puede ejecutar otro hilo del mismo proceso.

Los distintos hilos de un proceso comparten un espacio de direcciones, el conjunto de


archivos abiertos, los procesos hijos, cronómetros, señales, etc. Los hilos pueden tener
distintos estados: en ejecución, bloqueado, listo, terminado.
Uso de Hilos en Sistemas Distribuidos
Los hilos permiten la combinación del paralelismo con la ejecución secuencial y el
bloqueo de las llamadas al sistema. Consideramos el ejemplo del servidor de archivos con
sus posibles organizaciones para muchos hilos de ejecución.

Iniciamos con el modelo servidor / trabajador:

• Un hilo, el servidor, lee las solicitudes de trabajo en el buzón del sistema.


• Elige a un hilo trabajador inactivo y le envía la solicitud, despertándolo.
• El hilo trabajador verifica si puede satisfacer la solicitud por medio del bloque
caché compartido, al que tienen acceso todos los hilos.
• Si no envía un mensaje al disco para obtener el bloque necesario y se duerme
esperando el fin de la operación.
Se llama:
o Al planificador y se inicializa otro hilo, que tal vez sea el servidor, para pedir
más trabajo
o A otro trabajador listo para realizar un trabajo.

Los hilos ganan un desempeño considerable pero cada uno de ellos se programa en forma
secuencial.

Otro modelo es el de equipo:

• Todos los hilos son iguales y cada uno obtiene y procesa sus propias solicitudes.
• No hay servidor.
• Se utiliza una cola de trabajo que contiene todos los trabajos pendientes, que son
trabajos que los hilos no han podido manejar.
• Un hilo debe verificar primero la cola de trabajo antes de buscar en el buzón del
sistema.

Un tercer modelo es el de entubamiento:

• El primer hilo genera ciertos datos y los transfiere al siguiente para su


procesamiento.
• Los datos pasan de hilo en hilo y en cada etapa se lleva a cabo cierto
procesamiento.

Un programa diseñado adecuadamente y que utilice hilos debe funcionar bien:

• En una única CPU con hilos compartidos.


• En un verdadero multiprocesador.
Aspectos del Diseño de un Paquete de Hilos
Un conjunto de primitivas relacionadas con los hilos (ej.: llamadas a biblioteca)
disponibles para los usuarios se llama un “paquete de hilos”. Respecto del manejo de los
hilos se tienen hilos estáticos e hilos dinámicos.

En un diseño estático:

• Se elige el número de hilos al escribir el programa o durante su compilación.


• Cada uno de ellos tiene asociada una pila fija.
• Se logra simplicidad, pero también inflexibilidad.

En un diseño dinámico:

• Se permite la creación y destrucción de los hilos durante la ejecución.


• La llamada para la creación de hilos determina:
o El programa principal del hilo.
o Un tamaño de pila.
o Una prioridad de planificación, etc.
• La llamada generalmente regresa un identificador de hilo:
o Se usará en las posteriores llamadas relacionadas al hilo.

Un proceso:

• Se inicia con un solo hilo.


• Puede crear el número necesario de hilos.

Los hilos pueden concluir:

• Por su cuenta, al terminar su trabajo.


• Por su eliminación desde el exterior.

Los hilos comparten una memoria común:

• Contiene datos que los distintos hilos comparten.


• El acceso generalmente se controla mediante regiones críticas.
Hilos y RPC
Es común que los sistemas distribuidos utilicen RPC e hilos. Al iniciar un hilo servidor,
“S”, éste exporta su interfaz al informarle de ésta al núcleo; la interfaz define los
procedimientos que puede llamar, sus parámetros, etc.

Al iniciar un hilo cliente, “C”, éste importa la interfaz del núcleo:

• Se le proporciona un identificador especial para utilizarlo en la llamada.


• El núcleo sabe que “C” llamará posteriormente a “S”:
o Crea estructuras de datos especiales para prepararse para la llamada.

Una de las estructuras es una pila de argumentos compartida por “C” y “S”, que se asocia
de manera lectura / escritura en ambos espacios de direcciones. (UNNE, 2001)

Para llamar al servidor, “C”:

• Coloca sus argumentos en la pila compartida mediante el procedimiento normal


de transferencia.
• Hace un señalamiento al núcleo colocando un identificador especial en un registro.

El núcleo:

• Detecta esto y deduce que es una llamada local.


• Modifica el mapa de memoria del cliente para colocar éste en el espacio de
direcciones del servidor.
• Inicia el hilo cliente, al ejecutar el procedimiento del servidor.

La llamada se efectúa de tal forma que:

• Los argumentos se encuentran ya en su lugar:


o No es necesario su copiado u ordenamiento.
o La RPC local se puede realizar más rápido de esta manera.
Clientes Multihilos
Para establecer un alto grado de transparencia de distribución, los sistemas distribuidos
que operan en redes de área de amplia pudieran necesitar la conciliación de grandes
tiempos de propagación de mensajes de interproceso.

En redes de área amplia, los ciclos tienen retrasos que pueden rondar fácilmente el orden
de cientos milisegundos, o incluso segundos en algunas ocasiones.

La manera más común de ocultar las latencias de comunicación es iniciar la comunicación


y proceder de inmediato con alguna otra cosa.

Servidores Multihilos
Aunque existen importantes beneficios para los clientes multihilos, como hemos visto en
los sistemas distribuidos el principal uso de la tecnología multihilos está del lado del
servidor.

La práctica muestra que la tecnología multihilos no solamente simplifica el código del


servidor de manera considerable, sino que además hace más sencillo el desarrollo de
servidores que explotan el paralelismo para lograr un alto rendimiento, incluso en sistemas
de un solo procesador.

Sin embargo, ahora las computadoras multiproceso están ampliamente disponibles como
estaciones de trabajo de propósito general, aplicar la tecnología multihilos para
implementar el paralelismo es aún más útil.

1. Arquitectura de Servidores Multihilos

Hasta el momento solo hemos visto dos diseños posibles: un servidor de archivos
multihilos y un servidor de archivos de un solo hilo. Supongamos que los hilos no están
disponibles, pero los diseñadores de sistemas consideran inaceptables la pérdida de
rendimiento debido al uso de un solo hilo. Una tercera posibilidad es la de ejecutar el hilo
servidor como una gran máquina de estado finito.
Cuando entra una petición, la examina el único hilo. Si podemos satisfacer la petición
desde el caché, bien, pero si no, debemos enviar un mensaje al disco.

En este diseño se pierde el modelo de “proceso secuencial” que teníamos en los 2 primeros
casos, el estado del cálculo debe ser guardado y almacenado de manera explícita en la
tabla para cada mensaje enviado y recibido.

2. Perdida del Proceso secuencial

Ventajas del uso de hilos


• Se tarda menos tiempo en crear un hilo de una tarea existente que en crear un nuevo
proceso.
• Se tarda menos tiempo en terminar un hilo que en terminar un proceso.
• Se tarda menos tiempo en cambiar entre dos hilos de una misma tarea que en
cambiar entre dos procesos (porque los recursos no cambian, por ejemplo)
• Es más sencillo la comunicación (paso de mensajes, por ejemplo) entre hilos de
una misma tarea que entre diferentes procesos.
• Cuando se cambia de un proceso a otro, tiene que intervenir el núcleo del sistema
operativo para que haya protección. Cuando se cambia de un hilo a otro, puesto
que la asignación de recursos es la misma, no hace falta que intervenga el sistema
operativo.
Procesos e Hilos

Un proceso es una entidad que posee 2 características importantes:

Recursos: Básicamente es un espacio de direcciones (programas, datos y pila y un PCB),


archivos, memoria, etc. El SOP realiza la función de protección para evitar interferencias
no deseadas entre procesos en relación con los recursos.

Planificación/Ejecución: El proceso sigue una ruta de ejecución. Tiene un PC, un Estado


de ejecución (Listo, bloqueado, ejecutándose, etc.) y una prioridad.

Estas dos características son independientes y pueden ser tratadas como tales por los
sistemas de operación. En algunos sistemas de operación se le denomina a la unidad activa
hilo (thread) y a la unidad propietaria de recursos se le suele denominar proceso o tarea.
(unne, 2010)

En un entorno multihilo se le asocia a los procesos:

• Un espacio de direcciones virtuales que soporta la imagen del proceso.


• Acceso protegido a procesadores, otros procesos, archivos y recursos de E/S
• En un entorno multihilo se asocian a cada hilo:
• Un estado de ejecución.
• Un PC, un contexto (conjunto de registros) que se almacena cuando no está en
ejecución.
• Una pila.
• Un espacio de almacenamiento para variables locales.
• Acceso a la memoria y recursos del proceso.

Para que la comunicación entre procesos sea posible es necesario usar las llamadas al
sistema. Los threads comparten el mismo espacio de direcciones. Por lo tanto, el cambio
de contexto entre un thread y otro que pertenecen al mismo proceso pudiera hacerse de
forma totalmente independiente del sistema de operación. Los cambios de contexto de
procesos son más costosos. Implican salvar el contexto del proceso, cambio de modo (trap
al sistema de operación, etc), otro cambio de modo, restaurar contexto del nuevo proceso.
Implementaciones de hilos:

• Threads a nivel de usuario.


• Threads a nivel de kernel
• Enfoque combinado, procesos Livianos

Usando hilos, se puede permitir el uso de llamadas al sistema bloqueantes sin necesidad
de “bloquear” todo el proceso. Esta propiedad vuelve a los hilos particularmente atractivos
para su uso dentro de sistemas distribuidos. Concentrémonos en la arquitectura Cliente
Servidor.

Clientes Multihilos
Sirven para esconder la latencia de comunicación a través de la red.

Ejemplo 1: Navegadores WEB

En muchos casos una página WEB consiste de un texto plano con múltiples figuras. Con
frecuencia el navegador, establece la conexión con el servidor, recupera y comienza a
desplegar la página HTML (incluso se permite al usuario el desplazamiento dentro de la
página) mientras el navegador continúa recuperando otros archivos que conforman la
página.

Desarrollar navegadores multihilos simplifica este hecho de forma considerable. Tan


pronto como llega la página principal se pueden activar hilos que se encarguen de
recuperar las demás partes. Cada hilo establece su propia conexión con el servidor.
Mientras tanto el usuario advierte el retardo en las imágenes, pero puede ir explorando el
documento.

Si el servidor está saturado o es lento no se observarán mejoras notables en el rendimiento.

Ejemplo 2: Servidores WEB Replicados

En muchos casos los servidores se replican en distintas máquinas y cada servidor


proporciona el mismo conjunto de documentos WEB. Están localizados en el mismo sitio
y se conocen por el mismo nombre.

Cuando entra una petición para una página WEB es re-enviada a uno de los servidores
(usando round-robin u otra técnica de balanceo de carga).

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
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.

Ejemplo: Por lo 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.

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. ¿Cómo se programa un servidor de archivos en la ausencia de hilos? El
servidor recibe a peticiones, las examina y las trata de resolver antes de recibir la siguiente
petición. Mientras espera por el disco el servidor está ocioso y no procesa otra petición.
Se procesan menos peticiones por segundo (throughput).

Con los hilos se gana un rendimiento considerable. Cada hilo se programa


secuencialmente en forma tradicional.

Supongamos que los hilos no están disponibles, pero los diseñadores del sistema
consideran inaceptable el rendimiento debido al uso de un solo hilo y operaciones
bloqueantes. (Aguilar, 2017)
Referencias
Aguilar, I. (2017). Obtenido de https://chiloprimerparcial.es.tl/Procesos-e-Hilos.htm

UNNE. (17 de Diciembre de 2001). Universidad Nacional del Nordeste. Obtenido de


http://exa.unne.edu.ar/informatica/SO/SO10.htm

UNNE. (2010). unne. Obtenido de http://exa.unne.edu.ar/informatica/SO/SO10.htm

También podría gustarte