hilos, comunicación y competencia entre procesosalram/so/clase08.pdf · 2010. 9. 4. · hilos...

26
Hilos, comunicación y competencia entre procesos Dr. Alonso Ramírez Manzanares 2-Sep-2010

Upload: others

Post on 24-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Hilos, comunicación y competencia entre procesos

Dr. Alonso Ramírez Manzanares2-Sep-2010

Page 2: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Implementación de procesosSe mantiene una tabla de procesos con una entrada por cada proceso:

Con lo cual tenemos toda la información para poder hacer la conmutación.

Page 3: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

¿Cómo funciona el planificador?

Cada clase de disp. E/S tiene un vector de iterrupción que contiene la dirección del procedimiento de servicio de interrupción.

Al dispararse una interrupción, el hardware de interrupciones mete el contador de programa, la palabra de estado de programa y registros en la pila actual.

Luego, la computadora salta a la dirección especificada en el vector de interrupciones.

Page 4: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

¿Cómo funciona el planificador?

Lo primero que hace el procedimiento de servicio es guardar todo lo del proceso actual (en la tabla). El proceso actual se almacena en variables globales para acceso rápido.

Luego se saca la información de la pila y se traspasa a una pila temporal empleada por el manejador de procesos (esto en ensamblador).

Page 5: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

¿Cómo funciona el planificador?

Suponiendo que la interrupción era de entrada/salida, ahora se genera un mensaje para enviarlo al proceso de disco (que está bloqueado esperándolo).

El proceso cambia de bloqueado a listo y se planifica de acuerdo a su prioridad (normalmente las procesos I/O son de alta prioridad).

Ahora termina el codigo C de la interrupcion, el cual carga los registros y el mapa de memoria para el proceso que ahora es el actual y lo pone en marcha.

Page 6: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

¿Cómo funciona el planificador?

Resumiendo:

Page 7: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Hilos

Hasta lo antes visto, solo tenemos 1 hilo de control y 1 contador de programa en cada proceso.

Los sistemas operativos modernos manejan multiples hilos (procesos ligeros) dentro de un proceso.

Page 8: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Hilos

(a) 3 procesos tradicionales c/u con propio espacio de direcciones y un solo hilo de control

(b) Un solo proceso con 3 hilos, los cuales comparten el mismo espacio de direcciones.

Page 9: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Hilos

Ejemplos de uso de hilos:

Un servidor que escribe y regresa archivos pero usa un caché de archivos recientemenete usados (para optimalidad).

Un navegador WWW que usa varios hilos para hacer la conexión, bajar y desplegar las imágenes de una página.

Page 10: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Hilos

Para manejar los hilos, ahora necesitamos una tabla como la de antes de procesos, pero ahora con la información de cada hilo (contador de programa, registros y estado). Ya que los hilos pueden suspenderse y reanudarse.

Page 11: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

HilosAlgunas veces los hilos se manejan en el espacio de usuarios y el SO no tiene conocimiento de ellos (cuando un hilo esta a punto de bloquearse, escoge e inicia a su sucesor). Ejemplo de esto es la librería de hilos P de POSIX.

En otras ocasiones, el sistema operativo esta conciente de los hilos, por lo tanto el planificador escoje de entre los hilos disponible es siguiente a un bloqueo, ya sea del mismo proceso o de otro (el SO tiene la tabla de hilos).

Page 12: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Hilos

Vetajas y desventajas. Si los hilos se ejecutan en el espacio de usuario,

la conmutación es mas rápida.

si un hilo se bloquea por un error, el so bloquea a todo el proceso, ya que no sabe que hay otros hilos adentro de este.

Page 13: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

HilosEl uso de hilos introduce una serie de problemas en el diseño del SO:

Si un proceso padre tiene múltiples hilos, ¿también los tiene el hijo?

Si ambos hilos (de padre-hijo) esperan entrada de teclado, ¿se bloquea 1 hilo o 2 hilos?, ¿Quien recibe a entrada de datos, uno, otro, los dos?

¿Qué pasa si un hilo cierra un archivo que el otro está leyendo? O un hilo sobreescribe el valor de errno.

Un hilo esta asignando memoria, se bloque y entra el otro y asigna mas memoria. Esto se puede atacar co funciones que no son re-entrantes.

Page 14: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Hilos

Mas problemas:

Un proceso solo puede tener una señal de ALARM, pero cada hilo necesita la suya propia.

El manejo de la pila (crecimiento) la hace el SO, pero si no sabe de los procesos (que usan varias pilas), no se dará cuenta de que falta memoria de pila.

Page 15: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Hilos

¡¡¡Todos los problemas anteriores no son insuperables!!!

Pero ciertamente requiere un diseño bien elaborado.

Page 16: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Comunicación entre procesos

Conocida como IPC.

Se usa en 3 tareas:

Transferencia de información

Sincronización para no estorbarse en actividades criticas.

Sincronización para la secuencia correcta cuando existen dependencias.

Page 17: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Comunicación entre procesos Condiciones de competencia

Compartición de espacio donde leer y escribir.

Ejemplo spooler de impresión con varias ranuras 0,1,2,...,n para nombres de archivos. Un proceso demonio lo verifica y manda a imprimir.

Hay 2 variables compartidas out e in, guardadas en un archivo compartido de 2 palabras.

2 procesos colisionan!!

Proceso A es interrumpido despues de leer in=7, y entra B que tambien lee in=7. A sobre escribe el archivo de B en la

ranura 7.

Page 18: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Comunicación entre procesos Secciones críticas

Necesitamos exclusión mutua (asegurar que si un proceso está usando un recurso, todos los demás quedan excluidos de hacerlo) en el uso de recursos compartidos.

La parte del programa en que se accede a la memoria compartida se llama region crítica.

La idea es que 2 o mas procesos no estén en su región crítica al mismo tiempo.

Page 19: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Comunicación entre procesos Secciones críticas

Entonces para evitar las condiciones de competencia de una manera correcta necesitamos cumplir con:

1) Dos procesos no pueden estar simultáneamente dentro de sus regiones críticas.

2) No puede suponerse nada acerca de la velocidad o numero de las CPUs.

3) Ningún proceso que se ejecute fuera de su región crítica puede bloquear a algun otro proceso.

4) Ningún procesos deberá de esperar indefinidamente para entrar en su región crítica.

Page 20: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Comunicación entre procesos Exclusión mutua con espera activa

Inhabilitación de interrupciones

Un proceso inhabilita las interrupciones antes de entrar a su RC y las habilita al salir.

Es muy peligroso si el proceso es terminado y no habilita de nuevo las interrupciones.

No sirve cuando hay mas de 1 CPU, ya que cada CPU tiene sus interrupciones.

A nivel kernel sirve y se usa (se inhabilitan pata actualizar listas de procesos listos, etc), pero para procesos de usuario no sirve.

Page 21: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Comunicación entre procesos Exclusión mutua con espera activa

Variables de candado:

Una variable que indica que proceso va a entrar en su region critica, por ejemplo 0 o 1.

Tiene el mismo problema visto con el spooler de impresión: un proceso puede leer el valor del candado, ver que puede entrar y en ese momento ser interrumpido. Luego, cuando es reasignado, entra en su region critica no importando el estado actual del candado.

Page 22: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Comunicación entre procesos Exclusión mutua con espera activa

Alternancia estricta: la variable turn, que incialmente es 0, indica a quien le toca entrar en la región crítica.

La espera en un ciclo del cambio de una variable se denomina espera activa, y debe de evitarse ya que desperdicia la CPU.

Este esquema no es bueno si un proceso es mucho mas lento que otro, ya que viola la

condición 3 antes mencionada.

Page 23: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Comunicación entre procesos Exclusión mutua con espera activa

Solución de Peterson:

¿Que sucede

cuando los 2 procesos ejecutan enter_ region casi al mismo

tiempo?FUNCIONA

Page 24: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Comunicación entre procesos Exclusión mutua con espera activa

La instrucción TSL (Test and Set Lock)

Es una función implementada por hardware que en una operación indivisible (pone un candado al bus de memoria):

Lee el contenido de la palabra de memoria

lo coloca en un registro

y luego almacena un valor distinto de cero en esa direccion de memoria.

Para usarla declaramos una variable compartida lock que coordina el acceso a los recursos compartidos.

Page 25: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Comunicación entre procesos Exclusión mutua con espera activa

La instruccion TSL

Cuando lock tiene valor 0 cualquier proceso puede cambiarla a 1 con la funcion TSL, entrar en su region critica y ponerle 0 con un comando MOVE ordinario cuando libere el recurso. Usando 2 funciones en pseudo ensamblador:

Page 26: Hilos, comunicación y competencia entre procesosalram/SO/clase08.pdf · 2010. 9. 4. · Hilos Ejemplos de uso de hilos: Un servidor que escribe y regresa archivos pero usa un caché

Comunicar a MINIX co el mundo exterior

Usar un servidor FTP, por ejemplo uno gratis: www.drivehq.com, donde pueden obtener un espacio gratis.

Conectarse usando el programa ftp de MINIX

usar em modo pasivo con el comando PASSIVE

Usar comandos PUT y GET para bajar y subir archivos

y usar el manejar de archivos de página web que provee el sitio.