Condición de carrera

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Condición de carrera en un circuito lógico. ∆t1 y ∆t2 representan el retardo de propagación de los elementos lógicos. Cuando el valor de entrada (A) cambia, el circuito genera en la salida un pico de duración (∆t1+∆t2) - ∆t2 = ∆t1.

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 tiempo que estén esperando para acceder a un recurso compartido, por lo que se turnarán de manera equitativa por orden de llegada (similar a un FIFO). Si los procesos que están en condición de carrera son correctamente sincronizados, todo debería funcionar correctamente, por lo que es óptimo.[Aclaración requerida] Múltiples procesos se encuentran en condición de carrera si el resultado de los mismos depende del orden de su llegada. Si los procesos que están en condición de carrera no son correctamente sincronizados, puede producirse una corrupción de datos, que puede ser aprovechada por exploits locales para vulnerar los sistemas. Análogamente, en circuitos electrónicos se da una condición de carrera cuando la salida de un sistema o subsistema depende del orden en que se hayan mandado las solicitudes de activación o desactivación de sus componentes.

Una condición de carrera se da principalmente cuando varios procesos acceden al mismo tiempo y cambian el estado de un recurso compartido según el orden de su llegada (por ejemplo una variable), obteniendo de esta forma un valor que se podrá editar con facilidad, que puede ser aprovechada por exploits locales para vulnerar los sistemas. Análogamente, en circuitos electrónicos se da una condición de carrera cuando la salida de un sistema o subsistema depende del orden en que se los elementos vayan entrando al sistema.

Véase también[editar]

Enlaces externos[editar]