Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Investigacion - Unidad LL

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 14

INSTITUTO TECNOLÓGICO

DE CHILPANCINGO

ACTIVIDAD:

Investigación Unidad II

MATERIA:

Sistemas Distribuidos.

DOCENTE:

HERNANDEZ MIRANDA ROGELIO


FERNANDO
Elaborado por:

• Luis} Ángel Felipe Hernández

26 de septiembre del 2019, Chilpancingo Gro.


ÍNDICE
PROCESOS Y COMUNICACIÓN ............................................................................................................ 3
PROCESOS ....................................................................................................................................... 4
COMUNICACIÓN ............................................................................................................................. 7
NOMBRES........................................................................................................................................ 9
SINCRONIZACIÓN.......................................................................................................................... 11
REFERENCIAS: ................................................................................................................................... 14
PROCESOS Y COMUNICACIÓN

La comunicación en sistemas distribuidos es la que permite la interacción entre


aplicaciones y servicios del sistema.
Modelos de comunicación entre procesos:
✓ Memoria compartida (Sólo uni/multiprocesador no distribuido).
✓ Paso de mensajes.
El nivel de abstracción en la comunicación:
✓ Paso de mensajes puro (Cliente-Servidor).
✓ Llamadas a procedimientos remotos.
✓ Modelos de objetos distribuidos
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 y sus contenidos.

Un proceso es una entidad que posee 2


características importantes:
• Recursos: Básicamente: 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.

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.

Estados de los procesos:


Consideramos que todo proceso puede estar, como mínimo, en uno de los
siguientes tres estados:

✓ Activo: el proceso está empleando la CPU, por tanto, está ejecutándose.


Puede haber tantos procesos activos como procesadores haya disponibles.
Por tanto, si el sistema dispone de un único procesador, únicamente puede
haber un proceso activo a la vez.
✓ Preparado: el proceso no está ejecutándose, pero es candidato a pasar a
estado activo. Es el planificador el que, en base a un criterio de planificación,
decide qué proceso selecciona de la lista de procesos preparados para pasar
a estado activo.
✓ Bloqueado: el proceso está pendiente de un evento externo que le ha hecho
bloquear, tales como una operación de lectura/escritura, la espera de
finalización de un proceso hijo, una señal o una operación sobre un semáforo.
El dispositivo/hecho externo "avisa" al S.O. cuando ha terminado la acción
que realizaba mediante una INTERRUPCIÓN, dejando el S.O. lo que está
haciendo para atender a esta última. Tras esto, el S.O. comprueba cuales
son los procesos que fueron bloqueados por ese evento externo,
cambiándolos al estado de preparado.

La transición de activo a preparado y viceversa depende de decisiones tomadas por


el planificador del sistema operativo en base a un cierto criterio. La transición de
activo a bloqueado, y de bloqueado a preparado puede inducirlas el programador
mediante llamadas al sistema.

✓ En espera / Preparación: Estado por el que pasan los procesos antes de


pasar a estar preparados por primera vez. Los procesos, cuando comienzan
a existir, no están preparados para comenzar a ejecutar instrucciones hasta
que el sistema no ha llevado a cabo una serie de actividades. Una vez que
el proceso está completamente cargado, ya se puede producir la primera
transición al estado preparado.
✓ Terminado: La transición de activo a este estado ocurre cuando el proceso
realiza una llamada al sistema solicitando su propia terminación. En estas
circunstancias, hay estructuras de datos correspondientes al proceso que no
pueden ser liberadas hasta que el proceso padre del que está terminando
recoja el código de terminación del mismo. Hasta que esto ocurra, estas
estructuras se mantendrán y el proceso seguirá existiendo en estado
terminado.
✓ Transición: cuando la operación que mantiene a un proceso en estado
bloqueado termina, el proceso puede haber perdido parte de los recursos
que necesita para proseguir su ejecución. Este es por ejemplo el caso de un
sistema con memoria virtual, en el que parte de las páginas de memoria del
proceso han sido descargadas a disco. En dicho caso, el proceso tendría que
pasar por un estado intermedio transición mientras recupera dichos recursos,
y una vez que todos sus recursos vuelven a estar disponibles, volvería al
estado preparado.
COMUNICACIÓN

La diferencia principal entre un sistema distribuido y un sistema con un procesador


es la comunicación entre procesos. En un sistema con un procesador la mayor parte
de la comunicación entre procesos supone la existencia de memoria compartida.
Un proceso escribe en un buffer compartido y otro proceso lee de él. En un sistema
distribuido no existe tal memoria compartida, por lo que toda la comunicación se
basa en la transferencia de mensajes.

Para los sistemas distribuidos de área amplia relativamente lentos, se utilizan los
protocolos de capas orientadas hacia la conexión como OSI y TCP/IP, dado que el
problema principal a resolver es el transporte confiable de los bits a través de líneas
físicas pobres.

Para los sistemas basados en LAN, los protocolos con capas se utilizan muy poco.
En vez de ellos, se adopta por lo general un modelo mucho más sencillo en donde
el cliente envía un mensaje al servidor y éste envía de regreso una respuesta al
cliente.

También se utiliza mucho la llamada a procedimientos remotos (RPC). Con ella un


proceso cliente que se ejecuta en una máquina llama a un procedimiento que se
ejecuta en otra máquina.
Comunicación RPC

El RPC (del inglés Remote Procedure Call,


Llamada a Procedimiento Remoto) es un
protocolo que permite a un programa
de ordenador ejecutar código en otra
máquina remota sin tener que preocuparse
por las comunicaciones entre ambos. El
protocolo es un gran avance sobre
los sockets usados hasta el momento. De
esta manera el programador no tenía que
estar pendiente de las comunicaciones, estando éstas encapsuladas dentro de las
RPC.

Comunicación en grupo
Permite tener características similares en un numero
determinado de elementos de la red, el acceso será
cerrado o limitado para elementos que no pertenezcan al
grupo

Tolerancia a fallos
Que el sistema de archivos sea
tolerante a fallos implica que el
sistema debe guardar varias
copias del mismo archivo en
distintos ordenadores para
garantizar la disponibilidad en
caso de fallo del servidor
original. Además, se ha de
aplicar un algoritmo que nos
permita mantener todas las
copias actualizadas de forma consistente, o un método alternativo que sólo nos
permita acceder al archivo actualizado, como invalidar el resto de copias cuando en
cualquiera de ellas se vaya a realizar una operación de escritura. El uso de
memorias cache para agilizar el acceso a los archivos también es recomendable,
pero este caso requiere analizar con especial atención la consistencia del sistema.
NOMBRES

Un nombre en un sistema distribuido es una cadena de bits


o caracteres que se utiliza para referirse a una entidad.
Una entidad en un sistema distribuido puede ser
prácticamente cualquier cosa. Ejemplos típicos incluyen
recursos tales como hosts, impresoras, discos y archivos.
Otros ejemplos bien conocidos de las entidades que a
menudo son explícitamente nombrados son los procesos,
usuarios, buzones de correo, grupos de noticias, páginas
Web, ventanas gráficas, mensajes, conexiones de red, y
etc.

Las entidades pueden ser operados. Por ejemplo, un


recurso como una impresora ofrece una interfaz que
contiene las operaciones para la impresión de un
documento, se solicita el estado de un trabajo de
impresión, etc. Además, una entidad tal como una
conexión de red puede facilitará las operaciones de envío
y recepción de datos, ajuste de calidad de servicio los parámetros, se solicita el estado, y así
sucesivamente.

Para operar en una entidad, es necesario para acceder a ella, para lo cual necesitamos un
punto de acceso. Un punto de acceso es otro, pero muy especial, de la entidad en un
entorno distribuido del sistema. El nombre de un punto de acceso se denomina una
dirección. La dirección de un punto de acceso de una entidad es también llamada
simplemente una dirección de esa entidad. Una entidad puede ofrecer más de un punto de
acceso.
A modo de comparación, un teléfono puede ser visto como un punto de acceso de una
persona, mientras que el número de teléfono corresponde a una dirección. De hecho,
muchas personas hoy en día disponen de varios números de teléfono, cada número
corresponde a un punto en el que se puede llegar. En un sistema distribuido, un ejemplo
típico de un punto de acceso es un host que ejecute una determinada servidora, con su
dirección formada por la combinación de, por ejemplo, una
dirección de SI y número de puerto (es decir, el servidor de nivel
de transporte de dirección).

La entidad puede cambiar sus puntos de acceso en el curso del


tiempo. Por ejemplo, cuando un equipo móvil se desplaza a otro
lugar, a menudo se le asigna una diferente Dirección IP que la
que tenía antes. Del mismo modo, cuando una persona se
traslada a otro ciudad o país, a menudo es necesario cambiar
los números de teléfono también. En una la misma manera, cambiar de trabajo o de los
proveedores de servicios de Internet, significa cambiar la dirección de correo electrónico.

Una dirección es, pues, una clase especial de nombre: se refiere a un punto de acceso de
una entidad. Debido a un punto de acceso está estrechamente asociada con una entidad,
que sería parece conveniente utilizar la dirección de un punto de acceso como un nombre
habitual para los asociados entidad. Sin embargo, esto casi nunca se realiza como tal
nombramiento es por lo general muy poco flexible y, a menudo hostil humanos.
Por ejemplo, no es raro para reorganizar periódicamente un sistema distribuido,
para que un servidor específico ya está funcionando en un host diferente que antes. La vieja
máquina en la que puede ser el servidor que se utiliza para correr reasignado a un completo
servidor diferente. En otras palabras, una entidad puede cambiar fácilmente de un acceso
punto, o un punto de acceso puede ser reasignado a otra entidad.
Si una dirección es utiliza para referirse a una entidad, vamos a tener una referencia no
válida en el instante en el acceso cambios puntuales o se resigna a otra entidad. Por lo tanto,
es mucho mejor dejar que un servicio de ser conocido por un nombre separado e
independiente de la dirección de los
asociados servidor. Del mismo
modo, si la entidad ofrece más de un
punto de acceso, no está claro que
dirección a utilizar como referencia.
Por ejemplo, muchas organizaciones
distribuyen su Web de servicios a
través de varios servidores. Si
queremos usar las direcciones de los
servidores como referencia para el servicio Web, no es obvio que la dirección debe ser
elegido como el mejor. Una vez más, una solución mucho mejor es tener un nombre único
para el servicio Web independiente de las direcciones de los servidores web.

En muchos sistemas informáticos, direcciones e identificadores se representan en forma


legible por máquina única, es decir, en forma de cadenas de bits. Por ejemplo, una dirección
Ethernet es básicamente una cadena aleatoria de 48 bits. Del mismo modo, direcciones de
memoria se suelen representar como cadenas de 32 bits o 64 bits.
En principio, un sistema de nombres mantiene un enlace de nombre y dirección, que en su
forma más simple la forma es sólo una mesa de (nombre, dirección) pares. Sin embargo, en
los sistemas distribuidos que período de grandes redes y para los que necesitan muchos
recursos para ser nombrado, un sistema centralizado mesa no va a funcionar.

SINCRONIZACIÓN

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. Para lograr esto existen
varios métodos o algoritmos que se programan dentro
del sistema operativo, entre los cuales tenemos:

Este algoritmo está basado en el uso


del tiempo coordenado universal (siglas en inglés,
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 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.

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.

Algoritmo de Cristian

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

Cuando utilizamos una base de tiempo Universal, se dice que


utilizamos Relojes Físicos. Son útiles en aplicaciones que se
manejan eventos secuenciados a alta velocidad, de tal suerte que
no hay recursos disponibles para organizar la sincronización; En
ciertos sistemas (por ejemplo, los sistemas de tiempo real), es
importante la hora real del reloj. Para estos sistemas se necesitan
relojes fisicos externos. Por razones de eficiencia y redundancia,
por lo general son recomendables varios relojes fisicos, lo cual
implica dos problemas:

1. ¿Cómo sincronizamos los relojes con la hora exacta del mundo real?
2. ¿Cómo sincronizamos los relojes entre sí?

Los relojes físicos deben ser iguales (estar sincronizados), no deben desviarse del tiempo
real más allá de cierta magnitud. Debido a la distorsión del tiempo y las derivas en los relojes
de los distintos CPU's, en ciertos sistemas es importante la hora real del reloj, por lo que se
precisan relojes físicos externos (más de uno) y se deben sincronizar con los relojes del
mundo real.

RELOJES LÓGICOS.

La idea de un reloj lógico consiste en crear un sistema de


convergencia del tiempo mediante la medición de las derivas, de
tal suerte que la noción de tiempo universal se sustituye por la
noción de un tiempoo global auto-ajustable.

Los relojes lógicos son útiles para ordenar eventos en ausencia de


un reloj común. Cada proceso P mantiene una variable
entera LCP (su reloj lógico), cuando un proceso P genera un evento, LCP = LCP +1, entonces
cuando un proceso envía un mensaje incluye el valor de su reloj; si otro proceso Q recibe
un mensaje, éste debe revisar su reloj lógico para determinar si existe secuencialidad con
el mensaje en turno o su puede trabajar en concurrencia. Los relojes lógicos sólo
representan una relación de orden parcial, y funcionan mediante la alteración del conteo
de tiempo para mantener la sincronización mediante variables que afectan la hora de
referencia. El reloj lógico establece un orden total entre eventos si se añade el número del
procesador, pero esto implica pagar un precio por la comunicación y por mantener el
registro la tabla de CPU's.
REFERENCIAS:

https://www.monografias.com/trabajos55/sincronizacion-sistemas-

distribuidos/sincronizacion-sistemas-distribuidos.shtml

http://sistemasdistribuidosjosecastro.blogspot.com/2016/05/procesos-e-hilos.html

https://sites.google.com/site/gestiondecursoedgard/home/sistemas-operativos-ii-

i51/unidad-2---procesos-y-comunicacion

https://1984.lsi.us.es/wiki-ssoo/index.php/Estados_de_los_procesos

https://sites.google.com/site/mrtripus/home/sistemas-operativos-2/2-2-sincronizacion-

relojes-fisicos-relojes-logicos-usos-de-la-sincronizacion

También podría gustarte