Condiciones de Carrera - Stalin Cárdenas

4
CONDICION DE CARRERA / RACE CONDITION Sistemas Operativos en Red I – Ing. Fernando Moya Stalin Cárdenas [Dirección de correo electrónico] Descripción breve Condición de carrera (del inglés race condition) es una expresión usada en electrónica y en programación. Múltiples procesos se encuentran en condición de carrera si el resultado de los mismos depende del orden de su ejecución.

description

Condición de carrera (del inglés race condition) es una expresión usada en electrónica y en programación. Múltiples procesos se encuentran en condición de carrera si el resultado de los mismos depende del orden de su ejecución.

Transcript of Condiciones de Carrera - Stalin Cárdenas

Condicion de Carrera / race condition

Sistemas Operativos en Red I Ing. Fernando MoyaUDLA - Redes y Telecomunicaciones

CONDICIONES DE CARRERA: Situaciones en las que dos o ms procesos leen o escriben en un rea de memoria compartida y el resultado final depende de los instantes de ejecucin de cada uno. La condicin de carrera (race condition) ocurre cuando dos o ms procesos accesan un recurso compartido sin control, de manera que el resultado combinado de este acceso depende del orden de llegada.Uno de los grandes problemas que nos podemos encontrar es que el hecho de compartir recursos est lleno de riesgos. Por ejemplo, si dos procesos hacen uso al mismo tiempo de una variable global y ambos llevan a cabo tanto operaciones de lectura como de escritura sobre dicha variable, el orden en que se ejecuten estas lecturas y escrituras es crtico, puesto que se ver afectado el valor de la variable.Esto se soluciona impidiendo que ms de un proceso acceda simultneamente a las variables compartidas. Se soluciona garantizando la exclusin mutua.Concepto de exclusin mutua.Consiste en que un solo proceso excluye temporalmente a todos los dems para usar un recurso compartido de forma que garantice la integridad del sistema.Concepto de seccin crtica.Es la parte del programa con un comienzo y un final claramente marcados que generalmente contiene la actualizacin de una o ms variables compartidas.Para que una solucin al problema de la exclusin mutua sea vlida, se tienen que cumplir una serie de condiciones:Hay que garantizar la exclusin mutua entre los diferentes procesos a la hora de acceder al recurso compartido. No puede haber en ningn momento dos procesos dentro de sus respectivas secciones crticas.No se deben hacer suposiciones en cuanto a la velocidad relativa de los procesos en conflicto.Ningn proceso que est fuera de su seccin crtica debe interrumpir a otro para el acceso a la seccin crtica.Cuando ms de un proceso desee entrar en su seccin crtica, se le debe conceder la entrada en un tiempo finito, es decir, que nunca se le tendr esperando en un bucle que no tenga final.Para solucionar el problema de la exclusin mutua vamos a tener tres tipos de soluciones: Soluciones software. Soluciones hardware. Soluciones aportadas por el Sistema Operativo.Soluciones hardware.Las soluciones hardware se dividen en dos tipos:Optimistas. Consideran que lo ms probable es que no haya conflictos, y si los hay sea en nmero reducido, por lo que permiten cualquier acceso a la variable compartida. En caso de conflicto, mantienen la integridad del sistema descartando las actualizaciones.Pesimistas. Bloquean todo aquello que pueda interferir. Actualizan la variable. Desbloquean lo bloqueado al principio.Soluciones del Sistema Operativo.Semforos.Semforos binarios.Dijkstra dio en 1968 una solucin elegante y sencilla al problema de la exclusin mutua con la introduccin del concepto de semforo binario. Esta tcnica permite resolver la mayora de los problemas de sincronizacin entre procesos y forma parte del diseo de muchos sistemas operativos y de lenguajes de programacin concurrentes.Un semforo binario es un indicador de condicin (S) que registra si un recurso est disponible o no. Un semforo binario slo puede tomar dos valores: O 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 slo permiten tres operaciones sobre ellos:Espera.Seal.Inicializar.El wait y el signal son indivisibles y no se pueden interrumpir, es decir, no se pueden ejecutar ambas a la vez.Los semforos binarios los utilizaremos para recursos de una sola instancia, y para sincronizacin binaria.Semforos generales. El semforo binario resulta adecuado cuando hay que proteger un recurso que pueden compartir varios procesos, pero cuando lo que hay que proteger es un conjunto de recursos similares, se puede usar una versin ms general del concepto de semforo que lleve la cuenta del nmero de recursos disponibles. En este caso el semforo se inicializa con el nmero total de recursos disponibles (n) y las operaciones de espera y seal se disean de modo que se impida el acceso al recurso protegido por el semforo cuando el valor de ste es menor o igual que cero. Cada vez que se solicita y obtiene un recurso, el semforo se decrece y se incrementa cuando se libera uno de ellos. Si la operacin de espera se ejecuta cuando el semforo tiene un valor menor que uno, el proceso debe quedar en espera de que la ejecucin de una operacin seal libere alguno de los recursos. Al igual que en los semforos binarios, la ejecucin de las operaciones son indivisibles, esto es, una vez que se ha empezado la ejecucin de uno de estos procedimientos se continuar hasta que la operacin se haya completado.Realizado por: Stalin CrdenasPgina 2 | 2