Ayudantía 3: Procesos y threads

Post on 07-Jan-2016

34 views 0 download

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

UTFSM - Sistemas Operativos

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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