You are on page 1of 26

HILOS,

COMUNICACIN
Y
SINCRONIZACIN DE
PROCESOS

Hilos.
Un

hilo es una ejecucin de programa que


usa los recursos de un proceso, tiene su
propia pila y su propio estado del CPU.

El

uso de procesos para proveer la


concurrencia dentro de una aplicacin ocupa
una gran cantidad de conmutaciones de
sobrecarga del proceso, los hilos proveen un
mtodo de bajo costo de implementacin de
la concurrencia, que sirve para ciertas clases
de aplicaciones.

La conmutacin de la sobrecarga del


proceso tiene dos componentes.

Sobrecarga relacionada con la ejecucin: un


proceso se define como la ejecucin de un
programa. Por lo tanto al conmutar procesos, el
estado del CPU del proceso en ejecucin tiene
que salvarse y el del CPU de un nuevo proceso
tiene que cargarse en el CPU.

Sobrecarga

relacionada con el uso del


recurso: el ambiente del proceso contiene
informacin relativa a los recursos asignados
a un proceso y su interaccin con otros
procesos. Conduce a un tamao grande de
informacin del estado de proceso, lo cual
acrecienta la sobrecarga de conmutacin del
proceso.

Las ventajas de los hilos.

Sobrecarga baja. El estado de hilo consiste solamente en el


estado de un cmputo. El estado de asignacin de recursos y el
estado de comunicacin no es parte del estado del hilo, lo que
conduce a una sobrecarga baja del intercambio.

Aceleracin. La concurrencia dentro de un


proceso puede obtenerse mediante la creacin de
hilos. Esta tcnica puede acelerar la ejecucin de
una aplicacin tanto en los uniprocesadores como
en los multiprocesadores.

Comunicacin eficiente. los hilos de un proceso


pueden comunicarse entre s a travs del espacio
compartido de datos, evitando de esta forma la
sobrecarga de las llamadas al sistema para la
comunicacin.

Implementacin de hilos.
Los hilos en el nivel del kernel.

Un hilo a nivel de kernel es implementado por este.


Por tanto, la creacin y la terminacin de los hilos
en ese nivel y la comprobacin de su status se
realizan a travs de las llamadas de sistemas
anlogos. Cuando un proceso hace una llamada de
sistema el kernel le asigna un id y asigna un bloque
de control de hilos.

Ventajas y desventajas:

Un hilo en el nivel de kernel es como un proceso, excepto


porque tiene una cantidad ms pequea de informacin de
estado, es decir, tiene un estado ms delgado.

Esta similitud entre hilos y procesos es conveniente para


los programadores: la planificacin para hilos no es
diferente a la planificacin para los procesos. Un sistema
multiprocesador, los hilos en el nivel de kernel forma parte
de un proceso pueden planificarse simultneamente.

Hilos en el nivel de usuario.


Estos se implementan mediante una
biblioteca del hilo, que se enlaza con el
cdigo de un proceso.

Ventajas y desventajas:

La biblioteca del hilo implementa la sincronizacin y la planificacin


de los hilos. Este evita la sobrecarga de una llamada de sistemas
para la comunicacin y la sincronizacin entre hilos, por lo que la
sobrecarga de la conmutacin de hilos es ms pequea que en los
hilos en el nivel del kernel. Este arreglo tambin le permite a cada
proceso usar una poltica de planificacin que se ajuste mejor a su
naturaleza. Un proceso que implementa una para aplicacin de
tiempo real puede usar la planificacin basada en prioridades de sus
hilos para encontrar sus requisitos de respuesta, mientras que un
proceso que implementa a un servidor multihilos puede realizar
planificacin de hilos.

Problemas clsicos de comunicacin y


sincronizacin.
Las

secciones crticas y la sealizacin son


los elementos clave de la sincronizacin de
procesos. La solucin para un problema de
sincronizacin de procesos deber usar una
combinacin adecuada de estos elementos.

Productores/consumidores con buffer


acotado.

Buffer es el espacio en memoria asignado.

Consiste en un nmero no especificado de procesos productores y consumidores,


as como un rea central de memoria finita para buffers. Cada buffer es capaz de
contener un registro de informacin; se dice que est lleno cuando un productor
graba en l, y vaco cuando un productor copia un registro contenido en l, en un
inicio el buffer esta vaco.

Una solucin para el problema de


productores/consumidores debe cumplir con las
siguientes condiciones.

1. Un productor no debe sobrescribir en un buffer lleno.

2. Un consumidor no debe consumir de un buffer vaco.

3. Productores y consumidores deben acceder a buffers de manera


mutuamente exclusiva

4. Las informaciones deben consumirse en el mismo orden aplicado para


colocarlas en los buffers, es decir, en orden FIFO (primero en entrar
primero en salir).

Lectores y escritores.

Consiste en una serie de procesos que usan algunos datos


compartidos. Un proceso que solo lee los datos es el lector, uno que
los modifica o actualiza es el escritor. Usamos los trminos lectura y
escritura para referirnos a accesos a los datos compartidos realizados
por procesos de lectores y escritores, respectivamente.

Las condiciones de correccin para el problema de


lectores/escritores son las siguientes:

A. Muchos lectores pueden realizar la lectura en forma


concurrente.

B. La lectura est prohibida mientras un escritor escribe.

C. Solo un escritor puede realizar escritura en cualquier


momento dado.

D. Un lector tiene una prioridad o preferente sobre


escritores, es decir, obtendr acceso a los datos
compartidos antes que un escritor en espera, pero no
tendr preferencias sobre un escritor activo.

Mecanismos de comunicacin y
sincronizacin de procesos.
En

general se habla de sincronizacin de


procesos cuando un proceso p1 requiere
que un proceso p2 realice alguna accin
para continuar.

Semforos.

La herramienta de sincronizacin ms general son los


semforos. Estos son herramientas de sincronizacin de
procesos que tiene asociada una estructura de datos
(descriptor del semforo), una variable entera
id_semaforo que almacena el valor del semforo y una
cola de procesos detenidos en el semforo. Una de sus
principales caractersticas es que cada operacin es
indivisible, debiendo ser ejecutada globalmente en todas
sus fases sin intercalacin de ninguna otra.

Las operaciones bsicas sobre los


semforos son:

Espera: cuando se realiza una operacin de espera, el


valor de la variable asociada con el semforo ser el
responsable de la sincronizacin entre los diversos
procesos, de forma que si la variable id_semafor >0 se
permite el paso a los procesos incondicionalmente (el
semforo esta verde, y en caso contrario id_semafor = 0,
el proceso llamador pierde el control del procesador y es
aadido a la cola del semforo (el semforo esta rojo).

Sealizador: cuando se realiza esta operacin y


hay procesos detenidos en la cola del semforo,
el primero de la cola ser autorizado a continuar.
Si la operacin se realiza sin procesos detenidos,
la variable del semforo se incrementa. Si hay
procesos detenidos en la cola del semforo
entonces pasar un proceso de la cola del semforo
a la cola de procesos preparados en caso
contrario id_semforo := id_semaforo+1.

Eventos: los eventos son mecanismos de


sincronizacin que tiene asociadas dos primitivas
denominadas dormir y despertar.
Dormir:

cuando se realiza una operacin de dormir un


evento, el proceso solicitante pierde el control del
procesador y es aadido a la cola de procesos
detenidos en la cola el evento.

Despertar:

cuando se realiza la operacin de despertar


sobre un evento todos los detenidos en la cola del
evento son pasados a la cola del procesador. Si no
hubiera procesos detenidos en la cola del evento, la
llamada no tiene efecto ninguno.

Comunicacin de procesos.

En general se habla de comunicacin de procesos cuando


un proceso requiere intercambiar informacin con otro
proceso. Para que dos procesos puedan intercambiar
informacin debern sincronizarse par que el proceso
receptor espere por el emisor en el caso de que este no
haya enviado el mensaje o viceversa.

Las

operaciones para la comunicacin de


procesos que se describen a continuacin
suponen
la
existencia
de
un
almacenamiento intermedio (buzn) para
almacenar los mensajes enviado y no
recibidos.

Un buzn sirve como lugar de encuentro entre procesos y


mensajes. Un proceso puede enviar un mensaje a un
buzn y otro proceso comunicarse con el retirando
mensajes del mismo buzn. Todo buzn tiene asociada una
cola de procesos detenidos en el buzn y una cola de
mensajes pendientes de recibir. En la cola de procesos
detenidos en el buzn estarn todos los procesos que
hayan intentado extraer mensajes del buzn, cuando el
buzn estaba vaco.

Enviar buzn:

Eta operacin permite que un proceso envi un mensaje a


un buzn existente en el sistema.

Al enviar un mensaje a un buzn se comprueba si existen


procesos detenidos en la cola de procesos del buzn,
seleccionamos al primero de la lista, le autorizamos a
continuar y el enviamos el mensaje.

Recibir:

Esta operacin permite que un proceso retire un mensaje


de un buzn y que dicho mensaje sea recibido por el
proceso que realizan la llamada. Al realizarse la llamada
se comprueba si existe algn mensaje en la cola de
mensajes del buzn y en caso afirmativo se copia el
mensaje en el proceso llamador y se cede el control a uno
de los procesos preparados. Se puede producir un error al
intentar recibir un mensaje de un buzn.

You might also like