реклама на сайте
подробности

 
 
> Прецизионный таймер в Linux, Нужен таймер менее 10mS
vzn
сообщение Apr 6 2006, 08:39
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 32
Регистрация: 1-07-05
Пользователь №: 6 454



Добрый день.
Подскажите как в Linux можно реализовать посылку сигнала SIGALRM в мое приложение с периодом
порядка 100us(микросекунд).

Настройка обычного таймера в Linux согласно man предполагает минимальный период 10 ms.

Вариант с перекомпиляцией ядра для уменьшения времени отклика не подходит.

Какие еще могут быть способы реализовать таймер?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Olej
сообщение Apr 6 2006, 11:33
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(vzn @ Apr 6 2006, 11:39) *
Вариант с перекомпиляцией ядра для уменьшения времени отклика не подходит.
Какие еще могут быть способы реализовать таймер?


Если бы wink.gif ... ваш вариант гораздо хуже, чем просто перекомпиляция ядра sad.gif :
- все службы времени ОС привязаны к системному тику (timeslice)...
- это не совсем то же, что интервал (о чём говорили здесь: HZ=100) решедулирования (например в QNX6 интервал решедулирования = 4 * timeslice и изменить это никакими силами нельзя), но они могут и совпадать ... не помню что там в Linux...;
- но если вы и уменьшите интервал до T, то, согласно требованиям POSIX 1003b (realtime расширения) - время срабатывания временных интервалов минимальное будет 3T ... с большой вероятностью wink.gif, иногда - 2T (это всё объясняется, но не место здесь это делать);
- итого, вам нужно было бы уменьшить timeslice как минимум до 30мкс (в 300 раз)...
- при этом решедулирование и всё обслуживание системного времени участиться в 300 раз ... и в разы завалит вам итоговую производительность системы...

Цитата(makc @ Apr 6 2006, 12:08) *
Если хотите сделать задержки меньше, то можете попытаться организовать отдельный поток и вызывать в нем функцию usleep, которая может приостанавливать выполнение (давать задержку) на заданное число микросекунд.


Не поможет wink.gif - все события в системе, разделённые интервалом времени меньше timeslice - неразличимы и выглядят так, как если бы они произошли в одной точке времени.


Чем делу можно помочь?

Можете попробовать использовать другой задатчик времени: RTC (который на IRQ8 сидит а не на IRQ0) ... можете об этих делах почитать здесь:
http://qnx.org.ru/index.php?option=com_min...273&page=0.html
http://en.wikipedia.org/wiki/Real-time_clock
А вот здесь:
ftp://ftp.qnx.org.ru/pub/projects/ed1k/clock.tgz
- лежит давненько уже написанная статья, одним знакомым, где с полным программным кодом показывается и объясняется как это делается... Только тягомутина всё это организовать - "ещё та" wink.gif, и есть смысл этим заниматься, только если действительно нужно и ничего другого придумать нельзя.

P.S. но, кстати, использование любого внешнего аппаратного источника, как здесь предлагали, программно не будет проще, т.к. RTC и есть уже такой источник.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- vzn   Прецизионный таймер в Linux   Apr 6 2006, 08:39
- - appsoft   Думаю реализовать такой таймер средствами Linux не...   Apr 6 2006, 09:08
- - makc   В ядре Линукса есть определение макроса HZ=100, ко...   Apr 6 2006, 09:08
- - yanich   Цитата(vzn @ Apr 6 2006, 12:39) Добрый де...   Apr 6 2006, 10:07
|- - Olej   Цитата(vzn @ Apr 6 2006, 12:39) Подскажит...   Apr 6 2006, 11:46
- - sensor_ua   Может, поможет http://www.ittc.ku.edu/kurt/   Apr 6 2006, 11:20
- - Harbour   Попытки вытянуть за уши из non-rt реализации rt за...   Apr 6 2006, 19:08
|- - Olej   Цитата(Harbour @ Apr 6 2006, 22:08) Попыт...   Apr 7 2006, 07:21
- - Harbour   Да ну ? Есть такая фигня как гарантированный deadl...   Apr 7 2006, 08:53
|- - Olej   Цитата(Harbour @ Apr 7 2006, 11:53) Да ну...   Apr 7 2006, 09:49
|- - vzn   Спасибо всем за дельные советы. Пока я остановилс...   Apr 7 2006, 10:22
|- - Olej   Цитата(vzn @ Apr 7 2006, 13:22) Пока я ос...   Apr 7 2006, 10:44
- - Harbour   Если речь идет о самой критической задаче то вызов...   Apr 7 2006, 11:17
|- - Olej   Цитата(Harbour @ Apr 7 2006, 14:17) В слу...   Apr 7 2006, 11:45
- - Konstantin_SPB   Используйте select(), читайте man select, как это ...   Jun 22 2006, 10:05
|- - Olej   Цитата(Konstantin_SPB @ Jun 22 2006, 13:0...   Jun 22 2006, 10:25
- - Илья Игоревич   Решение есть. Появилось совсем недавно, в виде пат...   Aug 8 2006, 13:41


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 20:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01367 секунд с 7
ELECTRONIX ©2004-2016