Programacion Concurrente
Programacion Concurrente
Conceptos
Programa: Un programa es un conjunto de instrucciones. Se trata de
algo esttico. Para que el programa pueda hacer algo hay que ponerlo
en ejecucin.
Proceso: A grandes rasgos, un proceso es un programa o parte de l en
ejecucin. Una mejor definicin es la de una actividad asncrona
susceptible de ser asignada a un procesador.
Concurrencia: Dos procesos sern concurrentes cuando la primera
instruccin de uno de ellos se ejecuta despus de la primera y antes de
la ltima del otro.
Programacin paralela: Tenemos una situacin de programacin
paralela si dos procesos se ejecutan al mismo tiempo. No confundir con
programacin concurrente.
Multiprogramacin: Consiste en una forma de gestionar los procesos
en un sistema monoprocesador de manera que los procesos vayan
alternndose para ocupar la CPU durante un tiempo.
Sistemas fuertemente acoplados: Tanto los procesadores como otros
dispositivos estn conectador a un bus. Esto permite que todos los
procesadores puedan compartir memoria. Suele llamarse multiproceso
a la gestin de varios procesos dentro de estos sistemas.
Sistemas dbilmente acoplados: En este caso no existe una
memoria compartida por los procesadores, sino que cada uno tiene su
propia memoria local y est conectado con otros procesadores mediante
algn tipo de enlace de comunicacin. La gestin de los procesos en
este tipo de sistema suele denominarse procesamiento distribuido.
Exclusin mutua: Decimos que dos conjuntos de instrucciones deben
ejecutarse en exclusin mutua cuando la ejecucin concurrente de
ambos conjuntos no garantiza el funcionamiento correcto (determinista)
de las instrucciones.
Condicin de sincronizacin: Se refiere a cuando es posible que
determinado recurso compartido por varios procesos se encuentre en un
estado en el que un proceso no puede hacer una determinada accin
con l hasta que no cambie su estado.
Seccin crtica: Porcin de cdigo que es necesario que se ejecute de
forma indivisible para el correcto funcionamiento. Tambin se refiere a
Procesos
Una forma de programar concurrentemente es dividir un programa en
procesos ya que, por lo general, los sistemas operativos proveen de un
sistema de ejecucin concurrente para stos. Para hacer una
comparacin entre procesos e hilos aqu se presentan una serie de
caractersticas de los procesos:
Hilos
Tambin conocidos como threads, se definen como una secuencia de
control dentro de un proceso que ejecuta sus instrucciones de forma
independiente. Los hilos presentan las siguientes caractersticas:
Semforo
Un semforo binario es un indicador (S) de condicin que registra si un recurso est
disponible o no. Un semforo binario slo puede tomar dos valores: 0 y 1. Si, para un
semforo binario, S = 1 entonces el recurso est disponible y la tarea lo puede utilizar;
si S = 0 el recurso no est disponible y el proceso debe esperar. Los semforos se
implementan con una cola de tareas o de condicin a la cual se aaden los procesos
que estn en espera del recurso.
Los semforos pueden realizar tres operaciones: wait, signal y initial. Estas
operaciones son atmicas, de modo que slo un proceso podr estar
ejecutndolas sobre un semforo en determinado momento.
Se asume que los procesos bloqueados se insertan en una cola FIFO (First In
First Out), as el primero en ser bloqueado es el primero que se desbloquea.
El
Problema de los
Lectores
y
Escritores:
Prioridad Escritura
solucin se caracteriza por el desbloqueo
encadenado en el protocolo de entrada de los
lectores. As cuando un lector va a entrar en la seccin crtica desbloquea a
otro si hay alguno esperando.
Esta