¿Qué es una afección sensible?

Juice Dash / Shutterstock.com

¿Has corrido alguna vez una carrera? Si es así, ¡ya sabes que a veces se necesita un acabado fotográfico para elegir al ganador! Pero, ¿qué pasa si dos personas llegan a la meta al mismo tiempo? Bienvenidos a las condiciones de carrera.

Cuáles son Discusiones informáticas?

Para explicar una condición de carrera, primero debemos comprender un poco cómo funcionan las computadoras internamente. Cuando usa un sistema operativo, realiza varias acciones, como abrir una ventana de terminal de comando, abrir un navegador, etc. Cualquiera de estas acciones resultará en una reacción del sistema operativo para iniciar un nuevo proceso de computación / computadora.

Un hilo es un proceso de computadora / computadora que ejecutará / ejecutará los diversos pasos (pasos de programación, originalmente escritos en formato de código fuente y compilados regularmente por un compilador) necesarios para realizar la tarea que le solicitó al sistema operativo o al software que ejecuta en él. .

En Linux, este hilo se identifica de forma única por un PID (Identificador de proceso). Para obtener más información sobre los PID en Linux, puede leer nuestros artículos Bash Automation and Scripting Basics (Part 3) y How Linux Signals Work: SIGINT, SIGTERM y SIGKILL.

En Windows, un hilo también se identifica de forma única mediante un ID de proceso (Ref. PID columna en el Administrador de tareas de Windows), aunque la implementación de la gestión de procesos es diferente entre Linux y Windows; código subyacente diferente, diferente PID herramientas de interacción, etc. y compatibilidad limitada. Además, el ID del proceso de Windows PID no debe confundirse con el ID del producto PID (mismo término, significado diferente) o EN (Id. De vendedor). Los dos últimos se relacionan con la identificación de dispositivos y no con la gestión de procesos.

Cuando se inicia un hilo, él mismo puede iniciar otros hilos. El hilo original a menudo se denomina hilo principal o padre. Por ejemplo, cuando hace clic en el icono de su navegador web favorito, un hilo (el hilo principal) se iniciará inmediatamente y ese hilo iniciará muy rápidamente varios subprocesos, o hilos secundarios, y luego se convertirá en el hilo principal.

También puede pensar en argumentos como corredores en una carrera. Por ejemplo, piense en un servidor de base de datos ocupado que atiende a muchos clientes conectados diferentes. Cada uno de estos subprocesos del cliente (tenga en cuenta el uso de la palabra subproceso) tendrá (en muchos casos) al menos un subproceso en el servidor host de la base de datos y / o dentro del propio software de la base de datos (es decir, dos subprocesos, uno registrado en el sistema operativo y uno dentro del software de la base de datos).

El servidor de la base de datos está tratando de servir todos esos subprocesos al mismo tiempo, de ahí el término procesos concurrentes o hilos concurrentes y si hay errores en el software de la base de datos (o en el sistema operativo, etc.), tarde o temprano puede enfrentar una condición de carrera.

¿Qué es un? Condición de carrera?

Una manera fácil de relacionar esto con los corredores que corren en una carrera es imaginar un final fotográfico en el que dos corredores cruzan la línea de meta al mismo tiempo. Es posible, aunque bastante improbable, que esto suceda en las razas humanas. Para las computadoras que procesan miles de operaciones por milisegundo, se vuelve mucho más factible.

Como otro ejemplo, imagine una carrera de relevos en la que los corredores pasan un testigo (el palo de colores llamativos) de una persona a otra. Ahora imagina que uno de los participantes de la carrera se equivoca y ahora hay dos corredores que piensan que necesitan hacerse con el testigo rojo.

Un hecho significativo en una carrera de relevos es el paso de la batuta, ya que esto puede significar que el dueño anterior de la batuta puede dejar de correr, y ahora le toca al nuevo dueño de la batuta dar lo mejor de sí mismo. Ahora hay dos corredores agarrando el testigo. Será una situación interesante de ver en televisión (si te gusta ese tipo de cosas), pero está claro que habrá una cierta cantidad de consecuencias.

En esencia, una condición de carrera es un error, error o falla en el código del sistema informático que produce resultados impredecibles: una secuencia inesperada de eventos. Normalmente es causado por dos subprocesos que entran en conflicto de alguna manera en más de dos subprocesos que pueden estar involucrados en el conflicto real y, a menudo, más de dos subprocesos se ejecutan en un error de software.

En nuestro ejemplo de la raza humana, teníamos dos personas accediendo a un objeto aproximadamente al mismo tiempo y el corrupción (término de computadora para indicar que algunos datos estaban corruptos, donde esos datos podrían residir en la memoria o en el disco o en la CPU, etc.) sucedió cuando dos personas (o dos hilos en analogía con la computadora) intentaron capturar al testigo y al Ocurrió un conflicto. En términos de computación, dos subprocesos intentaron escribir un espacio de memoria que normalmente solo debería ser escrito por un subproceso (un corredor).

Las condiciones de carrera pueden ocurrir en diversas áreas, como la electrónica, el software de computadora y la vida en general. Por ejemplo, una colisión de llamadas es un término de telecomunicaciones para describir la situación en la que un canal de comunicación está ocupado en ambos extremos al mismo tiempo. Dentro del software de computadora, una de las áreas más importantes de las condiciones de carrera, es posible una amplia variedad de condiciones de carrera.

Como otro ejemplo de una condición de carrera dentro del software de computadora, imagine dos subprocesos de procesamiento trabajando con un espacio de memoria dado. Un usuario acaba de confirmar un módulo y el software de backend está escribiendo este módulo en la memoria. Al mismo tiempo, otro usuario está leyendo los campos de este formulario desde el mismo espacio de memoria. Dependiendo de lo que suceda, el usuario que lee puede recibir un formulario parcialmente incorrecto con información parcialmente actualizada.

Previniendo las condiciones de licitación: Seguridad del alambre

Se ha debatido mucho sobre las condiciones de licitación en el sector de las tecnologías de la información. Dependiendo del lenguaje de codificación utilizado, puede haber disposiciones limitadas o ampliadas para la gestión de las condiciones de la licitación. Un término de uso frecuente es seguridad del cable o un a salvo de amenazas aplicación o lenguaje de programación [construct]. Estos términos se utilizan para indicar si un fragmento de código o software en su conjunto es a salvo de amenazas, es decir, redactada de tal forma que se eviten e incluso se prevengan las condiciones de competencia.

Si el software se considera a salvo de amenazas, se considera exento de la posibilidad de condiciones de licitación. En muchos casos, 'consideradoLa seguridad para subprocesos es lo mejor que pueden ofrecer los desarrolladores, y más aún cuando son posibles muchos subprocesos e interacciones. La complejidad de muchos subprocesos que trabajan con muchos recursos puede convertirse fácilmente en una miríada de gestión de código y una miríada aún mayor de posibles condiciones de carrera.

Se pueden usar varias construcciones de programación para evitar condiciones de carrera. Por ejemplo, semáforos y mutex. La complejidad del uso de estas construcciones dependerá del lenguaje de programación utilizado y su soporte nativo para una mejor gestión de subprocesos. Por ejemplo, en C ++ puede mirar el std :: mutex clase para la implementación de un mutex (p. ej. son mutuamente excluyentes) cerradura de la puerta. En Bash, sin embargo, tal construcción no se encuentra de forma nativa.

Yendo más allá, también se puede considerar qué construcciones, funciones o incluso ejecutables y bibliotecas en particular ya son seguras para subprocesos, y luego usar esas construcciones, funciones, ejecutables y bibliotecas como base para construir una nueva construcción, función, ejecutable, biblioteca o software. paquete completo.

Implementar incluso construcciones básicas de administración seguras para subprocesos puede ser un asunto complejo. Por ejemplo, considere la dificultad de implementar un semáforo en Bash.

Terminando

En este artículo, hemos explorado los hilos de cálculo y las condiciones de carrera. Observamos las similitudes con las carreras y las carreras de relevos en la vida humana para explorar algunas condiciones básicas de las carreras que pueden ocurrir dentro de las computadoras. Finalmente, exploramos la seguridad de los subprocesos, las diferentes implementaciones de la gestión de condiciones de carrera en lenguajes de codificación de computadora y cómo podemos prevenir las condiciones de carrera.

Si le gustó este artículo, consulte Cómo funcionan las puertas lógicas: artículo OR, AND, XOR, NOR, NAND, XNOR y NOT.

¿Qué te ha parecido?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir