sistemas distribuidos

23
Sistemas Distribuidos

Upload: tronch10

Post on 17-Feb-2016

214 views

Category:

Documents


0 download

DESCRIPTION

ensayo sobre un sistema distribuido sus caracteristicas y sus conceptos de este

TRANSCRIPT

Page 1: Sistemas Distribuidos

Sistemas Distribuidos

Page 2: Sistemas Distribuidos

Agenda

1. Sistemas operativos y su rol en la construcción de sistemas distribuidos.1. Introducción a los OS’s2. Procesos3. Threads (Hilos). 4. Ejercicio

2. Comunicación entre procesos. 1. Introducción a los Sockets2. TCP cliente-servidor. 3. UDP cliente-servidor. 4. Conexiones abiertas (RAW)

Page 3: Sistemas Distribuidos

1.- Sistemas operativos y su rol en la construcción de sistemas distribuidos.

1.1 - Introducción a los OS’s

◦ La tarea de manejo de hardware es esencial para que los sistemas informáticos funcione correctamente.

◦ Este manejo de hardware a través de un software, va desde el reconocimientos de los dispositivos, hasta el uso sincronizado de los mismos para que atiendan solicitudes “simultaneas”

◦ Estos programas deben compartir el hardware: un propósito de un sistema operativo es permitir este intercambio.

*Homework: Investigar las partes de un Sistema Operativo

Page 4: Sistemas Distribuidos

Sistemas operativos y su rol en la construcción de sistemas distribuidos.

◦ Las tareas principales de un sistema operativo son:

◦ Gestión de recursos donde los principales recursos son el hardware: por ejemplo, discos, la memoria y redes.

◦ Capas de abstracción que nos permiten pensar en archivos con nombres y contenidos en un sistema de archivos, en lugar de tener que pensar en el diseño de los archivos en el disco. Los servicios comunes tales como el acceso a las redes.

◦ Los mecanismos de protección entre los clientes, para que los clientes maliciosos o defectuosos no causen daños al sistema.

Seguridad

Abstracción

Gestión de recursos

Page 5: Sistemas Distribuidos

Sistemas operativos y su rol en la construcción de sistemas distribuidos.

◦ Los sistemas operativos comprenden una gran cantidad de software.

◦ El límite exacto entre el software de aplicaciones y software del sistema operativo es discutible.

◦ Por ejemplo, los de uso general, tienen funciones tales como:◦ - Controladores de disco duros y disquetes;

◦ - Gestión de entrada y salida;

◦ - Proceso de gestión (tarea);

◦ - gestión de la memoria;

◦ - administración de redes;

◦ - almacenamiento de archivos;

◦ así como una gama de aplicaciones tales como editores de archivos, etc.

◦ ¿Quién se encarga de la gestión y supervisión de estos elementos?◦ EL KERNEL

◦ Homework: Definición de Kernel y los tipos que existen. (Micro kernel, kernels modulares, kernels monolíticos)

Page 6: Sistemas Distribuidos

Sistemas operativos y su rol en la construcción de sistemas distribuidos.

◦ Un sistema operativo moderno comprende al menos un Kernel (núcleo)

◦ Que normalmente proporciona:◦ Acceso a los servicios básicos comunes,

◦ Gestión de memoria,

◦ Gestión de tareas

◦ Gestión de dispositivos

◦ Manejo de conexiones (Redes)

◦ Mecanismos de seguridad

◦ Interfaz de usuario

◦ Acceso a los archivos

◦ Sistemas de archivos.

Page 7: Sistemas Distribuidos

Sistemas operativos y su rol en la construcción de sistemas distribuidos.

◦ Estamos acostumbrados a equipos con un solo CPU ejecutando múltiples programas “al mismo tiempo”.

◦ Esta simultaneidad es una ilusión: sólo hay un CPU, por lo que los programas de alguna manera tienen que compartir el CPU y otros recursos.

◦ Los mecanismos a través del cual este intercambio se lleva a cabo son:

◦ Los Procesos y ,

◦ Los Threads (Hilos o sub-procesos).

Page 8: Sistemas Distribuidos

Sistemas operativos y su rol en la construcción de sistemas distribuidos.

1.2.- Procesos

◦ Un proceso es un programa que se ejecuta en un ordenador.

◦ Esta instancia tiene su propio estado, que hace un seguimiento de lo que está haciendo (por ejemplo, lo que la instrucción que se está ejecutando, los valores de las variables).

◦ Los procesos se comunican sólo a través de los mecanismos proporcionados por el Sistema operativo.

Page 9: Sistemas Distribuidos

Sistemas operativos y su rol en la construcción de sistemas distribuidos.

Un proceso tiene una serie de recursos asociados con el:- El programa ejecutable (a menudo llamado "texto" o "código");

- Áreas de memoria PROPIAS (Data section - DS, heap y stack)

- Al menos un hilo de control

- El acceso a los archivos, interrupciones y otros servicios prestados por el sistema operativo

Una vez que el sistema ha iniciado, cada proceso es creado por un proceso padre. Esta creación es manejada por el sistema operativo como una llamada al sistema (System Call)

Homework:

◦ Investigar los modos de trabajo del CPU (Modo supervisor y modo usuario)

◦ Investigar como un compilador (ANSI C) asigna memoria a un programa, que elementos se almacenan en cada sección y como se manejan. (Mapa de memoria)

Page 10: Sistemas Distribuidos

Sistemas operativos y su rol en la construcción de sistemas distribuidos.

Los sistemas operativos atienden estos procesos mediante algoritmos de planificación o scheduling como:◦ Plazo Fijo

◦ FIFO (First In - First out)

◦ Round Robin

◦ Tamaño de Quantum

◦ SJF (Short Job First)

◦ SRTF (Short Remaining Time First)

◦ Tasa de respuesta más alta

◦ Por Comportamiento

◦ *Homework: Definir como funcionan los algoritmos anteriores

Page 11: Sistemas Distribuidos

Sistemas operativos y su rol en la construcción de sistemas distribuidos.

1.3.- Threads (Hilos o Subprocesos)

◦ Cuando el sistema operativo programa un nuevo proceso para su ejecución, un cambio de contexto se produce.

◦ Esto implica el ajuste de mapas de memoria, permisos y los registros de CPU para que coincida con el nuevo proceso.

◦ En algunas circunstancias es necesario tener múltiples procesos de ejecución dentro del mismo espacio de memoria: esto es potencialmente más eficiente debido a que NO hay cambio de contexto como tal.

◦ El término proceso ligero se utiliza a menudo como un sinónimo de hilo, pero en algunos sistemas operativos todos los hilos dentro de un proceso son vistos como un solo proceso, mientras que cada proceso ligero es visible para el planificador del sistema operativo.

*Homework: ¿Qué es un cambio de Contexto? y en que consiste

Page 12: Sistemas Distribuidos

Sistemas operativos y su rol en la construcción de sistemas distribuidos.

1.3.- Threads (Hilos o Subprocesos)

◦ Un hilo, es un mecanismo que permite que un programa se divida a sí mismo en dos o más tareas que se ejecutan “simultáneamente”.

◦ Estas tareas en general, comparten el estado, la memoria y otros recursos.

◦ Como resultado, el cambio entre los hilos se puede hacer de manera eficiente, en comparación con la conmutación entre los procesos.

◦ En la mayoría de los sistemas operativos multitarea modernos, la diferencia del rendimiento entre hilos y procesos es pequeño.

◦ A pesar de esto, las aplicaciones multitarea, pueden tener importantes diferencias de rendimiento en sistemas con varios CPU (por ejemplo, un procesador de doble núcleo).

Page 13: Sistemas Distribuidos

Sistemas operativos y su rol en la construcción de sistemas distribuidos.

1.4.- Ejemplos

*Homework: Realice el Diagrama de flujo del siguiente código y

determine si lo que se programó fué un Proceso o un Hilo

y justifique su respuesta

Page 14: Sistemas Distribuidos

2.- Comunicación entre procesos.

2.1 - Introducción a los Sockets

◦ La comunicación entre procesos (IPC – Interprocess Communication) abarca una serie de mecanismos con una solo propósito: permitir a un proceso comunicarse con otro.

◦ Existen dos subcategorías de mecanismos:

◦ El paso de mensajes implica colas de mensajes que se envían desde un proceso a otro. El álgebra de procesos CSP hace uso de paso de mensajes

◦ La memoria compartida, donde una sección de la memoria se puede ser accedida por todos los procesos relacionados con la comunicación

◦ *Homework:

Page 15: Sistemas Distribuidos

2.- Comunicación entre procesos. ◦ Los sockets son un sistema de comunicación entre procesos de diferentes máquinas de una red. Más

exactamente, un socket es un punto de comunicación por el cual un proceso puede emitir o recibir información.

Los sockets utilizan una serie de primitivas para establecer el punto de comunicación, para conectarse a una máquina remota en un determinado puerto que esté disponible, para escuchar en él, para leer o escribir y publicar información en él, y finalmente para desconectarse.

◦ Con todas las primitivas que ofrecen los sockets, se puede crear un sistema de diálogo muy completo.

Page 16: Sistemas Distribuidos

2.- Comunicación entre procesos. ◦ Un socket permite manejar de una forma sencilla la comunicación entre procesos, aunque estos

procesos se encuentren en sistemas distintos, sin necesidad de conocer el funcionamiento de los protocolos de comunicación subyacentes.

◦ Sirven de enlaces de comunicación entre procesos. Los procesos tratan a los sockets como descriptores de ficheros, de forma que se pueden intercambiar datos con otros procesos transmitiendo y recibiendo a través de sockets

◦ Pueden ejecutarse dentro de la misma máquina o a través de una red. Generalmente son usados en forma de cliente-servidor, es decir, cuando un cliente y un servidor establecen una conexión, lo hacen a través de un socket.

Page 17: Sistemas Distribuidos

2.- Comunicación entre procesos. Tipos de Sockets

El tipo de sockets describe la forma en la que se transfiere información a través de ese socket. Existen muchos tipos de sockets, sin embargo, los más populares son:

◦ Stream (TCP)

◦ Datagram (UDP)

◦ Raw (acceso directo al protocolo: root)

Page 18: Sistemas Distribuidos

2.- Comunicación entre procesos. 2.2 TCP cliente-servidor. (Stream Sockets)

◦ Son un servicio orientado a la conexión.

◦ Los datos se transfieren sin encuadrarlos en registros o bloques, asegurándose de esta manera que los datos lleguen al destino en el orden de transmisión.

◦ Si se rompe la conexión entre los procesos, éstos serán informados de tal suceso para que tomen las medidas oportunas, por eso se dice que están libres de errores.

El protocolo de comunicaciones con streams es un protocolo orientado a conexión, ya que para establecer una comunicación utilizando el protocolo TCP (Transmission Control Protocol), hay que establecer en primer lugar una conexión entre un par de sockets.

◦ Uno de los sockets está atento a peticiones de conexión (servidor).

◦ Otro solicita una conexión (cliente).

◦ Una vez que los dos sockets estén conectados, se pueden utilizar para transmitir datos en ambas direcciones.

Page 19: Sistemas Distribuidos

2.- Comunicación entre procesos. 2.3 UDP cliente-servidor. (Datagram Sockets)

◦ Son un servicio de transporte no orientado a la conexión.

◦ Son más eficientes que TCP, pero en su utilización no está garantizada la fiabilidad.

◦ Los datos se envían y se reciben en paquetes, cuya entrega no está garantizada.

◦ Los paquetes pueden ser ◦ Duplicados

◦ Perdidos

◦ Llegar en un orden diferente al que se envió.

◦ Las comunicaciones a través de datagramas usan UDP (User Datagram Protocol).

◦ Lo que significa que, cada vez que se envíen datagramas es necesario enviar el descriptor del socket local y la dirección del socket que debe recibir el datagrama, o sea hay que enviar datos adicionales cada vez que se realice una comunicación, aunque tiene la ventaja de que se pueden indicar direcciones globales y el mismo mensaje llegará a un muchas máquinas a la vez.

Page 20: Sistemas Distribuidos

2.- Comunicación entre procesos. 2.4 Conexiones abiertas (RAW)

◦ Son sockets que dan acceso directo a la capa de software de red subyacente o a protocolos de más bajo nivel. Se utilizan sobre todo para la depuración del código de los protocolos.

◦ Ejemplos:◦ Telnet

Page 21: Sistemas Distribuidos

2.- Comunicación entre procesos. Primitivas de los Sockets

Page 22: Sistemas Distribuidos

2.- Comunicación entre procesos. Funcionamiento de la conexión mediante sockets

Page 23: Sistemas Distribuidos

2.- Comunicación entre procesos. Funcionamiento de la conexión mediante sockets

Cliente realiza petición Servidor acepta petición y establece conexión