Está en la página 1de 6

Concurrencia de Procesos

Dos o mas procesos, se dice que son concurrentes o paralelos, cuando se ejecutan al mismo tiempo. Esta concurrencia puede darse en un sistema con un solo procesador (pseudo paralelismo) o en un sistema multiprocesador (paralelismo real). Para que la concurrencia exista entre 2 procesos, es necesario que estos tengan algn tipo de relacin. La concurrencia puede presentarse en tres contextos: 1. Varias aplicaciones: La multiprogramacin se cre para permitir que el tiempo de procesador de la mquina fuese compartido dinmicamente entre varios trabajos o aplicaciones activas. 2. Aplicaciones estructuradas: Como ampliacin de los principios del diseo modular y la programacin estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes. 3. Estructura del sistema operativo: Las mismas ventajas de estructuracin son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos estn implementados como un conjunto de procesos. Razones para la ejecucin de procesos concurrentes en un sistema: Facilita la programacin de aplicaciones al permitir que stas se estructuren como un conjunto de procesos que cooperan entre s para alcanzar un objetivo comn. Acelera los clculos. Si se quiere que una tarea se ejecute con mayor rapidez, lo que se puede hacer es dividirla en procesos, cada uno de los cuales se ejecuta en paralelo con los dems. Posibilita el uso interactivo a mltiples usuarios que trabajan de forma simultnea. Permite un mejor aprovechamiento de los recursos, en especial de la CPU, ya que pueden aprovechar las fases de entrada-salida de unos procesos para realizar las fases de procesamiento de otros. Desventajas de la concurrencia de procesos: Inanicin e interrupcin de procesos Ocurrencia de bloqueos Que dos o mas procesos requieran el mismo recurso (No apropiativo) Tipos de procesos concurrentes: Proceso independiente: Es aquel que ejecuta sin requerir la ayuda o cooperacin de otros procesos. Un claro ejemplo de procesos independientes son los diferentes shells que se ejecutan de forma simultnea en un sistema. Procesos son cooperantes: Son aquellos que estn diseados para trabajar conjuntamente en alguna actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos. En ambos tipos de procesos (independientes y cooperantes), puede producirse una serie de interacciones entre ellos y pueden ser de dos tipos: Interacciones motivadas porque los procesos comparten o compiten por el acceso a recursos fsicos o lgicos. Por ejemplo, dos procesos independientes compiten por el acceso a disco o para modificar una base de datos. Interaccin motivada porque los procesos se comunican y sincronizan entre s para alcanzar un objetivo comn, Por ejemplo, un compilador que tiene varios procesos que

trabajan conjuntamente para obtener un solo archivo de salida. Los elementos que se deben gestionar y disear a causa de la concurrencia son: 1. El sistema operativo debe ser capaz de seguir la pista de los distintos procesos activos. Esto lo hace por medio de PCBs (Bloque de Control de Procesos) 2. El sistema operativo debe asignar y quitar los distintos recursos a cada proceso activo. Entre estos recursos se incluyen: Tiempo de procesador: Es funcin de la planificacin. Memoria: La mayora de los sistemas operativos emplean esquemas de memoria virtual. Archivos Dispositivos de E/S

3. El sistema operativo debe proteger los datos y los recursos fsicos de cada proceso contra injerencias no intencionadas de otros procesos. 4. Los resultados de un proceso deben ser independientes de la velocidad relativa a la que se realiza la ejecucin con respecto a otros procesos concurrentes. Competencia entre procesos por los recursos Los procesos concurrentes entran en conflicto cuando compiten por el uso del mismo recurso, es decir, quieren acceder a un recurso al mismo tiempo. Y la ejecucin de un proceso puede influir en el comportamiento de los procesos que compiten y el sistema operativo le asignar el recurso a uno de ellos y el otro tendr que esperar. Por lo que el proceso que quede esperando, se retrasar, se bloqueara y en el peor de los casos nunca se terminar con xito. Exclusin Mutua La exclusin mutua consiste en asegurar que los recursos no compartidos sean accedidos por un nico proceso a la vez. Regin Critica Las secciones crticas o regiones crticas son fragmentos de programa que acceden a recursos no compartidos. Si dos procesos no estn nunca en sus secciones crticas al mismo tiempo, se evita que haya conflicto entre estos por el recurso. Requisitos para la exclusin mutua: El uso adecuado de la concurrencia entre procesos exige la capacidad de definir secciones crticas y hacer cumplir la exclusin mutua. Esto es fundamental para cualquier esquema de proceso concurrente. Cualquier servicio o capacidad que d soporte para la exclusin mutua debe cumplir los requisitos siguientes: 1. Solo un proceso, de entre todos los que poseen secciones crticas por el mismo recurso u objeto compartido, debe tener permiso para entrar en ella en un instante dado. 2. Un proceso que se interrumpe en una seccin no crtica debe hacerlo sin estorbar a los otros procesos. 3. Un proceso no debe poder solicitar acceso a una seccin crtica para despus ser demorado indefinidamente; no puede permitirse el interbloqueo o la inanicin. 4. Cuando ningn proceso est en su seccin crtica, cualquier proceso que solicite entrar en la suya debe poder hacerlo sin dilacin.

5. No se pueden hacer suposiciones sobre la velocidad relativa de los procesos o su nmero. 6. Un proceso permanece en su seccin crtica solo por un tiempo finito. Soluciones a la exclusin mutua Soluciones por Software: Una manera es dejar la responsabilidad a los procesos que deseen ejecutar concurrentemente, de esta manera los procesos deben coordinarse unos con otros para cumplir la exclusin mutua sin ayuda alguna, aunque estas soluciones son propensas a errores y a una fuerte carga de proceso. Entre estas soluciones podemos encontrar: Algoritmo de Dekker Algoritmo de Peterson

Soluciones por Hardware: Propone el uso de instrucciones de la mquina a tal efecto, estas tienen la ventaja de reducir la sobrecarga. Soporte al Sistema Operativo: Entre estos mtodos se encuentran los semforos, monitores, paso de mensajes, etc. Algoritmos de Dekker Dekker 1 Problema: Sincronizacion forzada. Alternancia estrica, los procesos lentos atrazan a los rapidos. Program 1 var entera: turno = 1 Proceso 1 repeat Hace_cosas() while turno = 2 do{ null; } region_critica() turno = 2 hace_mas_cosas() until fin Dekker 2 Problema: Interbloqueo. ambos procesos entran en un mismo estado y nunca salen. Program 2 var bool: P1QE = false bool: P2QE = false proceso 1 repeat hace_cosas() P1QE = true while P2QE = true do{ null; } region_critica() P1QE = false hace_mas_cosas() until fin

Dekker 3 Problema: No garantiza la exclusion mutua. Ambos entran al mismo tiempo a la region critica. program 3 var

bool: P1EA = false bool: P2EA = false proceso 1 repeat hace_cosas() while P2EA = true do{ null; } P1EA = true region_critica() P1EA = false hace_mas_cosas() until fin Dekker 4 Problema: Postergacion indefinida. Se queda esperando un evento que probablemente nunca suceda. Dekker 5 Program 5 var entero: turno = 1 proceso 1 repeat hace_cosas() P1QE = true while p2QE = true do{ if turno = 2 then{ P1QE = false delay(random) P1QE = true } } region_critica() P1QE = false turno = 2 hace_mas_cosas() until fin

program 4 var bool: P1QE = false bool: P1QE = false proceso 1 repeat hace_cosas() P1QE = true while P2QE = true do{ P1QE = false delay(Quantum) P1QE = true } region_critica() P1QE = false hacer_mas_cosas() until fin

Resumen Dekker
Dekker 1 .. While turno = 2 do {} Region_critica() Turno = 2 .. Dekker 2

.. P1QE = true While P2QE do {} Region_critica() P1QE = false . Dekker 3 .. While P2EA do {} P1EA = true Region_critica() P1EA = false .. Dekker 4 P1QE = true While P2QE do { P1QE = false Delay(random) P1QE = true } Region_critica() P1QE = false .. Dekker 5 P1QE = true While P2QE do{ If(turno = 2){ P1QE = false Delay(random) P1QE = true } } Region_critica() P1QE = false Turno = 2

Referencias http://wwwdi.ujaen.es/~lina/TemasSO/port5.html [Pagina muy completa acerca de la concurrencia y las diferentes soluciones, muy intuitiva y ordenada] http://www.mitecnologico.com/Main/ConcurrenciaYSecuenciabilidad [Informacion detallada de la concurrencia, los tipos de concurrencias, las ventajas y desventajas] http://www.mitecnologico.com/Main/ExclusionMutuaSeccionesCriticas [Explicacion detallada de la exclusin mutua]

También podría gustarte