Universidad Central de Venezuela Procesos e IPC 2do. Semestre 2006.

Slides:



Advertisements
Presentaciones similares
GESTION DE PROCESOS Procesos y tareas
Advertisements

Tabla de Contenido Concurrencia.
Sistema operativo Componentes de un sistema operativo
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Sistemas en estratos. Descripción: se organiza en una jerarquía de estratos, estando construido cada uno de ellos sobre el otro que tiene menor jerarquía.
Modelo de procesos de dos estados
RMI Remote Method Invocation
RMI (Remote Method Invocation)
Detalles del sistema operativo
SISTEMAS OPERATIVOS UNIDAD 1..
Multiprogramación Procesos Cecilia Hernández
Tema 6: Clases Antonio J. Sierra.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Tema 10: Gestión de Memoria
Semana 5 Subprogramas..
Sistemas Operativos Procesos.
Unidad III Administración de procesos
Hilos - Lightweight process - Procesos ligeros
Profesor: Rodrigo Sanhueza Figueroa
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
OBJETOS DISTRIBUIDOS E INVOCACIÓN REMOTA ING. MARISCAL.
Asignación de Espacio No Contiguo
Soporte HW para Administración de Memoria Cecilia Hernández
Teoría de Sistemas Operativos
Hebras Cecilia Hernández. Qué es un proceso? Consiste Espacio de direccionamiento Código a ejecutar Datos estáticos y dinámicos Pila o stack CPU: PC,
Introducción a los Sistemas Operativos
DHCP protocolo de configuración dinámica de host.
 Hardware de E/S  Interfaz de aplicación E/S (API)  Sub-sistema de E/S en el Kernel  Transformando solicitudes de E/S en operaciones de hardware 
Gestión de procesos Sistemas Operativos Edwin Morales
Gestión de Procesos.
1 Descripción y control de procesos Capítulo 3. 2 Requerimientos de un SO relacionados con procesos Ejecutar concurrentemente múltiples procesos para.
Teoría de Sistemas Operativos Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
COMPONENTES DEL SISTEMA OPERATIVO.
ELO3091 Interfaz de Socket Agustín J. González ELO309.
Gestión de Memoria.
Introducción a los SOs.
Tema 8: Introducción a los SOs. Tema 8: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.), Introducción.
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
Sistemas Distribuidos
Teoría de Sistemas Operativos Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz
Teoría de Sistemas Operativos Sistemas Archivos de Red
Sistemas Operativos Unidad III Procesos.
Estructura de los Sistemas Operativos
GESTIÓN DE PROCESOS.
Unidad 2 – Gestión de Procesos
Hilos Capítulo 5 Silberschatz Galvin. Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered.
Cliente-Servidor La arquitectura cliente-servidor permite al usuario en una máquina, llamada el cliente, requerir algún tipo de servicio de una máquina.
Licenciatura Tecnologías de la Información y Comunicación
Elementos y tipos de sistemas operativos
Modelo OSI Para redes………
ELEMENTO DE COMPETENCIA 3
Sesión 8 Procesos.
Gestión de Procesos Hilos.
Application Unit Software ZEN Support Tools. Application Unit Arranque Software ZEN Como cualquier otra aplicación de Windows, para ejecutar el Software.
El Sistema Operativo es el software básico necesario para el funcionamiento de cualquier ordenador Los Sistemas Operativos están en continua evolución.
Ud.1 Servicios DHCP Índice del libro Índice del libro.
Arquitectura de Computadores Clase 21 Memoria Virtual IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería.
DCE: Entorno de Computación Distribuida Profesor: Daniel Acuña Expositores: Francisco Almarza Gustavo Espinoza.
SISTEMAS OPERATIVOS Contenido: Descripción del proceso proceso nulo estado del procesador imagen del proceso información del BCP Miguel Ángel Martínez.
Tema 11: Segmentación y Paginación de la Memoria
JOSE ALBERTO JIMENEZ JIMENEZ KATTY HIPOLITO. 7.1 INTRODUCCION AL LENGUAJE EMSAMBLADOR.
Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos.
1 Introducción a la Programación Estructurada Introducción a la Informática Departamento de Sistemas Universidad del Cauca 2006.
Diagramas UML Richard Mora Republica Bolivariana de Venezuela Ministerio del poder popular para la educación I.U.T. Antonio José de Sucre Barquisimeto,
Procesos Un proceso es un programa en ejecución. Modelo de procesos secuenciales. Abstracción del SO.
Administración de Memoria Conceptos Swapping Asignación Continua Paginación Segmentación Segmentación con Paginación.
Desventajas Poco eficiente: lectura y escritura en disco es lenta Necesita otro mecanismo de sincronización para acceder a los datos Son los procesos.
G ESTIÓN DE LA MEMORIA Paginación y segmentación.
GRUPO N°1 – SISTEMAS OPERATIVOS DISTRIBUIDOS LLAMADA A PROCEDIMIENTO REMOTO.
Ayudantía 3: Procesos y threads
Transcripción de la presentación:

Universidad Central de Venezuela Procesos e IPC 2do. Semestre 2006

2/68 Universidad Central de Venezuela Semestre ¿Por qué procesos? Simplicidad + Velocidad Cientos de cosas que se mantienen en el sistema ¿Cómo hace estas cosas simples?  Separa cada una en un proceso aislado  Descomposición ¿Cómo aumenta la velocidad?  Solapa las ráfagas de E/S de un proceso con las ráfagas de CPU de otro gcc emacs nfsd lpr ls www emacsnfsd lpr ls www OS

3/68 Universidad Central de Venezuela Semestre ¿Qué es un proceso? Una tarea creada por el SO, ejecutándose en un ambiente de máquina virtual limitado – un CPU virtual, ambiente de memoria virtual, que realiza la interfaz al SO por medio de las llamadas al sistema (system calls) La unidad de ejecución La unidad de planificación Hilo de ejecución + Espacio de direcciones Es un programa en ejecución  Secuencial, ejecución de un programa una instrucción a la vez. Es igual hablar de “trabajo” o “tarea” o “proceso secuencial”

4/68 Universidad Central de Venezuela Semestre ¿Qué es un programa? Un programa consiste de:  Código: instrucciones de máquina  Datos: variables almacenadas y manipuladas en la memoria variables inicializadas (globales) variables asignadas dinámicamente (malloc, new) variables de la pila (variables automáticas de C, argumentos de funciones)  DLLs: las bibliotecas que no fueron compiladas o enlazadas con el programa. contienen código & datos, posiblemente compartido con otros programas  archivos mapeados: segmentos de memoria que contienen variables. (mmap()) usado frecuentemente en programas de bases de datos Un proceso es un programa en ejecución

5/68 Universidad Central de Venezuela Semestre Preparando un programa archivo fuente compilador/ ensamblador archivos.o Enlazador Archivo ejecutable (debe seguir un formato estándar, Tal como ELF sobre Linux, Microsoft PE sobre Windows) Encabezado Código Datos inicializados BSS Tabla de símbolos Números de línea Refer. ext. librerías estáticas (libc, streams…)

6/68 Universidad Central de Venezuela Semestre Ejecutando un programa El SO crea un “proceso” y asigna memoria para él El cargador:  lee e interpreta el archivo ejecutable  establece la memoria del proceso para que contenga el código & datos desde el ejecutable  mete “argc”, “argv”, “envp” en la pila  establece apropiadamente los registros del CPU & llama “__start()” [Parte de crt0] El programa comienza ejecutándose en __start(), el cual llama a main()  decimos que el “proceso” está ejecutándose y no pensamos más en el “programa” Cuando main() retorna, crt0 llama a “exit()”  destruye el proceso y retorna todos los recursos

7/68 Universidad Central de Venezuela Semestre Proceso != Programa Encabezado Código Datos inicializados BSS Tabla de símbolos Números de línea Refer. ext. Código Datos inicializados BSS Heep Pila DLL’s segmentos mapeados Ejecutable Espacio de direcciones del proceso El programa es pasivo Código + datos El proceso es un programa en ejecución pila, registros, contador de programa Ejemplo: Ejecutemos dos IE: - Mismo programa - Procesos separados

8/68 Universidad Central de Venezuela Semestre Estados de un proceso Muchos procesos en el sistema, solo uno en el procesador “Estado de ejecución” de un proceso:  Indica que esta haciendo Básicamente tres (3) estados: Preparado: el proceso esta a la espera de que le asignen a un procesador En ejecución: se están ejecutando las instrucciones en el procesador En espera: esta esperando a que se produzca un evento, i.e. terminación de E/S Los procesos se mueven a través de diferentes estados

9/68 Universidad Central de Venezuela Semestre Transiciones de estado de los procesos Nuevo PreparadoEn ejecución Terminado Es espera admitido Interrupción En espera de evento o de terminación de E/S Terminación de un evento o de operación de E/S despacho salida Los procesos saltan a través de los estados como consecuencia de: Las acciones que ellos realizan, p.ej. llamadas al sistema (system calls) Acciones realizadas por el SO, p.ej. replanificación Acciones externas, p.ej. E/S

10/68 Universidad Central de Venezuela Semestre Estructuras de datos de los procesos El SO representa un proceso usando un PCB  Process Control Block (bloque de control de procesos)  Tiene todos los detalles de un proceso Id del proceso Estado del proceso Registros de propósito general Apuntador a la pila Contador de programa Información contable Credenciales de seguridad Nombre de usuario del propietario Apuntadores a la cola Máscaras de señales Administración de memoria …

11/68 Universidad Central de Venezuela Semestre Cambio de contexto Para un proceso ejecutándose  Todos los registros son cargados en el CPU y modificados P.ej. Contador de Programa, Apuntador a la Pila, Registros de Propósito General Cuando un proceso solicita el CPU, el SO  Salvaguarda los valores de los registros en el PCB de ese proceso Para ejecutar otro proceso, el SO  Carga los valores de los registros desde el PCB de ese proceso  Cambio de contexto  Tarea de conmutar el CPU desde un proceso a otro  Muy dependiente de la máquina debido a los tipos de registros

12/68 Universidad Central de Venezuela Semestre Detalles del cambio de contexto Bastante difícil de poner en práctica  El SO debe salvaguardar el estado sin cambiar dicho estado  Debería ejecutarse sin tocar ningún registro CISC: una única instrucción salvaguarda todo el estado RISC: reserva registros para el núcleo (kernel)  O alguna forma de salvaguardar un registro y entonces continuar Desperdicio: El CPU está ocioso durante un cambio de contexto  Explicito: el costo directo de cargar/almacenar registros de/en memoria principal  Implícito: Costo de oportunidad al realizar el vaciado de caches útiles (cache, TLB, etc.) Espera por el pipeline para su vaciado en procesadores segmentados

13/68 Universidad Central de Venezuela Semestre Intercambio de Contexto

14/68 Universidad Central de Venezuela Semestre Intercambio de Contexto Cuando el CPU intercambia a otro proceso, el sistema debe salvar el estado del proceso actual y cargar el estado salvado del nuevo proceso intercambiado El tiempo usado en el Intercambio de Contexto es overhead; el sistema no hace trabajo util mientras dura el intercambio Su duración depende del soporte del hardware

15/68 Universidad Central de Venezuela Semestre Colas de Planificación de Procesos Cola de Trabajos – conjunto de todos los procesos en el sistema Cola de Listo – conjunto de todos los procesos residentes en memoria principal, listos y esperando ser ejecutados Colas de Dispositivos – conjunto de procesos esperando por algún dispositivo de E/S Los procesos emigran entre varias colas

16/68 Universidad Central de Venezuela Semestre Colas de Planificación de Procesos

17/68 Universidad Central de Venezuela Semestre Representación de la Planificación de Procesos

18/68 Universidad Central de Venezuela Semestre Planificadores Planificación a Largo Plazo (o planificador de trabajos) – selecciona cuales procesos deben ser admitidos en la cola de listos Planificación A Corto Plazo (Planificador del CPU) – cual proceso listo se ejecutará a continuación y le asigna el CPU

19/68 Universidad Central de Venezuela Semestre Adición de la Planificación a Mediano Plazo

20/68 Universidad Central de Venezuela Semestre Planificadores La Planificación a Corto Plazo es invocada muy frecuentemente (milisegundos)  (debe ser rápida) La Planificación a Largo Plazo es invocada muy infrecuentemente (segundos, minutos)  (puede ser lento) La Planificación a Largo Plazo controla el grado de multiprogramación

21/68 Universidad Central de Venezuela Semestre Planificadores Los procesos pueden ser descritos como:  procesos I/O-bound– utilizan más tiempo haciendo I/O que cálculo, muchas ráfagas cortas de CPU  procesos CPU-bound– utilizan más tiempo haciendo cálculo que I/O, pocas ráfagas largas de CPU

22/68 Universidad Central de Venezuela Semestre ¿Cómo crear un proceso? ¿Doble clic sobre un ícono? Después de arrancar el SO inicia el primer proceso  P.eje. sched en Solaris, ntoskrnel.exe en XP El primer proceso crea otros procesos:  el creador es llamado el proceso padre  el creado es llamado el proceso hijo  la relación padre/hijo es expresada por un árbol de procesos Por ejemplo, en UNIX el segundo proceso es llamado init  éste crea todos los gettys (procesos para realizar login) y demonios  nunca debe morir  controla la configuración del sistema (#procesos, prioridades…) Explorer.exe en Windows para la interfaz gráfica

23/68 Universidad Central de Venezuela Semestre Procesos bajo UNIX La llamada al sistema fork() es la única vía para crear un nuevo proceso int fork() hace muchas cosas seguidamente:  crea un nuevo espacio de direcciones  copia el espacio de direcciones del padre en el del hijo  comienza un nuevo hilo de control en el espacio de direcciones del hijo  padre e hijo son equivalentes -- casi en el padre, fork() retorna un entero distinto de cero en el hijo, fork() retorna un cero la diferencia permite al padre y al hijo distinguirse int fork() retorna DOS VECES!

24/68 Universidad Central de Venezuela Semestre Creación de Procesos en UNIX Cada proceso, excepto el proceso 0, es creado por la llamada del sistema Fork() Fork() asigna (allocates) una entrada en la tabla de procesos y asigna un único PID (process ID) al proceso hijo El hijo obtiene una copia de la imagen del proceso padre:Hijo y padre están ejecutando el mismo código fork(). Pero fork() retorna el PID del hijo al proceso padre y retorna 0 al proceso hijo

25/68 Universidad Central de Venezuela Semestre Creación de Procesos en UNIX El Proceso 0 es creado en tiempo de boot (boot time) y se vuelve el “swapper” después de forking el proceso 1 (el proceso INIT) Cuando un usuario hace login: proceso 1 crea un proceso para ese usuario

26/68 Universidad Central de Venezuela Semestre Ejemplo main(int argc, char **argv) { char *myName = argv[1]; int cpid = fork(); if (cpid == 0) { printf(“The child of %s is %d\n”, myName, getpid()); exit(0); } else { printf(“My child is %d\n”, cpid); exit(0); } ¿Qué imprime este programa?

27/68 Universidad Central de Venezuela Semestre Extraño pero verdadero lace:tmp cc a.c lace:tmp./a.out foobar The child of foobar is My child is Padre Hijo Sistema Operativo fork() retsys v0=0v0=23874

28/68 Universidad Central de Venezuela Semestre fork es la mitad de la historia fork() nos consigue un nuevo espacio de direcciones,  pero el padre y el hijo comparten TODO memoria, estado en el sistema operativo int exec(char *programName) completa el cuadro  saca afuera el contenido del espacio de direcciones del invocador  Reemplaza éste con el programa nombrado por programName  comienza ejecutándose en header.startPC  No retorna Pros: claro, simple Contras: operaciones duplicadas

29/68 Universidad Central de Venezuela Semestre Comenzar un nuevo programa main(int argc, char **argv) { char *myName = argv[1]; char *progName = argv[2]; int cpid = fork(); if (cpid == 0) { printf(“The child of %s is %d\n”, myName, getpid()); execlp(“/bin/ls”, // executable name “ls”, NULL); // null terminated argv printf(“OH NO. THEY LIED TO ME!!!\n”); } else { printf(“My child is %d\n”, cpid); exit(0); }

30/68 Universidad Central de Venezuela Semestre Un árbol de procesos sobre un Solaris Típico

31/68 Universidad Central de Venezuela Semestre Procesos bajo Windows Se crean en la API de Win32 a través de la función CreateProcess() CreateProcess() requiere la carga de un programa específico en el espacio de direcciones del proceso hijo durante su creación. CreateProcess() requiere que se le pasen al menos 10 parámetros. Ver ejemplo Silberschatz, pág. 85.

32/68 Universidad Central de Venezuela Semestre Terminación de procesos El proceso ejecuta su última instrucción y el SO decide (exit)  Datos de salida desde el hijo a el padre (via wait)  Los recursos del proceso son desasignados por el SO El padre puede terminar la ejecución de procesos hijos (abort)  El hijo a excedido el uso de los recursos asignados  La tarea asignada al hijo ya no es necesaria  Si el padre esta abandonando el sistema Algunos SO’s no permiten que un hijo continúe si su padre ya ha terminado  Todos los hijos terminados – terminación en cascada

33/68 Universidad Central de Venezuela Semestre Comunicación Interprocesos (InterProcess Communication - IPC)

34/68 Universidad Central de Venezuela Semestre Procesos Cooperantes Procesos Independientes:  No pueden afectar o verse afectados por la ejecución de otros procesos. Procesos Cooperantes:  Pueden afectar o verse afectados por la ejecución de otros procesos.

35/68 Universidad Central de Venezuela Semestre ¿Por qué IPC? Procesos independientes vs. cooperativos ¿Por qué dejar a los procesos cooperar?  Compartir información  Acelerar los cálculos  Modularidad  Conveniencia Dos modelos fundamentales  Memoria compartida  Paso de mensajes

36/68 Universidad Central de Venezuela Semestre Modelos de IPC: a) Paso de mensajes b) Memoria Compartida

37/68 Universidad Central de Venezuela Semestre Memoria Compartida Los procesos establecen un segmento de memoria como compartida  Normalmente parte de la memoria del proceso que crea el segmento de memoria compartida. Otros procesos deben conectarse a su espacio de memoria. Requiere que los procesos acuerden eliminar la protección de memoria para la sección compartida  Recordar que el SO habitualmente protege a los procesos de escribir en la memoria de los otros

38/68 Universidad Central de Venezuela Semestre Problema del Productor-Consumidor Paradigma para procesos cooperantes, consiste en un proceso productor que produce información que es consumida por un proceso consumidor Dos variantes:  Búfer no acotado: no coloca limites prácticos sobre el tamaño del buffer  Búfer no acotado: asume que el buffer es de un tamaño fijo

39/68 Universidad Central de Venezuela Semestre Productor/Consumidor usando memoria compartida El proceso productor produce información consumida por el proceso consumidor  Un paradigma muy común. #define BUFFER_SIZE 10 typedef struct{..some stuff.. }item; item buffer[BUFFER_SIZE]; int in = 0 int out = 0;

40/68 Universidad Central de Venezuela Semestre Productor/Consumidor (1/2) Proceso productor: item nextProduced; while(true) { /*Produce an item in next produced*/ while(((in + 1) % BUFFER_SIZE) == out) //do nothing… buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; }

41/68 Universidad Central de Venezuela Semestre Productor/Consumidor (2/2) Proceso consumidor: item nextConsumed; while(true) { while(in == out) //do nothing.. nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; /* Consume item in nextConsumed */ }

42/68 Universidad Central de Venezuela Semestre Sincronización El código anterior solo permite BUFFER_SIZE-1 ítems al mismo tiempo. Requiere que el programador de la aplicación escriba explicítamente el código para acceder y manipular la memoria compartida. Para remediar esto, los procesos necesitarían sincronizar sus accesos al búfer. (Este es un largo tema, se tratará posteriormente).

43/68 Universidad Central de Venezuela Semestre #include main(int argc, char **argv) { char* shared_memory; const int size = 4096; int segment_id = shmget(IPC_PRIVATE, size, S_IRUSR |S_IWUSR); int cpid = fork(); if (cpid == 0) { shared_memory = (char*) shmat(segment_id, NULL, 0); sprintf(shared_memory, "Hi from process %d",getpid()); } else { wait(NULL); shared_memory = (char*) shmat(segment_id, NULL, 0); printf("Process %d read: %s\n", getpid(), shared_memory); shmdt(shared_memory); shmctl(segment_id, IPC_RMID, NULL); } EjemploEjemplo

44/68 Universidad Central de Venezuela Semestre Paso de Mensajes Mecanismo para que los procesos comuniquen y sincronicen sus acciones Es un sistema de mensajes, los procesos se comunican entre sí, sin basarse en variables compartidas La facilidad de Pase de Mansajes provee dos operaciones:  send(mensaje) – el mensaje puede ser de tamaño fijo o variable  receive(mensaje)

45/68 Universidad Central de Venezuela Semestre Paso de Mensajes Si P y Q necesitan comunicarse, requerirán:  Establecer un enlace de comunicación entre ellos  Intercambiar mensajes através de send/receive Implementación de enlaces de comunicación  Física (e.g., Memoria Compartida,bus hardware  Lógica (e.g., propiedades lógicas) Normalmente requiere la intervención del núcleo (kernel)

46/68 Universidad Central de Venezuela Semestre Cuestiones de Implementación ¿Cómo se establecen los enlaces? ¿Cómo un enlace se puede asociar con dos o más procesos? ¿Cuántos enlaces se pueden establecer entre cada par de procesos comunicantes? ¿Cuál es la capacidad del enlace? ¿Es fijo o variable el tamaño de los mensajes que el enlace puede aceptar? ¿EL enlace es unidireccional o bi-direccional?

47/68 Universidad Central de Venezuela Semestre Comunicación Directa Los procesos deben nominar explícitamente con quien se comunican:  send (P, mensaje) – envía un mensaje al proceso P  receive(Q, mensaje) – recibe un mensaje del proceso Q

48/68 Universidad Central de Venezuela Semestre Comunicación Directa Propiedades del enlace de comunicación  El enlace se establece automáticamente.  Un enlace está asociado con exactamente un par de procesos comunicantes.  Entre cada par de procesos existe exactamente un enlace.  El enlace puede ser unidireccional, pero usualmente es bi-direccional.

49/68 Universidad Central de Venezuela Semestre Comunicación Indirecta Los mensajes son dirigidos y recibidos desde buzones (también referidos como puertos)  Cada buzón tiene un identificador único  Los procesos pueden comunicarse sólo si comparten un buzón

50/68 Universidad Central de Venezuela Semestre Comunicación Indirecta Propiedades del enlace de comunicación  El enlace se establece sólo si los procesos comparten un buzón  Un enlace puede establecerse con muchos procesos  Cada par de procesos puede compartir varios enlaces de comunicación  El enlace puede ser unidireccional o bi- direccional

51/68 Universidad Central de Venezuela Semestre Comunicación Indirecta Operaciones  Crear un nuevo buzón  Enviar y Recibir mensajes mediante el buzón  Destruir un buzón Las primitivas se definen como : send (A, mensaje) – envía un mensaje al buzón A receive (A, mensaje) – recibe un mensaje del buzón A

52/68 Universidad Central de Venezuela Semestre Comunicación Indirecta Buzones Compartidos  P 1, P 2, y P 3 comparten el buzón A  P 1, envía; P 2 y P 3 reciben  ¿Quién obtiene el mensaje? Soluciones  Permitir que un enlace este asociado con máximo dos procesos  Permitir que sólo un proceso a la vez pueda realizar la operación de recibir  Permitir al sistema seleccionar arbitrariamente al receptor. Al emisor se le notifica quien fue el receptor

53/68 Universidad Central de Venezuela Semestre Sincronización El pase de mensajes puede ser bloqueante o no bloqueante Bloqueante se considera sincrónico  send Bloqueante : el emisor se bloquea hasta que el receptor recibe el mensaje  receive Bloqueante : el receptor se bloquea hasta que hay un mensaje disponible Cuando send y receive son bloqueantes, se dice que tenemos un rendezvous (encuentro) entre los procesos.

54/68 Universidad Central de Venezuela Semestre Sincronización El pase de mensajes puede ser bloqueante o no bloqueante No Bloqueante se considera asincrónico  send no Bloqueante : el emisor envía el mensaje y continua  receive no Bloqueante : el receptor recibe un mensaje válido o nulo (no espera por un mensaje disponible)

55/68 Universidad Central de Venezuela Semestre Almacenamiento en búfer Búfer de capacidad cero  Necesita un transmisor síncrono. Búfer de capacidad limitada  Si el búfer está lleno, el transmisor debe bloquearse. Búfer de capacidad ilimitada  El transmisor nunca se bloquea

56/68 Universidad Central de Venezuela Semestre Comunicación Cliente-Servidor Sockets Remote Procedure Calls (RPC) Remote Method Invocation (RMI, Java)

57/68 Universidad Central de Venezuela Semestre Sockets Un socket se define como un endpoint para la comunicación Es la concatenación de una dirección IP y un puerto El socket :1625 se refiere al puerto 1625 sobre el host La comunicación consiste en un par de sockets

58/68 Universidad Central de Venezuela Semestre Socket Communication Analice Ejemplo Planteado en Silberschatz, Cap. 3.

59/68 Universidad Central de Venezuela Semestre Sockets Los servidores que implementan servicios específicos se ponen a la escucha de puertos conocidos. Por debajo de A los clientes se les asignan números de puertos arbitrarios superiores a Todas las conexiones deben disponer de una pareja distinta de sockets. Se considera una forma de bajo nivel de comunicación entre sistemas distribuidos:  Sólo permiten que se intercambie un flujo no estructurado de bytes entre los hilos de comunicación.  Es responsabilidad de la aplicación cliente o servidor imponer una estructura a los datos

60/68 Universidad Central de Venezuela Semestre Remote Procedure Calls Remote Procedure Call (RPC) es una abstracción para las llamadas a procedimientos entre sistemas en una red. Los mensajes se encuentran bien estructurados, en vez de simples paquetes de datos. Cada msj envía a un demonio RPC que escucha en un puerto del sistema remoto. Cada msj contiene un identificador de la función que se va a ejecutar y los parámetros para dicha función.

61/68 Universidad Central de Venezuela Semestre Remote Procedure Calls La función es ejecutada y devuelve los posibles datos de salida a quien haya ejecutado la solicitud usando un msj diferente. Un Puerto es simplemente un número incluido al principio del paquete

62/68 Universidad Central de Venezuela Semestre Semántica RPC Client-Stubs: Oculta los detalles de la comunicación del lado del cliente.  El Client-Stub localiza el puerto en el servidor y empaqueta (marshalling) los parámetros.  El Client-StubTransmite el msj al server. Server-Stub: Recibe el mensaje, desempaqueta los parámetros, y realiza el procedimiento sobre el servidor.

63/68 Universidad Central de Venezuela Semestre Consideración Especiales Diferencias en la representación de los datos entre el cliente y servidor. Semántica de una llamada. Actuar en respuesta a los msj:  Exactamente una vez.  Como mínimo una vez. Comunicación entre cliente y servidor:  Asociación predeterminada en direcciones fijas de puerto.  Asociación dinámica a través de la negociación. RPC es sumamente útil en Sistemas Archivos Distribuidos.

64/68 Universidad Central de Venezuela Semestre Ejecución de RPC

65/68 Universidad Central de Venezuela Semestre Remote Method Invocation Remote Method Invocation (RMI) es un mecanismo Java similar a RPCs. RMI permite a un programa Java sobre una máquina invocar un método sobre un objeto remoto.

66/68 Universidad Central de Venezuela Semestre RPC vs RMI RPC:  Programación procedimental (procedimentos ó funciones).  Parámetros son estructuras de datos ordinarias.  Client-Stubs y Server-Stubs RMI:  Invocación de métodos correspondientes a objetos remotos.  Pasar objetos como parámetros a métodos remotos.  Stubs y Esqueletos: Stubs es un proxy para el objeto remoto y reside en el cliente. El esqueleto reside en el server, desenvuelve los parámetros e invoca al método deseado, regresa el resultado al Stub.

67/68 Universidad Central de Venezuela Semestre Marshalling Parameters

68/68 Universidad Central de Venezuela Semestre Tarea de Investigación Investigue como se realiza la creación de procesos utilizando la API de Win32. Investigue como se realiza la creación de procesos en Java. Investigue como los SO POSIX, Mach y WinXP implementan los mecanismos de Paso de Mensajes