Расписание задачи на точные периоды в Linux или Windows - PullRequest
4 голосов
/ 22 июля 2011

У меня странный вопрос.Я хотел бы знать, возможно ли создать программу на C / C ++, которая будет работать в Linux или Windows и будет подключать обработчик прерываний к системному таймеру, установленному на определенный период (например, 2000 раз в секунду), и я хочу этопрерывание должно быть с наивысшим приоритетом, это означает, что оно должно выполняться каждые полмисекунды, и при выполнении оно не должно прерываться.

Это мы сделали с MS-DOS с Borland Turbo C 3.1.У нас есть интерфейсная карта (наша), которая работает на слоте ISA.Каждую половину миллисекунды наша программа считывает состояние электроники, которая управляет производственным процессом через интерфейс.Это работало для нас в течение последних 15 лет, но у нас заканчиваются материнские платы с ISA-слотом, поэтому мы ищем новые решения.

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

Я предполагаю, что есть некоторые настроенные ядра Linux для встроенных приложений, поэтому я ищу некоторые источники, с которыми мы можем начать экспериментировать.

Ответы [ 3 ]

6 голосов
/ 22 июля 2011

Да, вы можете сделать это в MS-DOS, потому что это не многопользовательская или многозадачная операционная система.Тем не менее, то же самое будет не работать в Windows, потому что является многопользовательской и многозадачной операционной системой.Это также не в режиме реального времени, что означает, что нет никакой гарантии, что ваша задача будет выполнена точно , когда вы попросите ее выполнить.Все заранее запланировано, что означает, что любое количество других процессов и задач (пользовательского или системного уровня) может эффективно «сбить» ваш процесс в списке приоритетов и заставить его ждать выполнения до тех пор, пока эти другие задачи не будут выполнены.или сами были прерваны, чтобы дать вашему процессу возможность некоторое время работать.

Я не знаю о Linux, но я думаю, что большинство основных дистрибутивов написаны аналогично Windows.

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

В качестве альтернативы, вы можете продолжить использовать MS-DOS (или альтернативы, такие как FreeDOS), нопереключиться на другую технологию интерфейса, которая доступна на более новых платах.Нет причин обновлять что-то, что работает для вас, особенно если эти обновления не приносят вашей цели.

2 голосов
/ 22 июля 2011

Типичная ОС, такая как стандартный Linux или Windows, не предназначена и не сможет работать с такой степенью точности и доступности в реальном времени.

Мне кажется, что вам нужно исследовать Linux реального времени или подобный.

RTLinux - это модифицированная версия ядра Linux, разработанная для работы в режиме реального времени, особенно для таких приложений, как эта.

Надеюсь, это поможет.

0 голосов
/ 22 июля 2011

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

Тем не менее, посмотрите на этот документ , где авторы приходят к выводу, чтопланирование в миллисекундах в Linux возможно на обычном оборудовании.

...