fbpx
Wikipedia

Condición de carrera

Condición de carrera o condición de secuencia (del inglés race condition) es una expresión usada en electrónica y en programación. Cuando la salida o estado de un proceso es dependiente de una secuencia de eventos que se ejecutan en orden arbitrario y van a trabajar sobre un mismo recurso compartido, se puede producir un error cuando dichos eventos no llegan (se ejecutan) en el orden que el programador esperaba. El término se origina por la similitud de dos procesos compitiendo en carrera por llegar antes que el otro, de manera que el estado y la salida del sistema dependerán de cuál llegó antes, pudiendo provocarse inconsistencias y comportamientos impredecibles y no compatibles con un sistema determinista. En determinados escenarios, la gran velocidad de ejecución de un hilo no es suficiente para garantizar que operaciones concurrentes den resultados esperados. Se pueden dar condiciones de carrera a nivel de proceso o incluso a nivel de sistema cuando éste está distribuido.

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.

A modo de ejemplos de alto nivel: un sistema mal diseñado de reserva de entradas podría ocasionar que dos usuarios accediendo desde la web a la vez, reserven legítimamente la misma butaca. O un sistema de conteo automático de plazas libres de una plaza de estacionamiento en sus barreras de entrada y salida de vehículos podría indicar que está totalmente vacío cuando realmente está lleno (o viceversa). De igual forma, dos personas ingresando y retirando efectivo a la vez de una misma cuenta bancaria podrían ver su saldo incrementado o por el contrario su ingreso realizado pero no materializado en saldo disponible. Si bien son situaciones que pudieran ser improbables, son posibles y pueden ser y han de ser evitadas en el desarrollo de software.

Si los procesos que están en condición de carrera son correctamente sincronizados, todo debería funcionar correctamente, por lo que el resultado será el esperado. Múltiples procesos se encuentran en condición de carrera si el resultado de los mismos depende del orden de su llegada, y si no son correctamente sincronizados puede producirse una corrupción de datos que puede derivar incluso en un problema de seguridad del sistema capaz de ser explotado de forma malintencionada. 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.

La naturaleza imprevisible de las condiciones de carrera da lugar en muchas ocasiones a la aparición de bugs de manera repentina que normalmente no ocurren durante el testeo de un software. Además, pueden ser difícilmente trazables, difícilmente replicables de manera controlada o visibles incluso con herramientas de depuración de programas.

Véase también

Enlaces externos

  • Starvation and Critical Race Analyzers for Ada
  • Paper "Algorithms for the Optimal State Assignment of Asynchronous State Machines" by Robert M. Fuhrer, Bill Lin and Steven M. Nowick
  • Paper "A Novel Framework for Solving the State Assignment Problem for Event-Based Specifications" by Luciano Lavagno, Cho W. Moon, Robert K. Brayton and Alberto Sangiovanni-Vincentelli
  • Article "Secure programmer: Prevent race conditions—Resource contention can be used against you" by David A. Wheeler
  • Chapter "" (Secure Programming for Linux and Unix HOWTO)
  • , with sample source code and comparison to C code, by Chiral Software
  •   Datos: Q616554

condición, carrera, condición, secuencia, inglés, race, condition, expresión, usada, electrónica, programación, cuando, salida, estado, proceso, dependiente, secuencia, eventos, ejecutan, orden, arbitrario, trabajar, sobre, mismo, recurso, compartido, puede, p. Condicion de carrera o condicion de secuencia del ingles race condition es una expresion usada en electronica y en programacion Cuando la salida o estado de un proceso es dependiente de una secuencia de eventos que se ejecutan en orden arbitrario y van a trabajar sobre un mismo recurso compartido se puede producir un error cuando dichos eventos no llegan se ejecutan en el orden que el programador esperaba El termino se origina por la similitud de dos procesos compitiendo en carrera por llegar antes que el otro de manera que el estado y la salida del sistema dependeran de cual llego antes pudiendo provocarse inconsistencias y comportamientos impredecibles y no compatibles con un sistema determinista En determinados escenarios la gran velocidad de ejecucion de un hilo no es suficiente para garantizar que operaciones concurrentes den resultados esperados Se pueden dar condiciones de carrera a nivel de proceso o incluso a nivel de sistema cuando este esta distribuido Condicion de carrera en un circuito logico t1 y t2 representan el retardo de propagacion de los elementos logicos Cuando el valor de entrada A cambia el circuito genera en la salida un pico de duracion t1 t2 t2 t1 A modo de ejemplos de alto nivel un sistema mal disenado de reserva de entradas podria ocasionar que dos usuarios accediendo desde la web a la vez reserven legitimamente la misma butaca O un sistema de conteo automatico de plazas libres de una plaza de estacionamiento en sus barreras de entrada y salida de vehiculos podria indicar que esta totalmente vacio cuando realmente esta lleno o viceversa De igual forma dos personas ingresando y retirando efectivo a la vez de una misma cuenta bancaria podrian ver su saldo incrementado o por el contrario su ingreso realizado pero no materializado en saldo disponible Si bien son situaciones que pudieran ser improbables son posibles y pueden ser y han de ser evitadas en el desarrollo de software Si los procesos que estan en condicion de carrera son correctamente sincronizados todo deberia funcionar correctamente por lo que el resultado sera el esperado Multiples procesos se encuentran en condicion de carrera si el resultado de los mismos depende del orden de su llegada y si no son correctamente sincronizados puede producirse una corrupcion de datos que puede derivar incluso en un problema de seguridad del sistema capaz de ser explotado de forma malintencionada Analogamente en circuitos electronicos se da una condicion de carrera cuando la salida de un sistema o subsistema depende del orden en que se hayan mandado las solicitudes de activacion o desactivacion de sus componentes La naturaleza imprevisible de las condiciones de carrera da lugar en muchas ocasiones a la aparicion de bugs de manera repentina que normalmente no ocurren durante el testeo de un software Ademas pueden ser dificilmente trazables dificilmente replicables de manera controlada o visibles incluso con herramientas de depuracion de programas Vease tambien EditarControl de concurrencia Bloqueo mutuoEnlaces externos EditarStarvation and Critical Race Analyzers for Ada VHDL example Paper Algorithms for the Optimal State Assignment of Asynchronous State Machines by Robert M Fuhrer Bill Lin and Steven M Nowick Paper A Novel Framework for Solving the State Assignment Problem for Event Based Specifications by Luciano Lavagno Cho W Moon Robert K Brayton and Alberto Sangiovanni Vincentelli Article Secure programmer Prevent race conditions Resource contention can be used against you by David A Wheeler Chapter Avoid Race Conditions Secure Programming for Linux and Unix HOWTO Race conditions security and immutability in Java with sample source code and comparison to C code by Chiral Software Interview with Dmitriy Vyukov the author of Relacy Race Detector RRD Datos Q616554 Obtenido de https es wikipedia org w index php title Condicion de carrera amp oldid 141395002, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos