Обработка исключений в режиме реального времени - PullRequest
0 голосов
/ 29 января 2010

Как всегда после некоторых исследований, я не смог найти ничего по-настоящему ценного. Мой вопрос: как можно обрабатывать исключения в системе реального времени? Поскольку сбой программы, как правило, не самый лучший случай, то есть ядерный реактор / кардиомонитор.

Хорошо, так как все потерялись на второй части этого, которая не имела никакого отношения к основному вопросу. У меня было это, чтобы показать, как я обычно экранирую блоки кода.

Ответы [ 3 ]

2 голосов
/ 29 января 2010

В системе типа «ядерный реактор», работающей в режиме реального времени, есть вероятность, что обработка исключений позволяет системе вместо сбоя сделать следующее лучшее.

Допустим, у нас есть монитор сердца. Если он не получает сигнал, это может вызвать исключение. В этом случае сердечный монитор может обработать исключение, подождав несколько секунд и повторив попытку.

В ядерном реакторе достижение определенной температуры может вызвать исключение. В этом случае манипуляция может отключить различные части реактора, чтобы начать охлаждать его, а затем запустить их снова, когда он достигнет разумной температуры.

Исключения означают, что система более низкого уровня говорит, что она не знает, что делать, и система более высокого уровня обрабатывает это. Как и в ядерном реакторе, система, которая измеряет температуру, вероятно, не знает, как включить части реактора, поэтому она вызывает исключение, чтобы какая-то система более высокого уровня могла справиться с этим.

2 голосов
/ 01 февраля 2010

Обработка исключений в системах реального времени / встроенных системах имеет несколько уровней. Не только поддерживаемые языком опции, но также MMU, исключения CPU и один из моих любимых: watchdogs.

Языковые исключения (C / C ++) - не часто используется, потому что трудно доказать, что все исключения обрабатываются на правильном уровне. Также довольно сложно определить, какая угроза / процесс должна нести ответственность. Вместо этого предпочтительным является программирование по контракту.

Стиль программирования: - то есть программирование по контракту. Дополнительные ограничения: Misra / C Misra / C ++. Это можно проверить, чтобы убедиться, что все возможные случаи так или иначе обрабатываются. (т. е. нет, если без других)

Аппаратная поддержка: - MMU: использование нескольких процессов, которые защищены друг от друга. Это позволяет - сторожевая собака - исключения процессора - многоядерный: использование нескольких ядер для отделения основных процессов от остальных. Также позволяет иметь механизмы голосования (вы хотите это и многое другое для вашего ядерного реактора). - мультисистемный

Самое важное - определить стратегию. В зависимости от других нефункциональных требований (безопасность, надежность, безопасность) необходимо продумать стратегию. Может быть постепенное снижение частичной перезагрузки системы.

0 голосов
/ 29 января 2010

Критическая система похожа на любую другую систему, за исключением того, что она более четко указана, проходит больше этапов тестирования и, как правило, является отказоустойчивой.

Что касается вашей формы, да, это довольно плохо. Я очень против отсутствия {}; и так часто говорят, что это просто плохой стиль и приводит к путанице при добавлении нового кода.

...