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
Проверка корректности общих каналов в языке, ориентированном на процессы, с кооперативным планированием
В данной статье анализируется поведение общих каналов связи в среде выполнения с кооперативным планированием. Исследование использует инструмент формальной верификации FDR для разработки спецификаций поведения общих каналов и моделей реализации каналов в языке ProcessJ. Результаты показывают, что хотя корректное поведение каналов может быть реализовано, результаты зависят от наличия достаточных ресурсов для выполнения всех соответствующих процессов. Исследование приходит к выводу, что моделирование среды выполнения компонентов параллелизма необходимо для обеспечения того, чтобы компоненты в реальном мире вели себя в соответствии со спецификацией.
Важность корректности параллельного программного обеспечения: Корректное поведение параллельных систем имеет решающее значение для понимания того, как компоненты работают в конкретных условиях. Хотя традиционные методы тестирования широко используются, они могут не выявить все потенциальные ошибки параллелизма.
Необходимость формальной верификации: Авторы приводят пример программного обеспечения марсохода, показывая, что простая ошибка взаимоблокировки может потребовать ожидания 8 миллионов секунд (более 90 дней) для 50% вероятности обнаружения при тестировании, тогда как формальная верификация с использованием CSP и FDR может обнаружить такие ошибки немедленно.
Вызовы верификации систем выполнения: Поскольку большое количество программ построено на основе систем выполнения языков программирования, обеспечение того, чтобы система выполнения была без ошибок и вела себя в соответствии со спецификацией, становится критически важным.
Игнорирование среды выполнения: Традиционные методы верификации систем на основе каналов не моделируют систему выполнения, систему исполнения, аппаратное обеспечение и другие факторы, предполагая, что события готовности остаются доступными до их планирования.
Предположение об изобилии ресурсов: Стандартные методы моделирования предполагают, что события могут происходить немедленно, что означает, что ресурсы доступны при выполнении события, но такое экстремальное предположение не соответствует действительности.
Влияние среды планирования: Процессы должны ждать в конце очереди готовности, чтобы быть запланированными, их события не будут немедленно доступны, но традиционные методы не учитывают это.
ProcessJ — это язык программирования, ориентированный на процессы, основанный на семантике CSP, использующий кооперативное планирование и работающий на JVM. Данная статья направлена на верификацию корректности реализации общих каналов в среде выполнения ProcessJ, особенно с учетом влияния среды планирования на поведение каналов.
Верификация корректности реализации общих каналов ProcessJ: Доказано, что реализация общих каналов ProcessJ с использованием существующего планировщика с кооперативным планированием является корректной, что подтверждено проверкой уточнения трансляции CSP и универсальной модели общего канала.
Разработка расширенного алгебраического доказательства спецификации общих каналов: Предоставлено формальное доказательство того, что спецификация общих каналов действительно ведет себя как общий канал CSP.
Дополнительное доказательство связи между ресурсами и активными процессами: Повторно продемонстрирована связь между доступными ресурсами и количеством активных процессов для удовлетворения спецификации, доказано, что для получения уточнения в обоих направлениях между спецификацией и моделью количество доступных планировщиков должно быть больше или равно количеству процессов в системе.
SCHEDULER =
rqdequeue?p → -- извлечение процесса из очереди
run.p → -- его выполнение
yield.p → -- ожидание передачи управления
SCHEDULER -- рекурсия
SCHEDULE_MANAGER =
schedule?pid → -- ожидание события планирования
rqenqueue!pid → -- помещение процесса в очередь выполнения
SCHEDULE_MANAGER -- рекурсия
В отличие от традиционных методов, данная работа явно моделирует планировщик с кооперативным планированием в процессе верификации, что позволяет выявить проблемы, возникающие только при определенных условиях планирования.
Путем варьирования количества планировщиков исследовано изменение поведения системы при различных конфигурациях ресурсов, обнаружена связь между достаточностью ресурсов и корректностью.
Теорема о достаточности ресурсов: Когда количество планировщиков равно или превышает общее количество процессов, можно достичь уточнения в обоих направлениях в модели failures.
Влияние недостатка ресурсов:
При недостатке планировщиков можно получить только уточнение traces, а не failures
Это не означает, что система будет в тупике, а скорее, что некоторые traces больше не реализуемы
Влияние очереди планирования: Очередь выполнения налагает естественный порядок на процессы, и при недостатке планировщиков набор принятия некоторых процессов не будет включен в общий набор принятия системы.
Первое рассмотрение среды планирования: Явное моделирование планировщика с кооперативным планированием при верификации
Выявление проблем, связанных с планированием: Способность обнаруживать живые блокировки и другие проблемы, возникающие только при определенных условиях планирования
Верификация с учетом ресурсов: Количественное определение связи между потребностями в ресурсах и корректностью
Корректность реализации: Реализация общих каналов ProcessJ является корректной при наличии достаточного количества планировщиков.
Зависимость от ресурсов: Корректное поведение зависит от наличия достаточных ресурсов планирования для выполнения всех соответствующих процессов.
Необходимость моделирования: Моделирование среды выполнения компонентов параллелизма необходимо для обеспечения того, чтобы компоненты в реальном мире вели себя в соответствии со спецификацией.
Статья ссылается на 51 связанную работу, включая главным образом:
Основная теория CSP: Классические работы Хоара по CSP и соответствующая теория
Инструменты формальной верификации: Инструмент FDR и связанные методы верификации
Языки параллельного программирования: Связанные исследования языков JCSP, occam-π, Go, Erlang и т.д.
Алгоритмы планирования: Связанные работы по алгоритмам взаимного исключения и параллельным алгоритмам
Предыдущие работы авторов: Серия исследований по верификации среды выполнения ProcessJ
Резюме: Данная статья вносит важный вклад в область формальной верификации, особенно в верификацию параллельных систем с учетом среды выполнения. Хотя существуют некоторые ограничения, ее методология и выводы имеют важное значение для повышения надежности параллельных систем.