Я знаю, что могу синхронизировать связь с помощью семафоров. Я говорю не об этом.
Рассмотрим сценарий:
- часть жесткого диска требует связи каждые 1 мс. (+- 10000 нс).
- Процесс 1 выполняется с периодом 1 мс в рамках SCHED_DEADLINE.
- Процесс 2 запускается и также выполняется с периодом. составляет 1 мс при SCHED_DEADLINE, но смещается от процесса 1 на 0,5 мс.
- Процесс 1 просыпается, но должен подождать 0,5 мс, чтобы процесс 2 был готов к обмену данными.
Для интересующихся: оборудование в этом случае основано на EtherCAT и использует распределенные часы (DC). Джиттер в 1 временной шаг приведет к десинхронизации постоянного тока, заставляя его повторно синхронизироваться. Время повторной синхронизации составляет около 7 секунд. Я действительно хочу избежать этого штрафа по времени, поскольку человек будет взаимодействовать с системой, а обычные задержки в 7 секунд неприемлемы.
Я пробовал использовать семафоры, чтобы настроить планировщик задач на второй процесс. в специально синхронизированное время с первым процессом. Это не позволило синхронизировать периоды задач достаточно близко.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ine-on-lin