170 likes | 263 Vues
UTFSM - Sistemas Operativos. Ayudantía 3: Procesos y threads. Contenido. Process/threads Scheduling Context switch Comunicación: Productor consumidor Inter-Process communication (IPC) Remote Procedure Calls (RPC) Remote Method Invocation (RMI). Preguntas de procesos.
E N D
UTFSM - Sistemas Operativos Ayudantía 3:Procesos y threads
Contenido • Process/threads • Scheduling • Context switch • Comunicación: Productor consumidor • Inter-Process communication (IPC) • Remote Procedure Calls (RPC) • Remote Method Invocation (RMI) Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Preguntas de procesos • ¿Qué es un proceso? ¿y un trabajo? • Un programa en ejecución. • ¿Qué es el PCB? Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Conceptos • Proceso: • Programcounter • Stack • Data • Y por debajo (PCB): • Estado • Registros (CPU) • Scheduling • Memoria (límite de memoria pedida) • Usuarios • Archivos abiertos Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Ejercicios de fork() • Explicación • Ejercicio: Indicar pid, getppid(), getpid() de los casos que aparecerán en la pizarra. Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Características de un thread • Un thread tiene acceso directo a la sección de data de un proceso, un proceso tiene una copia de la sección de data del proceso padre. • Los threads se pueden comunicar con otros threads del mismo proceso, los procesos deben utilizar “inter-processcommunication”. • Los threads casi no tienen overhead, los procesos sí. • Un thread se crea altiro, un proceso debe copiar el proceso padre. • Un thread puede controlar otros threads, un proceso sólo puede ser controlado por su proceso padre. Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Preguntas de contexto • ¿Qué 2 ventajas tiene un thread sobre múltiples procesos? ¿y una desventaja? • Los threads son baratos de crear y destruir. • Usan pocos recursos (no tienen espacios de memoria separados complétamente). • Deben confiar entre sí para no dañar la memoria compartida. Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Recursos de threads y procesos • ¿Qué recursos se usan cuando se crea un proceso? • Se colocan las instrucciones del programa y la “data” en la memoria, además de almacenar el/los threads. El código también se puede colocar en memoria. • ¿Qué recursos se usan cuando se crea un thread? • Se debe crear un contexto, incluyendo una ubicación para almacenamiento de registros durante un cambio de contexto, y un stack local para almacenar las llamadas a procedimientos, valores de retorno y direcciones de retorno, además de almacenamiento local paralelo del thread. Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Preguntas de contexto • ¿Qué es un cambio de contexto? • El tiempo necesario para cambiar de un proceso a otro. • Indique las distintas maneras de “crear-nuevo-proceso” • El padre sigue ejecutándose, el padre deja de ejecutarse hasta que terminen los hijos, padre e hijos comparten todas-algunas-ninguna de las variables. Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Preguntas de scheduling (planificación) • ¿Qué hace el planificador a largo plazo? • Determina qué trabajos pertenecen a la lista de trabajos corriendo/esperando. • ¿Qué hace el planificador a corto plazo? • Determina cuál de los trabajos correrá en el próximo burst del CPU. • ¿Cuál planificador tiene que ser el más rápido, para no desperdiciar recursos? • El de corto plazo. Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Productor-consumidor • Describa el problema del productor-consumidor • Un consumidor no podrá ver un mensaje hasta que el productor lo haya hecho, el productor no puede hacer un mensaje si el buffer está lleno. Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Productor-consumidor • Implementación (compartiendo memoria): #define BUFFER_SIZE 3 typedefstruct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; intout = 0; Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Productor-consumidor while (true) { //Hacer un mensaje item = producirMensaje(); //No producir si buffer esta lleno while ( ((in + 1) % BUFFER_SIZE ) == out); //Meter mensaje en buffer buffer[in] = item; //Setearproximo elemento in = (in + 1) % BUFFER_SIZE; } while (true) { // No hacer nada, no hay mensajes while (in == out); // Consumir un mensaje item = buffer[out]; //Indicar posicion libre en buffer out = (out + 1) % BUFFER SIZE; returnitem; } Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Ejercicio • ¿Cuánto buffer puede usar el productor? • n-1 items. • Modificar solución anterior para que use todo el buffer. • Agregando un arreglo compartido que indique posiciones libres del buffer, para así no comparar el último mensaje consumido con el último producido. Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Comunicación entre procesos • Primitivas: enviar, recibir • Directa: • Links automáticos. • Links son de a pares de procesos. • Unidireccionales o bidireccionales. • Indirecta: • Existen casillas de correo únicas. • Comunicación entre procesos se hace compartiendo la casilla. • Varios procesos pueden compartir una casilla. • Unidireccionales o bidireccionales. Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Ejercicio IPC indirecto (casillas de correo) • Un proceso P quiere esperar 2 mensajes, uno de la casilla A y uno de la casilla B. ¿Qué secuencia de enviar-recibir se debiera ejecutar? • Si consideráramos mensajería sincrónica (una operación recibir hace que un proceso espere hasta que la casilla deje de estar vacía), idee un sistema que permita saber cuando una casilla está vacía. • Recordar que hay bloqueo. • ¿Y cómo se haría con mensajería asincrónica? • Recordar que no hay bloqueo. Ayudantía Sistemas Operativos - http://villaseca.wordpress.com
Otros métodos de comunicación • Sockets • Serialización • Remoteprocedurecalls (RPC) • Stubs: Un prototipo del procedimiento/función. • Marshalling: Traspasar los parámetros a la función que corresponde. • Existe un daemon. • Remotemethodinvocation (RMI) • Stub • Llamada a un objeto remoto. Ayudantía Sistemas Operativos - http://villaseca.wordpress.com