Verifying Correctness of Shared Channels in a Cooperatively Scheduled Process-Oriented Language
Pedersen, Chalmers
Correct concurrent behaviour is important in understanding how components will act within certain conditions. In this work. we analyse the behaviour of shared communicating channels within a coorporatively scheduled runtime. We use the refinement checking and modelling tool FDR to develop both specifications of how such shared channels should behave and models of the implementations of these channels in the cooperatively scheduled language ProcessJ. Our results demonstrate that although we can certainly implement the correct behaviour of such channels, the outcome is dependant on having adequate resources available to execute all processes involved. We conclude that modelling the runtime environment of concurrent components is necessary to ensure components behave as specified in the real world.
academic
Verificación de Corrección de Canales Compartidos en un Lenguaje Orientado a Procesos con Planificación Cooperativa
Este artículo analiza el comportamiento de canales de comunicación compartidos en entornos de ejecución con planificación cooperativa. La investigación utiliza la herramienta de verificación formal FDR para desarrollar especificaciones del comportamiento de canales compartidos y modelos de implementaciones de canales en el lenguaje ProcessJ. Los resultados demuestran que, aunque es posible implementar el comportamiento correcto de canales, los resultados dependen de tener recursos suficientes para ejecutar todos los procesos relacionados. La investigación concluye que modelar el entorno de ejecución de componentes concurrentes es necesario para garantizar que los componentes se comporten según la especificación en el mundo real.
Importancia de la corrección del software concurrente: El comportamiento correcto de sistemas concurrentes es crucial para comprender cómo se ejecutan los componentes bajo condiciones específicas. Aunque los métodos de prueba tradicionales se utilizan ampliamente, pueden no detectar todos los errores potenciales de concurrencia.
Necesidad de verificación formal: Los autores utilizan el software del explorador de Marte como ejemplo, demostrando que un simple error de bloqueo mutuo podría requerir esperar 8 millones de segundos (más de 90 días) para tener una probabilidad del 50% de ser detectado mediante pruebas, mientras que la verificación formal utilizando CSP y FDR puede detectar tales errores inmediatamente.
Desafíos en la verificación del sistema de ejecución: Dado que numerosos programas se construyen sobre sistemas de ejecución de lenguajes de programación, garantizar que el sistema de ejecución sea correcto y se comporte según la especificación se vuelve crítico.
Ignorancia del entorno de ejecución: Los métodos tradicionales de verificación basados en sistemas de canales no modelan el sistema de ejecución, el sistema de ejecución, el hardware y otros factores, asumiendo que los eventos listos permanecerán disponibles hasta ser planificados.
Suposición de escasez de recursos: Los métodos de modelado estándar asumen que los eventos pueden ocurrir inmediatamente, lo que significa que los recursos están disponibles al ejecutar eventos, pero esta suposición extrema no se sostiene en la realidad.
Impacto del entorno de planificación: Los procesos deben esperar ser planificados al final de la cola de listos, sus eventos no estarán inmediatamente disponibles, pero los métodos tradicionales no consideran esta situación.
ProcessJ es un lenguaje de programación orientado a procesos basado en semántica CSP que utiliza planificación cooperativa y se ejecuta en la JVM. Este artículo tiene como objetivo verificar la corrección de la implementación de canales compartidos en el tiempo de ejecución de ProcessJ, enfocándose particularmente en cómo el entorno de planificación afecta el comportamiento de los canales.
Verificación de la corrección de la implementación de canales compartidos de ProcessJ: Se demuestra que la implementación de canales compartidos de ProcessJ utilizando el planificador cooperativo existente es correcta, verificando que se comporta como se espera mediante la verificación de refinamiento de traducción CSP y el modelo de canal compartido genérico.
Desarrollo de prueba algebraica extendida de la especificación de canales compartidos: Se proporciona una prueba formal de que la especificación de canales compartidos se comporta efectivamente como canales compartidos CSP.
Demostración adicional de la relación entre recursos y procesos activos: Se vuelve a demostrar la relación entre recursos disponibles y cantidad de procesos activos para satisfacer la especificación, probando que la cantidad de planificadores disponibles debe ser igual o mayor que la cantidad de procesos en el sistema para obtener refinamiento en ambas direcciones entre la especificación y el modelo.
La tarea central de este artículo es verificar la corrección de la implementación de canales compartidos en el lenguaje ProcessJ. Esto incluye específicamente:
Entrada: Código de implementación Java de canales compartidos de ProcessJ y especificación CSP
Salida: Resultados de verificación que demuestran si la implementación se ajusta a la especificación
Restricciones: Considerar limitaciones de recursos en el entorno de planificación cooperativa
A diferencia de los métodos tradicionales, este artículo modela explícitamente el planificador cooperativo durante el proceso de verificación, permitiendo descubrir problemas que solo aparecen bajo condiciones de planificación específicas.
Mediante la variación de la cantidad de planificadores, se estudió cómo cambia el comportamiento del sistema bajo diferentes configuraciones de recursos, descubriendo la relación entre suficiencia de recursos y corrección.
Teorema de Suficiencia de Recursos: Cuando la cantidad de planificadores es igual o mayor que el número total de procesos, se puede lograr refinamiento en ambas direcciones en el modelo de fallos.
Impacto de Recursos Insuficientes:
Con planificadores insuficientes, solo se puede obtener refinamiento de trazas, no refinamiento de fallos
Esto no significa que el sistema se bloquee, sino que ciertas trazas ya no son realizables
Impacto de la Cola de Planificación: La cola de ejecución impone un orden natural en los procesos, cuando los planificadores son insuficientes, el conjunto de aceptación de ciertos procesos no se incluirá en el conjunto de aceptación general del sistema.
Primera consideración del entorno de planificación: Modela explícitamente el planificador cooperativo en la verificación
Descubrimiento de problemas relacionados con la planificación: Puede detectar problemas como bloqueos activos que solo aparecen bajo condiciones de planificación específicas
Verificación consciente de recursos: Cuantifica la relación entre requisitos de recursos y corrección
Corrección de la Implementación: La implementación de canales compartidos de ProcessJ es correcta cuando hay planificadores suficientes.
Dependencia de Recursos: El comportamiento correcto depende de tener recursos de planificación suficientes para ejecutar todos los procesos relacionados.
Necesidad de Modelado: Modelar el entorno de ejecución es necesario para garantizar que los componentes se comporten según la especificación en el mundo real.
Lenguajes de Programación Orientados a Procesos: Particularmente adecuado para verificación de tiempo de ejecución de lenguajes basados en semántica CSP
Sistemas de Planificación Cooperativa: Puede aplicarse a otros sistemas concurrentes que utilizan planificación cooperativa
Desarrollo de Sistemas Críticos: Adecuado para desarrollo de sistemas concurrentes con requisitos extremadamente altos de corrección
Este artículo cita 51 referencias relacionadas, que incluyen principalmente:
Teoría Fundamental de CSP: Obras clásicas de Hoare sobre CSP y teoría relacionada
Herramientas de Verificación Formal: Herramienta FDR y métodos de verificación relacionados
Lenguajes de Programación Concurrente: Investigación relacionada sobre JCSP, occam-π, Go, Erlang y otros lenguajes
Algoritmos de Planificación: Trabajos relacionados sobre algoritmos de exclusión mutua y concurrencia
Trabajos Anteriores de los Autores: Serie de investigaciones sobre verificación de tiempo de ejecución de ProcessJ
Resumen: Este artículo realiza contribuciones importantes en el campo de la verificación formal, particularmente en la verificación de sistemas concurrentes que consideran el entorno de ejecución. Aunque tiene algunas limitaciones, sus métodos y hallazgos tienen valor importante para mejorar la confiabilidad de sistemas concurrentes.