Professional Documents
Culture Documents
Contenido
Sistemas distribuidos Sistemas operativos distribuidos Comunicacin de procesos Sincronizacin de procesos Gestin de procesos Sistemas de archivos Gestin de memoria
Conceptos previos
Un programa es un conjunto de instrucciones. Un proceso es un programa en ejecucin. Una red de computadores es un conjunto de computadores conectados por una red de interconexin. Un sistema distribuido (SD) Modelo fsico: conjunto de nodos (procesadores sin memoria ni reloj comn) conectados por una red. Modelo lgico: conjunto de procesos que ejecutan concurrentemente en uno o ms computadores que colaboran y comunican intercambiando mensajes. Un protocolo es un conjunto de reglas e instrucciones que gobiernan la comunicacin en un sistema distribuido, es decir, el intercambio de mensajes.
Sistemas operativos: una visin aplicada 2 J. Carretero, F. Garca, P. de Miguel, F. Prez
Caractersticas
Compartir recursos (HW, SW, datos). Acceso a recursos remotos.
Modelo cliente-servidor Modelo basado en objetos
Ofrecen una buena relacin coste/rendimiento Capacidad de crecimiento Tolerancia a fallos, disponibilidad Replicacin Concurrencia Velocidad Paralelismo
Sistemas operativos: una visin aplicada 3 J. Carretero, F. Garca, P. de Miguel, F. Prez
Desventajas
Necesidad de software ms complejo Problemas de fiabilidad Problemas de seguridad y confidencialidad
Red de interconexin
Redes e interconexin
Paquete: tipo de mensaje que se intercambia entre dos dispositivos de comunicacin. Tamao limitado por el hardware Mensaje: objeto lgico que se intercambian entre dos o ms procesos. Su tamao puede ser bastante grande. Un mensaje se descompone en paquetes. Subsistema de comunicacin: conjunto de componentes HW y SW que proporcionan servicios de comunicacin en un sistema distribuido. Protocolo: conjunto de reglas e instrucciones que gobiernan el intercambio de paquetes y mensajes
Sistemas operativos: una visin aplicada 6 J. Carretero, F. Garca, P. de Miguel, F. Prez
Protocolos de comunicacin
Protocolo: conjunto de reglas y formatos que permiten la comunicacin entre procesos. La definicin de un protocolo tiene dos parte: Especificacin de la secuencia de mensajes que deben intercambiarse. Especificacin del formato de mensajes. El software de red se organiza en niveles
Ejemplos de protocolos
Protocolos internet: Originados por el trabajo de DARPA en los 70 Muy utilizados en la actualidad Gran crecimiento durante los 90 debido al uso del Web Protocolos OSI (open system interconection) Estndar desarrollado por ISO Estndares propietarios SNA de IBM (aos 70) DECnet desarrollado por DEC NetWare: red de Novell para redes de PC
12
Protocolos TCP/IP
Resultado de la investigacin y desarrollo llevados a cabo en la red ARPANET (financiada por DARPA) en los aos 70 Familia de protocolos utilizados en Internet En los 90 se ha establecido como la arquitectura comercial dominante: Se especificaron y utilizaron antes de OSI Independiente de la tecnologa de red utilizada Internet est construida sobre un conjunto de protocolos TCP/IP. Espectacular desarrollo de World Wide Web
13
Protocolos TCP/IP
Emisor
Receptor
14
15
Protocolos de transporte
Protocolo TCP Orientado a conexin Garantiza que los datos se entregan en el orden en el que se envan Las conexiones TCP se ven como un flujo de bytes La transmisin se considera fiable. Pueden perderse mensajes (sobrecarga en la red, fallos en encaminadores, etc.) Cuando los mensajes son muy pequeos, TCP los retrasa hasta conseguir uno ms grande
Esta opcin debe desactivarse si es necesario
Escrituras concurrentes sobre una misma conexin TCP pueden provocar que los datos se entremezclen.
Sistemas operativos: una visin aplicada 16 J. Carretero, F. Garca, P. de Miguel, F. Prez
Protocolos de transporte
Protocolo UDP Protocolo de datagramas no orientado a conexin. Protocolo no fiable
Los paquetes se pueden perder, duplicar, recibir en orden distinto al enviado
17
Encaminamiento
Permite que los paquetes viajen del proceso emisor al receptor. Algoritmo: Un programa de aplicacin genera un paquete, o bien se lee un paquete de la interfaz de red. Si el paquete es para la mquina, se acepta. En caso contrario, se incrementa el contador de saltos, si se excede el mximo, el paquete se descarta. Si el paquete no es para la mquina se busca en la tabla de encaminamiento y se retransmite a la interfaz adecuada.
Tablas estticas, las ms utilizadas Tablas dinmicas
18
20
21
Contenido
Sistemas distribuidos
22
El usuario ve un conjunto de mquinas independientes No hay transparencia Se debe acceder de forma explcita a los recursos de otras mquinas Difciles de utilizar para desarrollar aplicaciones distribuidas
Sistemas operativos: una visin aplicada 23 J. Carretero, F. Garca, P. de Miguel, F. Prez
Se comporta como un SO nico (visin nica) Distribucin. Transparencia Se construyen normalmente como microncleos que ofrecen servicios bsicos de comunicacin Mach, Amoeba, Chorus. Todos los computadores deben ejecutar el mismo SOD
Sistemas operativos: una visin aplicada 24 J. Carretero, F. Garca, P. de Miguel, F. Prez
Transparencia
Acceso: acceso a recursos remotos y locales de igual forma Posicin: acceso a los recursos sin necesidad de conocer su situacin Concurrencia: acceso concurrente a recursos compartidos sin interferencias Replicacin: Acceso a recursos replicados sin conocimiento de que lo son Fallos: mantenimiento del servicio en presencia de fallos. Migracin: permite que los recursos y objetos se muevan sin afectar a la operacin de los programas. Capacidad de crecimiento: facilidad para crecer sin afectar a la estructura del sistema
Sistemas operativos: una visin aplicada 25 J. Carretero, F. Garca, P. de Miguel, F. Prez
Servicios y protocolos estndarizados: Sistemas abiertos Ofrecen servicios no incluidos en el SO (servicios de ficheros distribuidos, servicios de nombres, ...) Facilitan el desarrollo de aplicaciones distribuidas Independientes del HW y del SO subyacente. DCE, CORBA, DCOM, Legion, Globe, Globus
Sistemas operativos: una visin aplicada 26 J. Carretero, F. Garca, P. de Miguel, F. Prez
27
Contenido
Sistemas distribuidos Sistemas operativos distribuidos
Comunicacin de procesos
Sincronizacin de procesos Gestin de procesos Sistemas de archivos Gestin de memoria
28
Comunicacin cliente-sevidor
Muy utilizada en entornos distribuidos (ms del 90% de los sistemas distribuidos utilizan la arquitectura cliente-servidor)
Mquina A cliente NCLEO respuesta petcicin Mquina B servidor NCLEO RED
Comunicacin de grupos
Utiliza mensajes multicast til para: Ofrecer tolerancia a fallos basado en servicios replicados Localizar objetos en sistemas distribuidos Mejor rendimiento mediante datos replicados Actualizaciones mltiples Operaciones colectivas en clculo paralelo
31
Sockets
Aparecieron en 1981 en UNIX BSD 4.2 Intento de incluir TCP/IP en UNIX Diseo independiente del protocolo de comunicacin Un socket es punto final de comunicacin (direccin IP y puerto) Abstraccin que: Ofrece interfaz de acceso a los servicios de red en el nivel de transporte
Protocolo TCP Protocolo UDP
Sockets: introduccin
Sujetos a proceso de estandarizacin dentro de POSIX (POSIX 1003.1g) Actualmente Disponibles en casi todos los sistemas UNIX En prcticamente todos los sistemas operativos
WinSock: API de sockets de Windows
33
Sockets UNIX
Dominios de comunicacin Tipos de sockets Direcciones de sockets Creacin de un socket Asignacin de direcciones Solicitud de conexin Preparar para aceptar conexiones Aceptar una conexin Transferencia de datos
34
Dominios de comunicacin
Un dominio representa una familia de protocolos Un socket est asociado a un dominio desde su creacin Slo se pueden comunicar sockets del mismo dominio Algunos ejemplos: PF_UNIX (o PF_LOCAL): comunicacin dentro de una mquina PF_INET: comunicacin usando protocolos TCP/IP Los servicios de sockets son independientes del dominio
35
Tipos de sockets
Stream (SOCK_STREAM) Orientado a conexin Fiable, se asegura el orden de entrega de mensajes No mantiene separacin entre mensajes Si PF_INET se corresponde con el protocolo TCP Datagrama (SOCK_DGRAM) Sin conexin No fiable, no se asegura el orden en la entrega Mantiene la separacin entre mensajes Si PF_INET se corresponde con el protocolo UDP Raw (SOCK_RAW) Permite el acceso a los protocolos internos como IP
Sistemas operativos: una visin aplicada 36 J. Carretero, F. Garca, P. de Miguel, F. Prez
Direcciones de sockets
Cada socket debe tener asignada una direccin nica Las direcciones se usan para: Asignar una direccin local a un socket (bind) Especificar una direccin remota (connect o sendto) Dependientes del dominio Se utiliza la estructura genrica struct sockaddr Cada dominio usa una estructura especfica Direcciones en PF_UNIX (struct sockaddr_un)
Nombre de fichero
Direcciones en PF_UNIX (struct sockaddr_in) Uso de conversin de tipos (casting) en las llamadas
37
Ejemplo
Programa que obtiene la direccin en formato decimal-punto a partir de un formato dominio-punto.
void main(int argc, char **argv) { struct hostent *hp; struct in_addr in; hp = gethostbyname(argv[1]); if (hp == NULL) { printf(Error en gethostbyname\n); exit(0); } memcpy(&in.s_addr,*(hp->h_addr_list),sizeof(in.s_addr)); printf(%s es %s\n, hp->h_name, inet_ntoa(in)); }
40
Direcciones de sockets II
En TCP/IP los nmeros se emplean con formato big-endian. En computadores que no utilicen este formato es necesario emplear funciones para traducir nmeros entre el formato que utiliza TCP/IP y el empleado por el propio computador: u_long htonl (u_long hostlong) u_short htons (u_short hostshort) u_long ntohl (u_long netlong) u_short ntohs (u_short netshort) Las primera traduce un nmero de 32 bits representado en el formato del computador al formato de red (TCP/IP).
41
Creacin de un socket
int socket(int dominio, int tipo, int protocolo) Crea un socket devolviendo un descriptor de fichero dominio: PF_XXX tipo: SOCK_XXX protocolo: dependiente del dominio y tipo
0 elige el ms adeucado Especificados en /etc/protocols
42
Asignacin de direcciones
int bind(int sd, struct sockaddr *dir, int long) sd: descriptor devuelto por socket dir: direccin a asignar long: longitud de la direccin Si no se asigna direccin (tpico en clientes) Se le asigna automticamente (puerto efmero) en la su primera utilizacin (connect o sendto) Direcciones en dominio PF_INET Puertos en rango 0..65535. Reservados: 0..1023. Si 0, el sistema elige uno Host: una direccin local IP
INNADDR_ANY: elige cualquiera de la mquina
Solicitud de conexin
Realizada en el cliente int connect(int sd, struct sockaddr *dir, int long) sd: descriptor devuelto por socket dir: direccin del socket remoto long: longitud de la direccin Si el socket no tiene direccin asignada, se le asigna una automticamente Normalmente se usa con streams
44
45
46
47
Obtener la direccin del socket en el toro extremo de la conexin: int gerpeername(int sd, struct sockaddr *dir, int *long)
sd: descriptor devuelto por socket dir: direccin del socket remoto long: parmetro valor-resultado
48
Tambin puede utilizarse el servicio send. Recepcin: int read(int sd, char *mem, int long);
Devuelve el n de bytes recibidos
Tambin puede utilizarse el servicio recv Es importante comprobar siempre el valor que devuelven estas llamadas: pueden no transferirse todos los datos.
Sistemas operativos: una visin aplicada 49 J. Carretero, F. Garca, P. de Miguel, F. Prez
/* fallo */
51
Cerrar un socket
Se usa close para cerrar ambos tipos de sockets Si el socket es de tipo stream, close cierra la conexin en ambos sentidos Se puede cerrar un nico extremo: int shutdown(int st, int modo)
sd: descriptor devuelto por socket modo: SHUT_RD, SHUT_RW o SHUT_RDWR
52
Configuracin de opciones
Existen varios niveles dependiendo del protocolo afectado como parmetro SOL_SOCKET: opciones independientes del protocolo IPPROTO_TCP: nivel de protocolo TCP IPPTOTO_IP: nivel de protocolo IP Consultar opciones asociadas a un socket
int getsockopt(int sd, int nivel, int opc, char *val, int *long)
53
socket()
Proceso cliente
bind() listen()
socket()
Abrir conexin
connect()
accept() accept()
Crear thread
write()
Peticin
read()
read()
Respuesta
write()
close()
close()
54
Ejemplo (TCP)
NCLEO
Restulado = 7
NCLEO RED
55
Servidor (TCP)
void main(int argc, char *argv[]) { struct sockaddr_in server_addr, int sd, sc; int size, val; int size; int num[2], res;
client_addr;
sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); val = 1; setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, (char *) &val, sizeof(int)); bzero((char *)&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = 4200; bind(sd, &server_addr, sizeof(server_addr));
56
Servidor (TCP)
listen(sd, 5); size = sizeof(client_addr); while (1) { printf("esperando conexion\n"); sc = accept(sd, (struct sockaddr *)&client_addr,&size); read(sc, (char *) num, 2 *sizeof(int)); res = num[0] + num[1]; write(sc, &res, sizeof(int)); close(sc); } close (sd); exit(0); } // se enva el resultado // recibe la peticin
57
Cliente (TCP)
void main(void) { int sd; struct sockaddr_in server_addr; struct hostent *hp; int num[2], res; sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); bzero((char *)&server_addr, sizeof(server_addr)); hp = gethostbyname ("arlo.datsi.fi.upm.es"); memcpy (&(server_addr.sin_addr), hp->h_addr, hp->h_length); server_addr.sin_family = AF_INET; server_addr.sin_port = 4200;
58
Cliente (TCP)
// se establece la conexin connect(sd, (struct sockaddr *) &server_addr, sizeof(server_addr)); num[0]=5; num[1]=2; write(sd, (char *) num, 2 *sizeof(int)); read(sd, &res, sizeof(int)); printf("Resultado es %d \n", res); close (sd); exit(0); } // enva la peticin
// recibe la respuesta
59
Servidor (datagramas)
void main(void) { int num[2]; int s, res, clilen; struct sockaddr_in server_addr, client_addr; s = socket(AF_INET, SOCK_DGRAM, 0);
bzero((char *)&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = 7200; bind(s, (struct sockaddr *)&server_addr, sizeof(server_addr));
60
Servidor (datagramas)
clilen = sizeof(client_addr); while (1) { recvfrom(s, (char *) num, 2* sizeof(int), 0, (struct sockaddr *)&client_addr, &clilen); res = num[0] + num[1]; sendto(s, (char *)&res, sizeof(int), 0, (struct sockaddr *)&client_addr, } }
clilen);
61
Cliente (datagramas)
void main(int argc, char *argv[]){ struct sockaddr_in server_addr, client_addr; struct hostent *hp; int s, num[2], res; if (argc != 2){ printf("Uso: client <direccion_servidor> \n"); exit(0); } s = socket(AF_INET, SOCK_DGRAM, 0); hp = gethostbyname (argv[1]); bzero((char *)&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; memcpy (&(server_addr.sin_addr), hp->h_addr, hp->h_length); server_addr.sin_port = 7200;
62
Cliente (datagramas)
bzero((char *)&client_addr, sizeof(client_addr)); client_addr.sin_family = AF_INET; client_addr.sin_addr.s_addr = INADDR_ANY; client_addr.sin_port = htons(0); bind (s, (struct sockaddr *)&client_addr, sizeof(client_addr)); num[0] = 2; num[1] = 5;
63
64
65
SISTEMA SERVIDOR
PROCEDIMIENTOS
1
RESGUARDO CLIENTE
CONVIERTE ENTRADA
6
PREPARA SALIDA
66
Suplentes (stubs)
Se generan automticamente por el software de RPC En el cliente: Localizan al servidor Empaquetan los parmetros y construyen los mensajes Envan el mensaje al servidor Espera la recepcin del mensaje y devuelven los resultados En el servidor Realizan tareas similares Los suplentes son independientes de la implementacin que se haga del cliente y del servidor. Slo dependen de la interfaz.
67
cliente
servidor
Se registra con un servicio de nombres
Desempaqueta
la respuesta
68
69
70
Transferencia de parmetros
Una de las funciones de los resguardos es empaquetar los parmetros en un mensaje: aplanamiento (marshalling) Problemas en la representacin de los datos Servidor y cliente pueden ejecutar en mquinas con arquitecturas distintas Transmisin con un formato estndar:
XDR (external data representation) es un estndar que define la representacin de tipos de datos
El receptor se encarga de la conversin (CORBA). Problemas con los punteros Una direccin slo tiene sentido en un espacio de direcciones
71
Aplanamiento
SISTEMA CLIENTE
CDIGO DE LA APLICACIN
Procedimiento(ABC, 123, 12.34)
SISTEMA SERVIDOR
PROCEDIMIENTOS
Procedimiento(ABC, 123, 12.34)
aplanamiento
RESGUARDO CLIENTE
mensaje C 123 12.34
RESGUARDO SERVIDOR
A B C 123 12.34
Tira de bytes
72
73
Enlazador dinmico
Enlazador dinmico (binder): Es el servicio que mantiene una tabla de traducciones entre nombres de servicio y direcciones. Incluye funciones para: Registrar un nombre de servicio Eliminar un nombre de servicio Buscar la direccin correspondiente a un nombre de servicio Como localizar al enlazador dinmico: Ejecuta en una direccin fija de un computador fijo. El sistema operativo se encarga de indicar su direccin Difundiendo un mensaje (broadcast) cuando los procesos comienzan su ejecucin.
74
Mquina B
servidor
Mquina C
servidor
4. Ejecutar procedimiento
75
76
77
78
Reintentar y garantizar que la RPC se realiza al menos una vez No vale para operaciones no idempotentes No reintentar, puede que no se realice ni una sola vez
80
81
Aspectos de implementacin
Protocolos RPC Orientados a conexin
Fiabilidad se resuelve a bajo nivel, peor rendimiento
82
El cdigo del cliente El cdigo del servidor El compilador de idl proporciona: El resguardo del cliente El resguardo del servidor
83
COMPILADOR IDL
SUPLENTE EN CLIENTE CABECERA SUPLENTE EN SERVIDOR
COMPILADOR C
CABECERA
CABECERA
FICHEROS FUENTE DEL SERVIDOR COMPILADOR C FICHEROS OBJETO DEL SERVIDOR MONTADOR EJECUTABLE DEL SERVIDOR
COMPILADOR C
BIBLIOT. RPC
BIBLIOT. RPC
84
85
RPC de Sun
Utiliza como lenguaje de definicin de interfaz XDR: Una interfaz contiene un n de programa y un n de versin. Cada procedimiento especfica un nombre y un n de procedimiento Los procedimientos slo aceptan un parmetro. Los parmetros de salida se devuelven mediante un nico resultado El lenguaje ofrece una notacin para definir:
constantes definicin de tipos estructuras, uniones programas
86 J. Carretero, F. Garca, P. de Miguel, F. Prez
RPC de Sun
rpcgen es el compilador de interfaces que genera: Suplente del cliente Suplente del servidor y procedimiento principal del servidor. Procedimientos para el aplanamiento (marshalling) Fichero de cabecera (.h) con los tipos y declaracin de prototipos. Enlace dinmico El cliente debe especificar el host donde ejecuta el servidor El servidor se registra (n de programa, n de versin y n de puerto) en el portmapper local El cliente enva una peticin al portmapper del host donde ejecuta el servidor
Sistemas operativos: una visin aplicada 87 J. Carretero, F. Garca, P. de Miguel, F. Prez
Ejemplo
NCLEO
Restulado = 7
NCLEO RED
88
Esquema de la aplicacin
cliente.c Archivos para el cliente suma_clnt.c
repcgen suma.x
suma.x
struct peticion { int a; int b; };
90
suma.h
#ifndef _SUMA_H_RPCGEN #define _SUMA_H_RPCGEN #include <rpc/rpc.h> struct peticion { int a; int b; }; #define #define extern extern SUMAVER ((u_long)99) SUMA ((u_long)1) int * suma_1(peticion *, CLIENT *); int * suma_1_svc(peticion *, struct svc_req *);
#endif /* !_SUMA_H_RPCGEN */
91
servidor.c
#include "suma.h"
92
cliente.c
#include "suma.h" main( int argc, char* argv[] ) { CLIENT *clnt; int *res; peticion suma_1_arg; char *host; if(argc < 2) { printf("usage: %s server_host\n", argv[0]); exit(1); } host = argv[1];
93
cliente.c II
/* localiza al servidor */ clnt = clnt_create(host, SUMAR, SUMAVER, "udp"); if (clnt == NULL) { clnt_pcreateerror(host); exit(1); } suma_1_arg.a = 5; suma_1_arg.b = 2; res = suma_1(&suma_1_arg, clnt); if (res == NULL) { clnt_perror(clnt, "call failed:"); } printf("La suma es %d\n", *res); clnt_destroy( clnt ); }
94
Contenido
Sistemas distribuidos Sistemas operativos distribuidos Comunicacin de procesos
Sincronizacin de procesos
Gestin de procesos Sistemas de archivos Gestin de memoria
95
Relojes lgicos
En ausencia de un reloj global la relacin causa-efecto (precede a) es la nica posibilidad de ordenar eventos Relacin de precedencia (Lamport) Si a y b son dos eventos del mismo proceso y a ocurri antes que b, entonces a Y b Si a=send(m) y b=receive(m), entonces a Y b La relacin es transitiva Dos eventos son concurrentes (a || b) si no se puede deducir entre ellos una relacin de causalidad potencial
96
97
98
99
Se necesita una relacin (F(e), <) tal que: a Y b si y slo si F(a) < F(b) Los relojes vectoriales permiten representar de forma precisa la relacin de causalidad potencial
100
Relojes vectoriales
Desarrollado independientemente por Fidge, Mattern y Schmuck Todo proceso lleva asociado un vector de enteros RV RVi[a] es el valor del reloj vectorial del proceso i cuando ejecuta el evento a. Mantenimiento de los relojes vectoriales Inicialmente RVi= 0 Cuando un proceso i genera un evento Todos los mensajes llevan el RV del envo Cuando un proceso j recibe un mensaje con RV
RVj = max(RVj , RV ) (componente a componente) RVj[j ] = RVj[j ] +1 (evento de recepcin)
Sistemas operativos: una visin aplicada 101 J. Carretero, F. Garca, P. de Miguel, F. Prez
RVi[i ] = RVi[i ] +1
Relojes vectoriales
(1,0,0) (2,1,0) (3,1,2) (4,1,2) (5,1,2)
P0
P1
(0,1,0)
(1,2,3) (4,3,3)
P2
(1,0,1) (1,0,2) (1,0,3) (1,0,4) (5,1,5)
102
Algoritmo centralizado
Existe un proceso coordinador
0
entrada
1
OK
1
entrada
1
salida
2
OK
105
1 2
5 4
Sistemas operativos: una visin aplicada 106
Algoritmo distribuido
Algoritmo de Ricart y Agrawala requiere la existencia un orden total de todos los mensajes en el sistema Un proceso que quiere entrar en una seccin crtica (SC) enva un mensaje a todos los procesos (y a l mismo) Cuando un proceso recibe un mensaje Si el receptor no est en la SC ni quiere entrar enva OK al emisor Si el receptor ya est en la SC no responde Si el receptor desea entrar, compara la marca de tiempo del mensaje. Si el mensaje tiene una marca menor enva OK. En caso contrario entra y no enva nada. Cuando un proceso recibe todos los mensajes puede entrar
Sistemas operativos: una visin aplicada 107 J. Carretero, F. Garca, P. de Miguel, F. Prez
Contenido
Sistemas distribuidos Sistemas operativos distribuidos Comunicacin de procesos Sincronizacin de procesos
Gestin de procesos
Sistemas de archivos Gestin de memoria
108
Modelos de sistema
Conjunto de estaciones de trabajo El sistema consta de estaciones de trabajo a las que tienen acceso los usuarios. Pool de procesadores Los usuarios con terminales. Los procesos se envan a procesadores de un pool. Modelo hbridos Trabajos interactivos en las estaciones de trabajo. Trabajos no interactivos en en el pool de procesadores.
109
Asignacin de procesadores
Objetivo: decidir en qu procesador se debera ejecutar un proceso para equilibrar la carga y optimizar el rendimiento. Evitar que un nodo est inactivo mientras hay procesos esperando a ejecutar. Suposiciones: Todos los procesadores son compatible en el cdigo. La velocidad de los procesadores puede ser distinta. Conectividad total: cualquier procesador puede comunicarse con cualquier otro.
110
111
112
Nodo
Nodo
(a)
(b)
113
114
115
Planificacin de procesos
116
117
Contenido
Sistemas distribuidos Sistemas operativos distribuidos Comunicacin de procesos Sincronizacin de procesos Gestin de procesos
Sistemas de archivos
Gestin de memoria
118
119
Arquitectura
Cliente
......................
Cliente
RED DE INTERCONEXIN
Servidor
......................
CTR CTR
Servidor
CTR
........
........
CTR
.....
Sistemas operativos: una visin aplicada
.....
120
.....
.....
Componentes
Servicio de directorio: Gestin de los nombres de los archivos Objetivo: ofrecer un espacio de nombres nico Servicio de archivos: Proporciona acceso a los datos de los archivos
121
122
Tipos de servidores
Servidores con estado Cuando se abre un fichero, el servidor almacena informacin y da al cliente un identificador nico a utilizar en las posteriores llamadas Cuando se cierra un fichero se libera la informacin Servidores sin estado Cada peticin es autocontenida (fichero y posicin)
123
Tipos de servidores II
Ventajas de los servidores con estado Mensajes de peticin ms cortos Mejor rendimiento (se mantiene informacin en memoria) Facilita la lectura adelantada. El servidor puede analizar el patrn de accesos que realiza cada cliente Es necesario en invalidaciones iniciadas por el servidor Ventajas de los servidores sin estado Ms tolerante a fallos No son necesarios open y close. Se reduce el n de mensajes No se gasta memoria en el servidor para almacenar el estado
124
Cache de bloques
El empleo de cache de bloques permite mejorar el rendimiento Explota el principio de proximidad de referencias
Proximidad temporal Proximidad espacial
Lecturas adelantadas
Mejora el rendimiento de las operaciones de lectura, sobre todo si son secuenciales
Escrituras diferidas
Mejora el rendimiento de las escrituras Otros tipos de cache
En memoria principal
Menor capacidad Ms rpido Memoria voltil
126
127
Polticas de actualizacin
Escritura inmediata (write-through) Buena fiabilidad En escrituras se obtiene el mismo rendimiento que en el modelo de accesos remotos Las escrituras son ms lentas Escritura diferida (write-back) Escrituras ms rpidas. Se reduce el trfico en la red Los datos pueden borrarse antes de ser enviados al servidor Alternativas
Volcado (flush) peridico (Sprite) Write-on-close
128
129
130
Contenido
Sistemas distribuidos Sistemas operativos distribuidos Comunicacin de procesos Sincronizacin de procesos Gestin de procesos Sistemas de archivos
Gestin de memoria
131
Nodo A
Nodo B
Paginador externo Transferir pgina
Ncleo
Ncleo
132
Memoria compartida distribuida Memoria fsica Memoria fsica Memoria fsica Red de interconexin
133
Caractersticas
Se construye utilizando paso de mensajes. Modelo de programacin ms sencillo, no es necesario el paso de mensajes. Sincronizacin utilizando construcciones tradicionales (semforos, mutex, ...). Rendimiento? Los accesos a memoria no son siempre locales Modelos: Basado en hardware (arquitectura NUMA). Basado en pginas. Basado en objetos
Sistemas operativos: una visin aplicada 134 J. Carretero, F. Garca, P. de Miguel, F. Prez
Implementacin
Replicacin y caching (igual que los sistemas de ficheros) Las escrituras se realizan localmente Aparece un problema en el acceso a variables compartidas (en escritura). Problema idntico a la coherencia de cache
135