Ayudantía 3: Procesos y threads

17
UTFSM - Sistemas Operativos

description

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. - PowerPoint PPT Presentation

Transcript of Ayudantía 3: Procesos y threads

Page 1: Ayudantía 3: Procesos y threads

UTFSM - Sistemas Operativos

Page 2: 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 2

Page 3: Ayudantía 3: Procesos y threads

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 3

Page 4: Ayudantía 3: Procesos y threads

Conceptos Proceso:

Program counterStackDataY por debajo (PCB):

○ Estado○ Registros (CPU)○ Scheduling○ Memoria (límite de memoria pedida)○ Usuarios○ Archivos abiertos

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com 4

Page 5: Ayudantía 3: Procesos y threads

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 5

Page 6: Ayudantía 3: Procesos y threads

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-process communication”.

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 6

Page 7: Ayudantía 3: Procesos y threads

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 7

Page 8: Ayudantía 3: Procesos y threads

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 8

Page 9: Ayudantía 3: Procesos y threads

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 9

Page 10: Ayudantía 3: Procesos y threads

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 10

Page 11: Ayudantía 3: Procesos y threads

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 11

Page 12: Ayudantía 3: Procesos y threads

Productor-consumidor Implementación (compartiendo

memoria):#define BUFFER_SIZE 3typedef struct {. . .} item;item buffer[BUFFER_SIZE];int in = 0;int out = 0;

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com 12

Page 13: Ayudantía 3: Procesos y threads

Productor-consumidorwhile (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;

//Setear proximo 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;

return item;

}

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com 13

Page 14: Ayudantía 3: Procesos y threads

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 14

Page 15: Ayudantía 3: Procesos y threads

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 15

Page 16: Ayudantía 3: Procesos y threads

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 16

Page 17: Ayudantía 3: Procesos y threads

Otros métodos de comunicación Sockets

Serialización Remote procedure calls (RPC)

Stubs: Un prototipo del procedimiento/función.Marshalling: Traspasar los parámetros a la

función que corresponde.Existe un daemon.

Remote method invocation (RMI)StubLlamada a un objeto remoto.

Ayudantía Sistemas Operativos - http://villaseca.wordpress.com 17