Está en la página 1de 8

Sistemas Operativos Tema 11.

Concurrencia
Conjunto de procesos cooperativos Red de cajeros automticos. Sistema de reserva de billetes. Servidor de impresin.

Qu es concurrencia?
Definicin de diccionario: coincidir en el espacio o en el tiempo dos o ms personas o cosas. En Informtica, se habla de concurrencia cuando hay una existencia simultnea de varios procesos en ejecucin.

Nota: concurrencia existencia simultnea no implica ejecucin simultnea


Paralelismo y concurrencia El paralelismo es un caso particular de la concurrencia. Se habla de paralelismo cuando ocurre la ejecucin simultnea de instrucciones Para sistemas multiprogramados de un nico procesador: Podemos considerar como por procesado concurrente (o procesado paralelo) la circunstancia en la que, varios procesos se vean en un estado intermedio entre su estado inicial y final.

Cooperacin entre Procesos


Procesos cooperativos: Necesidades de sincronizacin y comunicacin. Generalmente un proceso se ejecuta asncronamente con respecto a otro, es decir, sus ejecuciones son independientes. Sin embargo, hay ciertos instantes en lo que los procesos deben sincronizar sus actividades. Son estos puntos a partir de los cuales un proceso no puede progresar hasta que otro haya completado algn tipo de actividad. Es decir ser necesario en ocasiones detener a un proceso hasta que se produzca un determinado evento o se den ciertas condiciones sincronizacin Los procesos concurrentes informacin entre si. tendrn necesidad de comunicarse

Competencia entre los procesos


Los recursos de un sistema pueden clasificarse como compartibles, lo que significa que pueden ser utilizados por varios procesos de forma concurrente, o no compartibles, lo que equivale a que su uso se restrinja a un slo proceso a la vez.

El hecho de que un recurso no sea compartible deriva de una de las dos razones siguientes: La naturaleza fsica del recurso hace que sea imposible compartirlo. Un ejemplo lo constituye una impresora. El recurso es tal que si es usado por varios procesos de forma concurrente la accin de uno de ellos puede interferir con la de otro. Un ejemplo comn lo constituye un archivo.
Dentro de la categora de recursos no compartibles se incluirn la mayora de los perifricos (los discos no), los ficheros de escritura y las zonas de memoria sujetas a modificacin. Los recursos compartibles incluirn la CPU, los archivos de lectura, y las zonas de memoria que contengan rutinas puras o bien datos que no estn sujetos a modificacin

Requisitos para la Exclusin Mutua


Los recursos no compartibles, ya sean perifricos, archivos, o datos en memoria, pueden protegerse del acceso simultneo por parte de varios procesos evitando que stos ejecuten de forma concurrente sus fragmentos de cdigo a travs de los cuales llevan a cabo este acceso. Estos trozos de cdigo reciben el nombre de secciones o regiones crticas, pudindose asimilar el concepto de exclusin mutua en el uso de estos recursos a la idea de exclusin mutua en la ejecucin de las secciones crticas. Seccin crtica: segmento de cdigo donde se accede a datos compartidos con otros procesos. Nunca puede haber ms de un proceso en la seccin crtica (exclusin mutua) Idear soluciones que garanticen la exclusin mutua es uno de los problemas fundamentales de la programacin concurrente. Muchas son las alternativas y tipos de mecanismos que se pueden adoptar. Existen diferentes soluciones software y hardware. Unas sern sencillas y otras complejas, algunas requieren la cooperacin voluntaria de los procesos y otras que exigen un estricto ajuste a rgidos protocolos.

Soluciones Software al Problema de la Exclusin Mutua


Desactivacin de las interrupciones La solucin ms sencilla es que cada proceso prohba todas las interrupciones justo antes de entrar en su regin crtica y las permita de nuevo justo antes de salir. Esto funciona correctamente, pues el cdigo del sistema operativo slo se activa como consecuencia de la ocurrencia de interrupciones. Si el sistema operativo no puede ejecutarse mientras se ejecuta la seccin crtica, es obvio que no podr realizar un cambio de proceso en la CPU, por lo tanto, la seccin crtica se ejecutar en exclusin con todo proceso.
Variable de cerradura Consiste en tener una variable de cerradura compartida por los procesos. Antes de que un proceso entre en su seccin crtica comprueba el valor de la cerradura. Si sta vale 0, el proceso cambia el valor a 1 y entra en la seccin crtica. Si sta ya vale 1, el proceso espera hasta que la variable valga 0. Por lo tanto, un 0 indica que ningn proceso se encuentra en una seccin crtica y un 1 indica que algn proceso est en una seccin crtica.

Soluciones Software al Problema de la Exclusin Mutua


Algoritmo de Dekker Gestiona elegantemente la exclusin mutua. Utiliza, adems de las banderas de intencin de entrar, una variable turno (proceso_favorecido) que resuelve en caso de conflicto.

Da la posibilidad de que el otro proceso entre en su seccin crtica una segunda vez si lo hace antes que el proceso que acaba de dejar el bucle de espera, asigne el valor cierto a su intencin de entrar.

Pero cuando de nuevo tiene el procesador, realiza la asignacin y es su turno, as que se ejecuta. En consecuencia, no produce aplazamiento indefinido.

Soluciones hardware a la exclusin mutua Semforos


Para solucionar este problema, Dijkstra, en 1965, tuvo la idea de utilizar una variable entera para contar el nmero de seales de despertar puestas "en conserva" para uso futuro. Propuso el tipo de variable llamada semforo junto con las operaciones wait y signal definidas sobre l. En el artculo original sobre los semforos Dijkstra utiliz las letras P y V, que son las iniciales de estos trminos en holands. Nosotros utilizaremos wait y signal por ser ms descriptivos.
Un semforo es una zona de memoria compartida que almacena un entero no negativo sobre el cual slo puede actuarse con una de las operaciones siguientes:

Inicializacin: Un semforo slo puede inicializarse una vez, normalmente en el momento en que se define.
wait(s): Si s vale 0 provoca el bloqueo del proceso hasta que otro proceso realice una operacin signal sobre s. Si existen varios procesos bloqueados en un semforo, slo uno de ellos podr pasar a listo tras una operacin signal sobre l. signal(s): Si no hay procesos bloqueados en s, provoca el incremento de s en una unidad. Si hay procesos bloqueados en s (que valdr cero), provoca la transicin a listo de uno de estos procesos.

También podría gustarte