Procesos e Hilos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 55

Unidad 2: Gestin de Procesos

Tema 4, Procesos:
4.1 4.2 4.3 4.4 El concepto de proceso. Planificacin de procesos. Procesos cooperativos. Hilos (threads).

Escuela Universitaria de Informtica (Segovia)

4.1 El concepto de proceso.


Un proceso es cualquier programa en ejecucin. Un proceso necesita ciertos recursos para realizar satisfactoriamente su tarea:

Tiempo de CPU. Memoria. Archivos. Dispositivos de E/S.

Los recursos se asignan a un proceso:


Cuando se crea. Durante su ejecucin.


Escuela Universitaria de Informtica (Segovia)

4.1 El concepto de proceso.


Un sistema consiste en una coleccin de procesos que podran ejecutarse concurrentemente. Las obligaciones del SO como gestor de procesos son:

Creacin y eliminacin de procesos. Planificacin de procesos (procurando la ejecucin de mltiples procesos maximizando la utilizacin del procesador). Establecimiento de mecanismos para la sincronizacin y comunicacin de procesos. Manejo de bloqueos mutuos.

Escuela Universitaria de Informtica (Segovia)

4.1 El concepto de proceso.


Un proceso es:

Seccin de texto (cdigo del programa). Actividad actual, representada por:


Valor del contador de programa. Contenido de registros del procesador.

Adems, tambin incluye:


Pila (stack), que contiene datos temporales (parmetros de subrutinas, direcciones de retorno y variables locales). Seccin de datos, que contiene variables globales y memoria dinmica.
Escuela Universitaria de Informtica (Segovia)

4.1 El concepto de proceso: Estados de un proceso.


A medida que un proceso se ejecuta cambia de estado. Cada proceso puede estar en uno de los estados:

Nuevo (new): el proceso se est creando. En ejecucin (running): el proceso est en la CPU ejecutando instrucciones. Bloqueado (waiting, en espera): proceso esperando a que ocurra un suceso (ej. terminacin de E/S o recepcin de una seal). Preparado (ready, listo): esperando que se le asigne a un procesador. Terminado (terminated): finaliz su ejecucin, por tanto no ejecuta ms instrucciones y el SO le retirar los recursos que consume.

Nota: Slo un proceso puede estar ejecutndose en cualquier procesador en un instante dado, pero muchos procesos pueden estar listos y esperando.
Escuela Universitaria de Informtica (Segovia)

4.1 El concepto de proceso: Estados de un proceso.


Diagrama de estados de un proceso:

Escuela Universitaria de Informtica (Segovia)

4.1 El concepto de proceso: Estados de un proceso.


Para que un programa se ejecute, el SO debe crear un proceso para l. En un sistema con multiprogramacin el procesador ejecuta cdigo de distintos programas que pertenecen a distintos procesos. Aunque dos procesos estn asociados al mismo programa, se consideran dos secuencias de ejecucin separadas, cada una de las cuales se considera un proceso. Llamamos traza de un proceso al listado de la secuencia de instrucciones que se ejecutan para el mismo.

Escuela Universitaria de Informtica (Segovia)

4.1 El concepto de proceso: Estados de un proceso.


Ejemplo: disposicin en memoria de tres procesos.

Escuela Universitaria de Informtica (Segovia)

4.1 El concepto de proceso: Estados de un proceso.


Ejemplo: traza de los tres procesos.

5000 = Direccin de comienzo del programa del proceso A 8000 = Direccin de comienzo del programa del proceso B 12000 = Direccin de comienzo del programa del proceso C

Escuela Universitaria de Informtica (Segovia)

4.1 El concepto de proceso: Estados de un proceso.


Ejemplo: traza combinada de los tres procesos para los primeros 52 ciclos de instrucciones del sistema:

100 = Direccin de comienzo del programa distribuidor Las reas sombreadas indican ejecucin del proceso distribuidor; la primera y tercera columna cuentan los ciclos de instruccin; la segunda y cuarta columna muestran la direccin de la instruccin a ejecutar.

Escuela Universitaria de Informtica (Segovia)

10

4.1 El concepto de proceso: Estados de un proceso.


Modelo de proceso con dos estados:


El modelo ms sencillo es el que considera que en un cierto instante el proceso est ejecutndose en el procesador o no => slo dos estados posibles:
Ejecucin. No ejecucin.

Escuela Universitaria de Informtica (Segovia)

11

4.1 El concepto de proceso: Estados de un proceso.


Modelo de proceso con dos estados:


Los procesos que no estn ejecutndose se guardan en una cola de procesos, donde esperan su turno de ejecucin en el procesador. Cada entrada de la cola es un puntero a un proceso en particular. Cuando un proceso se interrumpe, se le pasa a la cola de procesos en espera. Si un proceso termina o se abandona, se le saca del sistema.

Escuela Universitaria de Informtica (Segovia)

12

4.1 El concepto de proceso: Estados de un proceso.


Modelo de proceso de cinco estados:

Escuela Universitaria de Informtica (Segovia)

13

4.1 El concepto de proceso: Estados de un proceso.


Modelo de proceso de cinco estados:


Los sucesos que pueden dar lugar a una transicin de estados en este modelo son los siguientes:
Ninguno a nuevo: se crea un nuevo proceso para ejecutar un programa Nuevo a preparado: el sistema est preparado para aceptar un proceso ms porque dispone de recursos para ello. Preparado a ejecucin: el sistema elige uno de los procesos en estado preparado para llevarlo a ejecucin. Ejecucin a terminado: el proceso que se est ejecutando es finalizado por el SO si indica que termin, se abandona o se cancela. Ejecucin a preparado: el proceso ha agotado su tiempo de ejecucin, cede voluntariamente su tiempo de ejecucin o se interrumpe para atender a otro de mayor prioridad.
Escuela Universitaria de Informtica (Segovia) 14

4.1 El concepto de proceso: Estados de un proceso.


Modelo de proceso de cinco estados:


Los sucesos que pueden dar lugar a una transicin de estados en este modelo son los siguientes (continuacin):
Ejecucin a bloqueado: el proceso solicita algo por lo que debe esperar. Bloqueado a preparado: se produce el suceso por el que el proceso estaba esperando. Preparado a terminado (no aparece en la figura): un padre puede terminar con un proceso hijo en cualquier momento, o bien, si el padre termina todos sus hijos se pueden terminar. Bloqueado a terminado: el mismo criterio que el anterior.

Escuela Universitaria de Informtica (Segovia)

15

4.1 El concepto de proceso: Estados de un proceso.


Ejemplo: estados asociados a la traza de los tres procesos.

Escuela Universitaria de Informtica (Segovia)

16

4.1 El concepto de proceso: Estados de un proceso.


Sera necesario disponer de dos colas: una de listos y otra de bloqueados. Los procesos nuevos que se van admitiendo pasan a la cola de listos, el sistema elige de esta cola alguno para pasarlo a ejecucin. Cuando ocurre un suceso, todos los procesos que esperan por l pasan de la cola de bloqueados a la cola de listos.

Escuela Universitaria de Informtica (Segovia)

17

4.1 El concepto de proceso: Estados de un proceso.


El modelo con una sola cola de bloqueados tiene la limitacin de que cuando ocurre un evento del sistema debe recorrer la cola para buscar a aquellos procesos que esperan dicho suceso. Esto sera muy costoso en un SO grande con cientos o miles de procesos en dicha cola. Sera ms eficiente tener varias colas, una asociada a cada suceso. De esta manera, cuando ocurra ese suceso todos los procesos de la cola asociada se pasaran a la cola de listos.

Escuela Universitaria de Informtica (Segovia)

18

4.1 El concepto de proceso: Estados de un proceso.


Modelo con varias colas de bloqueados para el proceso de cinco estados:

Escuela Universitaria de Informtica (Segovia)

19

4.1 El concepto de proceso: Bloque de control de proceso (PCB).


Cada proceso se representa en el SO con un bloque de control de proceso (tambin llamado bloque de control de tarea).
Puntero Estado

Identificador de proceso Contador de programa Registros Lmites de memoria Estado de la E/S ... Escuela Universitaria de Informtica (Segovia)

20

4.1 El concepto de proceso: Bloque de control de proceso (PCB).


Los elementos de informacin asociados son:


Estado actual del proceso. Contador de programa: indica la direccin de la siguiente instruccin que se ejecutar de ese proceso. Registros de CPU: acumuladores, registros ndice, punteros de pila y registros generales. Informacin de planificacin de CPU: prioridad del proceso, punteros a colas de planificacin, etc. Informacin de gestin de memoria: valor de los registros de base y lmite, tabla de pginas o tabla de segmentos. Informacin de contabilidad: tiempo de CPU, tiempo consumido, nmeros de procesos, etc. Informacin de estado de E/S: dispositivos de E/S asignados a este proceso, lista de archivos abiertos, etc.
Escuela Universitaria de Informtica (Segovia)

21

4.2 Planificacin de procesos.


Las polticas de planificacin de procesos surgen como necesidad dada por los objetivos perseguidos por el SO: multiprogramacin y tiempo compartido.

Objetivo de la multiprogramacin:
Tener algn proceso en ejecucin en todo momento (maximizar el aprovechamiento de la CPU).

Objetivo del tiempo compartido:


Conmutar la CPU entre procesos con tal frecuencia que los usuarios puedan interactuar con cada programa durante su ejecucin.

Nota: En el caso de un sistema con un solo procesador nunca habr ms de un proceso en ejecucin, si hay ms de un proceso, los otros tendrn que esperar hasta que la CPU est libre y pueda replanificarse.
Escuela Universitaria de Informtica (Segovia) 22

4.2 Planificacin de procesos: Colas de planificacin.


Colas de planificacin:

Cola de procesos: incluye todos los procesos que van ingresando en el sistema. Cola de procesos listos: son los procesos que estn en memoria principal esperando para ejecutarse. La cabecera de esta cola contiene punteros al primer y ltimo bloque del PCB de la lista. Cada PCB tiene un puntero que apunta al siguiente proceso de la cola de procesos listos. Cola de dispositivos: lista de procesos que esperan un dispositivo de E/S en particular.

Escuela Universitaria de Informtica (Segovia)

23

4.2 Planificacin de procesos: Colas de planificacin.


Colas de planificacin:

El SO organiza los PCB en colas de espera por el procesador o por los dispositivos de E/S (colas de planificacin: colas de procesos, colas de dispositivos).

Escuela Universitaria de Informtica (Segovia)

24

4.2 Planificacin de procesos: Colas de planificacin.


Un proceso se coloca inicialmente en la cola de listos, a la espera de que se le ejecute. Una vez asignada la CPU al proceso y cuando ste se est ejecutando puede ocurrir que:

El proceso pueda emitir una solicitud de E/S, y entonces colocarse en una cola de E/S. El proceso puede crear un nuevo proceso y esperar a que termine. El proceso puede ser desalojado por la fuerza de la CPU, como resultado de una interrupcin, y ser colocado otra vez en la cola de procesos listos.

Nota: en los dos primeros casos el proceso pasar del estado de espera al estado de listo, y se colocar de nuevo en la cola de procesos listos.
Escuela Universitaria de Informtica (Segovia) 25

4.2 Planificacin de procesos: Niveles de planificacin.


Niveles de planificacin: planificadores.


En los sistemas por lotes, existe un planificador de largo plazo (PLP) o de alto nivel, que suministra procesos a la cola de preparados. El planificador de corto plazo o de bajo nivel es el que asigna y desasigna la CPU. El PLP trata de conseguir una mezcla adecuada de trabajos intensivos en CPU y en E/S. Planificador de medio plazo: enva al disco procesos de poco inters, para abrir memoria principal para nuevos procesos => Intercambio (swapping).

Escuela Universitaria de Informtica (Segovia)

26

4.2 Planificacin de procesos: Niveles de planificacin.


Niveles de planificacin: planificadores.

Escuela Universitaria de Informtica (Segovia)

27

4.2 Planificacin de procesos: Cambio de contexto.


Cambio de contexto (context switch):


Consiste en desalojar a un proceso de la CPU y reanudar otro. Se guarda el estado del proceso saliente en su PCB y se recuperan los registros del proceso que entra. El cambio de contexto (tiempo de conmutacin) es tiempo perdido => debe de ser lo ms rpido posible. El tiempo de conmutacin vara entre 1 y 1000 s. El hardware en ocasiones facilita el cambio de contexto, haciendo que un cambio simplemente implique cambiar el puntero al conjunto de registros actual.
Escuela Universitaria de Informtica (Segovia)

28

4.2 Planificacin de procesos: Cambio de contexto.


Cambio de contexto:

Escuela Universitaria de Informtica (Segovia)

29

4.2 Planificacin de procesos: Creacin de procesos.


Los procesos se crean:


Mediante una llamada al sistema de crear proceso, durante el curso de su ejecucin. El proceso creador se denomina proceso padre, y el nuevo proceso, hijo. Variantes en las relaciones padre/hijo:
Comparticin de recursos: todos, algunos, ninguno?. Espacio de memoria. Sincronizacin del padre: espera a que el hijo termine?. Terminacin.

Escuela Universitaria de Informtica (Segovia)

30

4.2 Planificacin de procesos: Creacin de procesos.


Cuando un proceso crea un proceso nuevo, hay dos posibilidades en trminos de ejecucin:

Padre e hijo se ejecutan concurrentemente. Padre espera por la finalizacin del hijo.

En cuanto al espacio de direcciones del nuevo proceso:


El hijo es un duplicado del padre. Se carga un programa en el proceso hijo.

Escuela Universitaria de Informtica (Segovia)

31

4.2 Planificacin de procesos: Creacin de procesos.


En UNIX procesos:

existen

dos

funciones

bsicas

para

crear

Funcin fork():
Cuando se la llama crea un proceso hijo que es una copia casi exacta del proceso padre (duplicado del padre). Ambos procesos continan ejecutndose desde el punto en el que se hizo la llamada a fork(). En UNIX los procesos se identifican mediante un identificador de proceso (PID) que es un entero nico. Ambos procesos continan su ejecucin con la instruccin que sigue al fork() con una diferencia:
El cdigo que el hijo recibe del fork es cero. El que recibe del padre es el propio pid.

Escuela Universitaria de Informtica (Segovia)

32

4.2 Planificacin de procesos: Creacin de procesos.


Funciones exec:

Tras crear un nuevo proceso, despus de llamar a fork, Linux llama a una funcin de la familia exec. stas funciones reemplazan el programa ejecutndose en el proceso por otro programa. Cuando un programa llama a una funcin exec, su ejecucin cesa de inmediato y comienza a ejecutar el nuevo programa desde el principio, suponiendo que no ocurriera ningn error durante la llamada. Generalmente uno de los dos procesos (padre o hijo) utiliza la llamada al sistema execve despus del fork para reemplazar su espacio de memoria con un programa nuevo. Nota: Si el padre no tiene nada que hacer mientras el hijo se ejecuta, puede emitir una llamada wait (esperar) para sacarse a s mismo de la cola de procesos listos hasta que el hijo termine.
Escuela Universitaria de Informtica (Segovia)

33

4.2 Planificacin de procesos: Identificacin de procesos.


Todo proceso en Linux lleva asociado un identificador (n de 16 bits que se asigna secuencialmente en Linux por cada nuevo proceso que se crea), que resulta nico para cada proceso y se conoce como PID. Adems, salvo el proceso raiz (init), todo proceso lleva asociado un proceso padre, que tambin tiene un identificador, en este caso PPID, lo que generar toda una estructura en rbol. Ejemplo: El siguiente programa escribe el identificador de un (PID) y el identificador de su proceso padre (PPID). proceso

#include <stdio.h> #include <unistd.h> int main (){ printf("El identificador de este proceso es PID = %d\n",(int)getpid ()); printf("El identificador del proceso padre es PPID = %d\n",(int)getppid ()); }

Escuela Universitaria de Informtica (Segovia)

34

4.2 Planificacin de procesos: Identificacin de procesos.


Un programa puede obtener el identificador del proceso en el que se est ejecutando por medio de la funcin de llamada al sistema getpid(), mientras que el identificador del proceso padre desde el que se ejecutase puede obtener por medio de la funcin de llamada al sistema getppid(). Al finalizar el fork() tanto el proceso padre como el hijo continan su ejecucin a partir de la siguiente instruccin. Si un padre quiere esperar a que su hijo termine deber utilizar la llamada al sistema wait (); wait() detiene la ejecucin del proceso (lo pasa al estado bloqueado) hasta que un hijo de ste termine. wait() regresa de inmediato si el proceso no tiene hijos. Cuando wait() regrese por terminacin de un hijo, el valor devuelto es positivo e igual al pid de dicho proceso. De lo contrario devuelve 1 y pone un valor en errno.

Escuela Universitaria de Informtica (Segovia)

35

4.2 Planificacin de procesos: Terminacin de procesos.


Procesos Zombie:

Proceso que ha finalizado su ejecucin pero an no ha sido eliminado. Supongamos que un programa crea un proceso hijo y luego llama a la funcin wait():
Si el proceso hijo no ha finalizado en ese punto, el proceso padre se bloquear en la llamada hasta que el proceso hijo finalice. Si el proceso hijo finaliza antes de que el proceso padre llame al wait () el proceso hijo se convierte en un proceso zombie.

Cuando el padre llame al wait(), captura el estado del proceso hijo (terminacin), el proceso hijo es borrado y la llamada wait() nos devuelve al programa inmediatamente.
Escuela Universitaria de Informtica (Segovia) 36

4.2 Planificacin de procesos: Terminacin de procesos.


Un proceso finaliza:

Cuando tras ejecutar su ltima instruccin le pide al SO que lo elimine utilizando una llamada al sistema exit. Cuando el padre emite una llamada al sistema para abortarlo. Un padre podra terminar la ejecucin de uno de sus hijos por diversas razones, como:
El hijo se excedi en la utilizacin de alguno de los recursos que se le asignaron. La tarea que se asign al hijo ya no es necesaria. El padre va a salir, y el SO no permite que un hijo contine si su padre termina => terminacin en cascada.
Escuela Universitaria de Informtica (Segovia)

37

4.2 Planificacin de procesos: Terminacin de procesos.


Matar un proceso:

En ocasiones nos suceder que queramos finalizar un proceso que esta corriendo, las razones para hacer esto pueden ser mltiples, que el proceso est consumiendo demasiado tiempo del procesador, que est bloqueado, que no genere informacin o que genere demasiada, ... Para matar un proceso utilizaremos la orden kill, que resulta muy til en el caso de procesos que no tienen asociada ninguna terminal de control. Para matar un proceso necesitaremos su PID de tal manera que escribiremos:
kill PID(s)
Escuela Universitaria de Informtica (Segovia) 38

4.3 Procesos cooperativos:


Procesos concurrentes:

Los procesos pueden tener distintas relaciones de comunicacin entre s:


Independientes: no puede afectar, ni ser afectado por los dems procesos que se ejecutan en el sistema, compiten por el uso de recursos escasos. Cooperativos: puede afectar o ser afectado por los dems procesos que se ejecutan en el sistema, colaboran entre s buscando un objetivo comn.

Obviamente, cualquier proceso que comparte datos con otro proceso es cooperativo.
Escuela Universitaria de Informtica (Segovia) 39

4.3 Procesos cooperativos:


Razones para crear un entorno que permita la cooperacin entre procesos:


Compartir informacin: acceso concurrente a elementos de informacin comunes. Aceleracin de los clculos: para ejecutar una tarea con mayor rapidez, la dividimos en subtareas, cada una de las cuales se ejecuta en paralelo con las otras. Modularidad: posibilidad de dividir las funciones del sistema en procesos individuales. Comodidad: para evitar que a un usuario individual se le acumule gran nmero de tareas.

Escuela Universitaria de Informtica (Segovia)

40

4.3 Procesos cooperativos:


Ejemplo de proceso cooperativo: Problema del productor-consumidor.


Un proceso productor produce informacin que es consumida por un proceso consumidor, para que se ejecuten concurrentemente, es preciso contar con un buffer de elementos que el productor puede llenar y el consumidor puede vaciar. Productor y consumidor deben de estar sincronizados para que el consumidor no trate de consumir un elemento que an no se ha producido (el consumidor espera al productor). Restricciones de espera para productor y consumidor con buffer limitado:
Productor: espera si buffer lleno. Consumidor: espera si buffer vaco.
Escuela Universitaria de Informtica (Segovia) 41

4.4 Hilos (threads).


Procesos e hilos (threads):


Los hilos son un concepto relativamente nuevo de los SO. En este contexto, un proceso recibe el nombre de proceso pesado, mientras que un hilo recibe el nombre de proceso ligero. El trmino hilo se refiere sintctica y semnticamente a hilos de ejecucin. El trmino multihilo hace referencia a la capacidad de un SO para mantener varios hilos de ejecucin dentro del mismo proceso.

Escuela Universitaria de Informtica (Segovia)

42

4.4 Hilos (threads).


En un SO con procesos monohilo (un solo hilo de ejecucin por proceso), en el que no existe el concepto de hilo, la representacin de un proceso incluye su PCB, un espacio de direcciones del proceso, una pila de proceso y una pila ncleo.

Escuela Universitaria de Informtica (Segovia)

43

4.4 Hilos (threads).


En un SO con procesos multihilo, slo hay un PCB y un espacio de direcciones asociados al proceso, sin embargo, ahora hay pilas separadas para cada hilo y bloques de control para cada hilo.

Escuela Universitaria de Informtica (Segovia)

44

4.4 Hilos (threads).


Estructura de los hilos:


Un hilo (proceso ligero) es una unidad bsica de utilizacin de la CPU, y consiste en un contador de programa, un juego de registros y un espacio de pila. Los hilos dentro de una misma aplicacin comparten:
La seccin de cdigo. La seccin de datos. Los recursos del SO (archivos abiertos y seales).

Un proceso tradicional o pesado es igual a una tarea con un solo hilo.

Escuela Universitaria de Informtica (Segovia)

45

4.4 Hilos (threads):Recursos compartidos y no compartidos.


Los hilos permiten la ejecucin concurrente de varias secuencias de instrucciones asociadas a diferentes funciones dentro de un mismo proceso, compartiendo un mismo espacio de direcciones y las mismas estructuras de datos del ncleo. Recursos compartidos entre los hilos:

Cdigo (instrucciones). Variables globales. Ficheros y dispositivos abiertos.

Recursos no compartidos entre los hilos:


Contador del programa (cada hilo puede ejecutar una seccin distinta de cdigo). Registros de CPU. Pila para las variables locales de los procedimientos a las que se invoca despus de crear un hilo. Estado: distintos hilos pueden estar en ejecucin, listos o bloqueados esperando un evento. Escuela Universitaria de Informtica (Segovia) 46

4.4 Hilos (threads): Estados de un hilo.


Los principales estados de un hilo son: ejecucin, preparado y bloqueado y hay cuatro operaciones bsicas relacionadas con el cambio de estado de los hilos:

Creacin: En general, cuando se crea un nuevo proceso se crea tambin un hilo para ese proceso. Posteriormente, ese hilo puede crear nuevos hilos dndoles un puntero de instruccin y algunos argumentos. Ese hilo se colocar en la cola de preparados. Bloqueo: Cuando un hilo debe esperar por un suceso, se le bloquea guardando sus registros. As el procesador pasar a ejecutar otro hilo preparado. Desbloqueo: Cuando se produce el suceso por el que un hilo se bloque pasa a la cola de listos. Terminacin: Cuando un hilo finaliza, se liberan su contexto y sus pilas.

Nota: Un punto importante es la posibilidad de que el bloqueo de un hilo lleve al bloqueo de todo el proceso. Es decir, que el bloqueo de un hilo lleve al bloqueo de todos los hilos que lo componen, an cuando el proceso est preparado.
Escuela Universitaria de Informtica (Segovia)

47

4.4 Hilos (threads): Estados de un hilo.


En un sistema monoprocesador, la multiprogramacin permite intercalar la ejecucin de mltiples hilos dentro del mismo proceso:

Escuela Universitaria de Informtica (Segovia)

48

4.4 Hilos (threads): Procesos e hilos.


Los hilos operan, en muchos sentidos, igual que los procesos:


Pueden estar en uno o varios estados: listo, bloqueado, en ejecucin o terminado. Tambin comparten la CPU. Slo hay un hilo activo (en ejecucin) en un instante dado. Un hilo dentro de un proceso se ejecuta secuencialmente. Cada hilo tiene su propia pila y contador de programa. Pueden crear sus propios hilos hijos.

Diferencia con los procesos:


Los hilos no son independientes entre s. Como todos los hilos pueden acceder a todas las direcciones de la tarea, un hilo puede leer la pila de cualquier otro hilo o escribir sobre ella. Aunque pueda parecer lo contrario la proteccin no es necesaria ya que el diseo de una tarea con mltiples hilos tiene que ser un usuario nico.
Escuela Universitaria de Informtica (Segovia) 49

4.4 Hilos (threads): Procesos e hilos.


Ventajas de los hilos sobre los procesos:


Se tarda mucho menos tiempo en crear un nuevo hilo en un proceso existente que en crear un nuevo proceso. Se tarda mucho menos tiempo en terminar un hilo que un proceso. Se tarda mucho menos tiempo en conmutar entre hilos de un mismo proceso que entre procesos. Los hilos hacen ms rpida la comunicacin entre procesos, ya que al compartir memoria y recursos, se pueden comunicar entre s sin invocar el ncleo del SO.

Escuela Universitaria de Informtica (Segovia)

50

4.4 Hilos (threads).


Ejemplos de uso de los hilos:


Trabajo interactivo y en segundo plano: En un programa de hoja de clculo, un hilo podra estar leyendo la entrada del usuario y otro podra estar ejecutando las rdenes y actualizando la informacin. Procesamiento asncrono: Se podra implementar, con el fin de protegerse de cortes de energa, un hilo que se encargar de salvaguardar el buffer de un procesador de textos una vez por minuto. Estructuracin modular de los programas: Los programas que realizan una variedad de actividades se pueden disear e implementar mediante hilos.
Escuela Universitaria de Informtica (Segovia)

51

4.4 Hilos (threads).


Hilos a nivel de ncleo y a nivel de usuario:


Existen dos categoras para la implementacin de hilos: hilos a nivel de usuario (ULT) e hilos a nivel de ncleo (KLT). Hilos a nivel de usuario:
La gestin de hilos la realiza una aplicacin y el ncleo no es consciente de la existencia de hilos. Se programa una aplicacin como multihilo mediante una biblioteca de funciones para gestionar ULT (crear, destruir, comunicar, planificar, etc.)

Escuela Universitaria de Informtica (Segovia)

52

4.4 Hilos (threads).


Hilos a nivel de ncleo (KLT):


Todo el trabajo de gestin de hilos lo realiza el ncleo. En el rea de la aplicacin no hay cdigo para la gestin de hilos, nicamente una Interfaz de Programas de Aplicacin (API) para las funciones de gestin de hilos en el ncleo. Este tipo de soluciones se han implementado en Windows 2000 y Linux. Las aplicaciones se programan como multihilo y todos los hilos de esa aplicacin pertenecen al mismo proceso. El ncleo del SO mantiene la informacin de contexto del proceso como un todo y la de cada hilo dentro del proceso. La principal desventaja de la solucin KLT, respecto de la ULT, es que el paso de control de un hilo a otro, dentro del mismo proceso, requiere cambios de modo.

Escuela Universitaria de Informtica (Segovia)

53

4.4 Hilos (threads).


Ventajas del usar ULT en vez de KLT:


1. El intercambio de hilos no requiere los privilegios del modo ncleo. As, el proceso no debe cambiar al modo ncleo y volver al modo usuario para gestionar los hilos. Esto evita una sobrecarga de procesamiento. 2. Se puede manejar una planificacin especfica para los hilos. Para algunas aplicaciones puede ser mejor una planificacin basada en prioridades mientras que para otras puede ser mejor un turno rotatorio. 3. Los ULT se pueden ejecutar en cualquier SO. Para dar soporte a los ULT no es necesario realizar cambios en el ncleo del SO ya que se utilizan herramientas de gestin de hilos que proporciona una biblioteca para todas las aplicaciones.

Escuela Universitaria de Informtica (Segovia)

54

4.4 Hilos (threads).


Desventajas del uso de ULT en vez de KLT:


1. En un SO la mayora de las llamadas a sistema son bloqueantes. As, cuando un ULT ejecuta una llamada al sistema no solo se bloquea ese hilo, sino todos los hilos del proceso. 2. Una aplicacin multihilo basada en ULT no puede sacar partido de los sistemas multiprocesadores. El ncleo del SO asigna un proceso a un solo procesador y slo se puede ejecutar en l un hilo del proceso a la vez. 1. Podemos modularizar la aplicacin por procesos en vez de hilos. Pero esto elimina la principal ventaja de los hilos: cada cambio de proceso es ms costoso que un cambio de hilo. 2. Usar una tcnica de recubrimiento (convierte una llamada bloqueante en una no bloqueante), para evitar el bloqueo de los hilos.
Escuela Universitaria de Informtica (Segovia) 55

Para evitar estas desventajas:

También podría gustarte