2. PROCESOS
Un proceso es un concepto manejado por el sistema operativo que consiste en el
conjunto formado por:
• Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
• Su estado de ejecución en un momento dado, esto es, los valores de los registros de la
CPU para dicho programa.
• Su memoria de trabajo, es decir, la memoria que ha reservado.
• Sus contenidos.
3. • La diferencia más importante entre un Sistema Distribuido y un sistema de
un único procesador es la comunicación entre procesos. En un sistema de un
solo procesador la comunicación supone implícitamente la existencia de la
memoria compartida. Por ejemplo: un proceso escribe en un buffer
compartido y otro proceso lee de él.
• Los procesos, para comunicarse, deben apegarse a reglas conocidas como
protocolos. Para los sistemas distribuidos en un área amplia, estos protocolos
toman frecuentemente la forma de varias capas y cada capa tiene sus propias
metas y reglas
4. • Los mensajes se intercambian de diversas formas, existiendo muchas
opciones de diseño al respecto; una importante opción es la llamada a un
procedimiento remoto. También es importante considerar las posibilidades
de comunicación entre grupos de procesos, no sólo entre dos procesos.
• Debido a la ausencia de memoria compartida, toda la comunicación en los
sistemas distribuidos se basa en la transferencia de mensajes.
5. Por ejemplo: cuando el proceso “A” quiere comunicarse con el proceso “B”:
• Construye un mensaje en su propio espacio de direcciones.
• Ejecuta una llamada al sistema para que el Sistema Operativo busque el
mensaje y lo envíe a través de la red hacia “B”.
• Para evitar el caos, “A” y “B” deben coincidir en el significado de los bits que
se envíen. Los puntos de acuerdo necesarios incluyen lo siguiente:
6. • ¿Cuántos voltios hay que utilizar para un bit “0” y cuántos para un bit “1”?
• ¿Cómo sabe el receptor cuál es el último bit del mensaje?
• ¿Cómo puede detectar si un mensaje ha sido dañado o perdido, y qué debe
hacer si lo descubre?
• ¿Qué longitud tienen los números, cadenas y otros elementos de datos y cuál
es la forma en que están representados?
7. EL MODELO ISO/OSI
Este modelo se denomina “Modelo de referencia para interconexión de sistemas
abiertos” (ISO o modelo OSI), el cual está diseñado para permitir la comunicación de
los sistemas abiertos.
Dicho modelo:
• Establece el formato, contenido y significado de los mensajes recibidos y enviados.
• Constituye los protocolos, que son acuerdos en la forma en que debe desarrollarse la
comunicación.
• Cada nivel incluye su propia cabecera/cola en el mensaje a enviar, con los datos
necesarios para implementar su protocolo.
8. Protocolos de bajo nivel
• Nivel físico: Este nivel se dedica a transmitir los 0’s y 1’s, especificando
cuántos voltios se emplearán para codificar los 0’s y cuántos para los 1’s;
cuántos bits por segundo; si la comunicación es simplex o dúplex, así como
el tamaño, forma y características de los conectores; por ejemplo: RS-232.
• Nivel de enlace: Asegurar transmisión libre de errores, agrupando los bits
en tramas; aplicando códigos de redundancia a las tramas para detectar
errores, y en caso de errores, envía mensajes de control para pedir la
retransmisión.
9. • Nivel de red: Encaminar los mensajes de una máquina a otra. En este nivel a
los mensajes se les llama paquetes; por ejemplo: IP
10. Protocolos de trasporte
• Los mensajes enviados desde las aplicaciones (o desde los niveles superiores
del modelo OSI), son divididos en paquetes, que serán reensamblados en el
destino. Los paquetes que no lleguen a su destino, serán retransmitidos.
Ejemplos de estos protocolos son el TCP y el UDP, el primero ofrece
mensajes fiables con conexión, y el segundo, ofrece mensajes no fiables sin
conexión (sin retransmisiones).
11. Protocolos de alto nivel
Por encima del nivel de transporte, OSI define tres niveles más, englobándose
en uno sólo: el nivel de aplicación.
• Nivel de sesión: Proporciona control sobre la conversación y proporciona
facilidades de sincronización.
• Nivel de presentación: Dedicado a tratar el significado de la información
que se transmite.
• Nivel de aplicación: Son los protocolos específicos necesarios para dotar
de funcionalidad a determinado sistema: FTP, HTTP, MAIL, TELNET, etc.
12. 2.2 COMUNICACIÓN
Para comunicar procesos en un ambiente distribuido, además del uso de un
sistema de nombres de recursos, se necesita un esquema de comunicación
lógico que dé sentido a estas transacciones. El sistema operativo provee
mínimamente dos primitivas, enviar y recibir, normalmente llamadas send y
receive, pero tendrá que implementar un enlace de comunicación entre los
procesos. Este enlace puede ser unidireccional o multidireccional según permita
la comunicación en solo uno o en varios sentidos, y dependiendo de la forma
en que se dispara la comunicación.
13. Existen diferentes tipos de comunicación, entre las que podemos encontrar:
• Comunicación Síncrona: Quien envía permanece bloqueado esperando a que
llegue una respuesta del receptor antes de realizar cualquier otro ejercicio.
• Comunicación Asíncrona: Quien envía continúa con su ejecución inmediatamente
después de enviar el mensaje al receptor.
• Comunicación Persistente: El receptor no tiene que estar operativo al mismo
tiempo que se realiza la comunicación, el mensaje se almacena tanto tiempo como
sea necesario para poder ser entregado.
14. Comunicación Transitoria: El mensaje se descarta si el receptor no está operativo al
tiempo que se realiza la comunicación. Por lo tanto, no será entregado.
Comunicación Directa: Las primitivas enviar y recibir, usan directamente el nombre
del proceso con el que se comunican. Por ejemplo: enviar (mensaje, A) envía un
mensaje al proceso A. Obsérvese que la primitiva sólo debe especificar cuál va a ser él
proceso destino, ya que el proceso fuente viene direccionado en la comunicación. Las
operaciones básicas Send y Receive se definen de la siguiente manera: Send (P,
mensaje); envía un mensaje al proceso P. Receive (Q, mensaje); espera la recepción de
un mensaje por parte del proceso Q.
Comunicación Indirecta: Es aquella donde la comunicación está basada en un
gateway, enrutador, puente o switch, ya que el emisor y el receptor están a distancia.
15. • Comunicación Simétrica: Todos los procesos pueden enviar o recibir.
También establece una llamada bidireccional para el caso de dos procesos.
• Comunicación Asimétrica: Un proceso puede enviar, los demás procesos
solo reciben. También llamada unidireccional o no interactiva. Es el esquema
típico de algunos servidores de Internet.
• Comunicación con uso de buffers automático: El transmisor se bloquea
hasta que el receptor recibe el mensaje completo, pero éste tiene capacidad
para recibirlo, aunque no esté listo para procesarlo.
16. Tarea
• COMUNICACIÓN MEDIANTE SOCKETS.
• COMUNICACION CON LLAMADA A PROCEDIMIENTO REMOTO
(RPC).
• COMUNICACION EN GRUPO.
17. COMUNICACIÓN MEDIANTE SOCKETS
Un Socket 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.
Los sockets proporcionan una comunicación de dos vías, punto a punto entre
dos procesos. Los sockets son muy versátiles y son un componente básico de
comunicación entre interprocesos e intersistemas. Un socket es un punto final
de comunicación al cual se puede asociar un nombre.
18. Para lograr tener un socket es necesario que se cumplan ciertos requisitos:
• Que un programa sea capaz de localizar al otro.
• Que ambos programas sean capaces de intercambiarse información.
19. Por lo que son necesarios tres recursos que originan el concepto de socket:
• Un protocolo de comunicaciones, que permite el intercambio de octetos.
• Una dirección del Protocolo de Red (Dirección IP, si se utiliza el Protocolo
TCP/IP), que identifica una computadora.
• Un número de puerto, que identifica a un programa dentro de una
computadora.
20. • Con un socket se logra implementar una arquitectura cliente-servidor. La
comunicación es iniciada por uno de los programas (cliente), mientras el
segundo programa espera a que el otro inicie la comunicación (servidor). Un
Socket es un archivo existente en el cliente y en el servidor.
21. COMUNICACION CON LLAMADA A
PROCEDIMIENTO REMOTO (RPC)
Una llamada a un procedimiento (función o subrutina) es un método bien
conocido para transferir el control de una parte del programa a otra, con un
retorno del control a la primera. Asociado con la llamada a un procedimiento
están el pase de argumentos y el retorno de uno o varios resultados. Cuando el
código que invoca a un procedimiento y dicho procedimiento están en un
mismo proceso en un computador dado, se dice que ha ocurrido una llamada a
un procedimiento local.
22. • Por el contrario, en una llamada a un procedimiento remoto (RPC,
Remote Proceure Call) el sistema local invoca, a través de la red, a
una función alojada en otro sistema. Lo que se pretende es hacerle
parecer al programador que está ocurriendo una simple llamada
local.
• Se utiliza el término solicitud para referirse a la llamada que realiza
el cliente al procedimiento remoto (servidor) y, el término
respuesta, para describir el resultado devuelto por este último.
23. • El concepto de llamada a procedimiento remoto permite ocultar
en los “stubs” todos los detalles del código correspondiente a la
comunicación a través de la red. Esto permite que los
desarrolladores de programas de aplicación no se preocupen por
detalles tales como “sockets” y ordenamiento de bytes. Uno de los
objetivos de RPC es facilitar el desarrollo de aplicaciones
distribuidas.
24. COMUNICACION EN GRUPO
La comunicación se clasifica de acuerdo al número de usuarios a los que se le
ha enviado el mensaje.
• Broadcast o difusión forzada: Un nodo emite, todos los escuchan y solo
contesta a quien va dirigido el mensaje.
• Multicast: Se entrega el mensaje a todos los anfitriones HOST que están
compuestos de ciertas características.
25. COMUNICACION EN GRUPO
• Unicast o pointcast: Un nodo emite y otro recibe, solo escucha aquel a quien se
dirigió el mensaje.
Una clasificación adicional es la realizada en base a grupos:
• Listas de destinarios: Se tiene una lista de aquellos a los que se les enviará el
mensaje.
• Identificador de grupo: Se forman grupos y el mensaje es dirigido solo a los
miembros de ese grupo.
• Predicador de pertenencia: Se envía y otro recibe, solo escucha aquel a quien se
dirigió el mensaje.
26. NOMBRES
En los sistemas distribuidos los nombres hacen referencia a cualquier entidad,
ya sea un archivo, un periférico, un proceso, etc. que se pueden encontrar en
máquinas remotas. Los servidores de nombres ayudan a localizar fácilmente y
hacer transparente el acceso a los recursos (transparencia de localización).
27. Hay tres enfoques principales para los
esquemas de nominación.
• El primer enfoque y el más sencillo, los archivos se nombran con una
combinación del nombre de su anfitrión y su nombre local, lo que garantiza
un nombre único dentro de todo el sistema.
• El segundo enfoque popularizado por el sistema de archivos de red (NFS,
Network File System), ofrece una forma de unir directorios remotos a
directorios locales, lo que da la apariencia a un árbol de directorios
coherentes.
28. • El tercer enfoque es la estructura más compleja y difícil de mantener en la
NFS, ya que cualquier directorio se puede unir a cualquier árbol de
direcciones locales y la jerarquía resultante puede estar poco estructurada.
29. existen dos conceptos que hay que distinguir en
relación con la correspondencia de nombres en
un Sistema Distribuido:
Transparencia de Nominación: El nombre de archivo no revela ningún
indicio sobre de la ubicación del almacenamiento físico del archivo.
Independencia de Ubicación: No es necesario modificar el nombre de un
archivo cuando cambia su ubicación en el almacenamiento físico.
30. SERVIDORES Y AGENTES DE NOMBRES
• Un agente de usuario es una aplicación informática que funciona como
cliente en un protocolo de red; el nombre se aplica generalmente para
referirse a aquellas aplicaciones que acceden a la World Wide Web. Los
agentes de usuario que se conectan a la Web pueden ser desde navegadores
web hasta los web crawler de los buscadores, pasando por teléfonos móviles,
lectores de pantalla y navegadores en Braille usados por personas con
discapacidades.
31. MAPEO DE DIRECCIONES
El mapeo de direcciones corresponde en la relación de equivalencia entre un tipo de
nombre a otro tipo de nombre; por ejemplo, de un nombre de usuario a un nombre de
sistema.
Para poder ejecutar instrucciones, se debe tener un mecanismo de traducción de
direcciones virtuales a reales. Para ello, se necesitan dos cosas.
Primero, el compilador manejará una dirección base más un desplazamiento al referirse
a las instrucciones.
Segundo, el sistema operativo asignará como dirección base el número de página, al
paginar al proceso.
De esta manera, puede buscarse el inicio de una página en memoria, sumarle el
desplazamiento y así obtener la dirección real de una instrucción.
32. MAPEO DE RUTAS
• El mapeo de rutas consiste en la relación de equivalencia entre un tipo de
ruta u otro tipo, por lo que se debe considerar que las rutas consisten en la
serie de ubicaciones para poder acceder a un recurso.
• Otro nombre que recibe el mapeo de rutas es el de encaminamiento.
33. MODELO DE TERRY
• El problema principal de cualquier sistema de nombres, reside en encontrar
de manera fácil, sencilla y rápida cualquier recurso a través del identificador
(nombre) dado.
• Para solucionar este problema, Terry y otros colaboradores, propusieron un
modelo de facilidades que debe de poseer todo sistema de nombres. Dichas
características son las siguientes:
34. • Facilidad centralizada de nombramiento
• Facilidad replegada de nombramiento
• Facilidad descentralizada de nombramiento
• Facilidad distribuida de nombramiento
• Facilidad jerárquica de nombramiento
35. 2.4 SINCRONIZACIÓN
• Un sistema distribuido debe permitir el apropiado uso de los recursos, debe
encargarse de un buen desempeño y de la consistencia de los datos, además
de mantener seguras todas estas operaciones.
• La sincronización de procesos en los sistemas distribuidos resulta más
compleja que en los centralizados, debido a que la información y el
procesamiento se mantienen en diferentes nodos. Un sistema distribuido
debe mantener vistas parciales y consistentes de todos los procesos
cooperativos y de cómputo. Tales vistas pueden ser provistas por los
mecanismos de sincronización.
36. El término sincronización se define como la forma de forzar un orden parcial o
total en cualquier conjunto de eventos, y es usado para hacer referencia a tres
problemas distintos pero relacionados entre sí:
• 1. La sincronización entre el emisor y el receptor.
• 2. La especificación y control de la actividad común entre procesos
cooperativos.
• 3. La serialización de accesos concurrentes a objetos compartidos por
múltiples procesos.
37. • Haciendo referencia a los métodos utilizados en un sistema centralizado, el
cual hace uso de semáforos y monitores; en un sistema distribuido se utilizan
algoritmos distribuidos para sincronizar el trabajo común entre los procesos
y estos algoritmos.
• La sincronización de relojes en un sistema distribuido consiste en garantizar
que los procesos se ejecuten en forma cronológica y a la misma vez respetar
el orden de los eventos dentro del sistema.
38. ALGORITMO DE CRISTIAN
• Este algoritmo está basado en el uso del Tiempo Coordenado Universal
(UTC), el cual es recibido por un equipo dentro del sistema distribuido. Este
equipo, denominado receptor de UTC, recibe a su vez solicitudes periódicas
del tiempo del resto de las máquinas del sistema a cada uno de los cuales les
envía una respuesta en el menor plazo posible informando el tiempo UTC
solicitado, con lo cual todas las máquinas del sistema actualicen su hora y se
mantenga así sincronizado todo el sistema. El receptor de UTC recibe el
tiempo a través de diversos medios disponibles, entre los cuales se menciona
las ondas de radio, Internet, entre otros.
39. • Un gran problema en este algoritmo es que el tiempo no puede correr hacia
atrás.
• El tiempo del receptor UTC no puede ser menor que el tiempo de la
máquina que le solicitó el tiempo.
• El servidor de UTC debe procesar las solicitudes de tiempo con el concepto
de interrupciones, lo cual incide en el tiempo de atención.
• El intervalo de transmisión de la solicitud y su respuesta debe ser tomado en
cuenta para la sincronización. El tiempo de propagación se suma al tiempo
del servidor para sincronizar al emisor cuando éste recibe la respuesta.
40. ALGORITMO DE BERKELEY
• Un sistema distribuido basado en el algoritmo de Berkeley no dispone del
tiempo coordenado universal (UTC); en lugar de ello, el sistema maneja su
propia hora. Para realizar la sincronización del tiempo en el sistema, también
existe un servidor de tiempo que, a diferencia del algoritmo de Cristian, se
comporta de manera activa. Este servidor realiza un muestreo periódico del
tiempo que poseen algunas de las máquinas del sistema, con lo cual calcula
un tiempo promedio, el cual es enviado a todas las máquinas del sistema a fin
de sincronizarlo.
• El problema que existe en un sistema distribuido, es determinar el orden
particular sobre cualquier conjunto de eventos en el sistema. Existen dos
grupos de mecanismos de sincronización: centralizados y distribuidos.
41. ALGORITMO DE LAMPORT
Fue el primer algoritmo propuesto para lograr la exclusión mutua en redes
cuyos nodos se comuniquen solamente mediante mensajes y que no compartan
memoria. Fue propuesto por Lamport en 1978. El objetivo de la propuesta de
Lamport es obtener un algoritmo que cumpla con las siguientes condiciones:
• Un proceso que posee a un recurso, debe liberarlo antes de que sea otorgado
a otro proceso.
• Se deben entregar los derechos sobre un recurso en el orden en que se
hicieron todas las solicitudes de uso del recurso.
42. ALGORITMO DE LAMPORT
• El algoritmo anterior es un algoritmo distribuido, pues no existe un proceso
central de sincronización o almacenamiento central. Independientemente,
cada nodo lo ejecuta y se requieren 3*(N-1) mensajes por sección crítica (N
representa el número de procesos). Una característica importante en este
algoritmo es que cada proceso requiere conocer la locación exacta del
recurso al que desea acceder.
43. RELOJ FÍSICO
• La idea es proveer de un único bloque de tiempo para el sistema. Los
procesos pueden usar la marca física del tiempo provista o leída de un reloj
central para expresar algún orden en el conjunto de acciones que inician. La
principal ventaja de este mecanismo es la simplicidad, aunque existen varios
inconvenientes: el correcto registro del tiempo depende en la posibilidad de
recibir correctamente y en todo momento, el tiempo actual desplegado por el
reloj físico; los errores de transmisión se convierten en un impedimento para
el orden deseado, el grado de exactitud depende de las constantes puestas en
el sistema.
44. • Los valores de tiempo asignados a los eventos no tienen porqué ser cercanos
a los tiempos reales en los que ocurren.
• En ciertos sistemas es importante la hora real del reloj por lo que se precisan
relojes físicos externos (más de uno).
• Se deben sincronizar con los relojes del mundo real, entre sí.
45. SINCRONIZACIÓN DE RELOJES FÍSICOS
• Para conocer en qué hora del día ocurren los sucesos en los procesos de
nuestro sistema distribuido Q, es necesario sincronizar los relojes de los
procesos con una fuente de tiempo externa autorizada. Esto es la
sincronización externa. Y si los relojes están sincronizados con otro con un
grado de precisión conocido, entonces podemos medir el intervalo entre dos
eventos que ocurren en diferentes computadores llamando a sus relojes
locales, incluso aunque ellos no estén necesariamente sincronizados con una
fuente externa de tiempo. Esto es sincronización interna.
46. TIEMPO LÓGICO Y RELOJES LÓGICOS
• Los relojes lógicos son aquellos por los cuales están ordenados los sucesos de
una forma única. Para poder usar en general el tiempo físico, se debe
sincronizar perfectamente bien los relojes a lo largo de un sistema distribuido
para poder así obtener el orden de cualquier par arbitrario de sucesos que
ocurran en él, pero es poco probable que esto ocurra porque no se puede
sincronizar perfectamente los relojes a lo largo de un sistema distribuido. Se
puede utilizar un esquema similar a la casualidad física, que se aplica en los
sistemas distribuidos, para controlar el orden de algunos sucesos que ocurren
en diversos procesos.
47. RELOJES LÓGICOS TOTALMENTE
ORDENADOS
• Algunos pares de sucesos distintos, generados por diferentes procesos, tienen
marcas de tiempo de Lamport numéricamente idénticas. Sin embargo,
podemos crear un orden, uno para el que todos los pares de sucesos distintos
están ordenados, teniendo en cuenta los identificadores de los procesos en
los que ocurren los sucesos. Lamport la utilizó, para ordenar la entrada de
procesos en una sección.
48. RELOJES VECTORIALES
• Mattern y Fidge desarrollaron relojes vectoriales para mejorar la deficiencia
de los relojes de Lamport, del hecho que no podemos deducir que un reloj
vectorial para un sistema de N procesos es un vector de N enteros. Cada
proceso mantiene su propio reloj vectorial Vi, que utiliza para colocar marcas
de tiempo en los sucesos locales. Como las marcas de tiempo de Lamport,
cada proceso adhiere el vector de marcas de tiempo en los mensajes que
envía al resto, y hay unas reglas sencillas para actualizar los relojes. Los
vectores de marcas de tiempo tienen la desventaja, comparados con las
marcas de tiempo de Lamport, de precisar una cantidad de almacenamiento y
de carga real de mensajes que es proporcional a N, el número de procesos.