Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Архив
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

реал тайм осы

 Ответить Ответить Страница  <1 2829303132 36>
Автор
Сообщение
Olej Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 14 Октябрь 2003
Категория: Ukraine
Online Status: Offline
Публикации: 267
Свойства публикации Свойства публикации   Ответить, цитируя автора - Olej Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: реал тайм осы
    Опубликовано: 25 Ноябрь 2003 18:24
Первоначально опубликовано Draggan

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


Есть и бОльшие неприятности ;-):
- когда сервисов в цепочке вызовов становится >2, и когда сервисы обращаются друг-за-другом каскодно: передавая запрос "вниз", а потом возвращая результаты "вверх"...

Считается, что это гораздо более отвратительная ситуация для наследования приоритетов (см. Р.Кёртен "Введение в QNX Neutrino-2", С.-Пб., 2003) - но это нужно смотреть и проверять.

Вот эта, названная, книга - пожалуй, самое лучшее руководство для понимания микроядерной архитектуры с обменом сообщениями - для понимания, местами, лучше, чем родная документация QNX (да ещё и на русском языке ;-)).
Но "проверять" - потому, что в программных кодах Кёртена, в очень немногих местах, как я выяснил при проверке - есть "лажи", которые не только не могут работать в принципе, но даже не компилируются. Пришлось переделывать...
Наверх
Sergey Sorokin Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 27 Март 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 240
Свойства публикации Свойства публикации   Ответить, цитируя автора - Sergey Sorokin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Ноябрь 2003 02:54

Первоначально опубликовано Olej

Первоначально опубликовано Sergey Sorokin


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

Мне кажется, что это слишком сильное утверждение... или требует более детальных разъяснений.

(пишу урывками так как нет времени)

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

 

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

 

Во время вычисления (в течении 1500мксек) в зависимости от поведения внешнего мира могут приходить (а могут и не прийти) еще прерывания, которые конечно не приводят к вытеснению нашей задачи (она самая приоритетная), но отъедают время (допустим в худшем случае 10мксек).

 

Таким образом  система выдаст реакцию в интервале от 1505 до 1520 мксек после внешнего события.  Видно что степень детерминизма (предсказуемости) очень высока (абсолютное значение временнОго разброса реакции 15мксек).

 

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

 

Пусть у нас не «чистое» вытеснение, а скажем среди задач с одним приоритетом крутится round-robin. В этом случае наша задача получит управление в худшем случае через 1 слайс (допустим slice=1мсек).  Другим словами реакция произойдет в интервале от 1505 до 3520 мксек. То есть даже одна задача с таким же приоритетом ухудшает предсказуемость более чем в 100 раз (абсолютное значение разброса 2015 мксек вместо 15 мксек). Если на нашем приоритете может существовать 10 задач, то время реакции будет разбросано в интервале 1505-21520 мксек (так как наша задача вычисляет что то в течении 1,5 слайсов, то поработав 1мсек когда до нее дойдет очередь в первый раз, она отдаст управление и будет ждать еще 10 слайсов/мсек что бы закончить свою работу). Разумеется это анализ наихудшего случая (то есть по идее верятность появления реакции более чем через 21520 мксек равна нулю). Соответственно для задач жесткого реального времени где нужно уложиться в 30мсек наша программа вполне подходит.

 

Но представим, что автор или какой нибудь рационализатор «улучшил» программу, в результате чего она стала выполняться 2010мксек вместо 1500 мксек. В итоге получим что и во время второго слайса наша программа не успеет досчитать, а худшее время реакции увеличится сразу на 10 мсек и появится ненулевая вероятность того что наша программа нарушит свой дедлайн (30 мсек) и что нибудь в результате взорвется. 

 

С Уважением,

Сергей Сорокин

 

Наверх
Sergey Sorokin Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 27 Март 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 240
Свойства публикации Свойства публикации   Ответить, цитируя автора - Sergey Sorokin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Ноябрь 2003 04:28
Первоначально опубликовано Sergey Sorokin

Вобщем то я наверное повторяюсь, но что бы показать, что это определение не точное попытаюсь пойти от противного. Раз мы определяем что такое система реального времени (СРВ), это означает что есть и другие системы (назовем их условно <системами нереального времени> (СНРВ)). Раз СРВ предсказуемо реагирует на непредсказуемые события, то СНРВ наверное реагирует непредсказуемо (опять же в смысле <временнОй непредсказуемости>). Поэтому для того что бы отличить СРВ от СНРВ нам нужно понять чем предсказуемая реакция отличается от непредсказуемой реакции. То есть возникает вопрос метрики (количественной оценки предсказуемости).
 

Вопрос не только в метрике (т.е. количественном различии), может более того отличаться и качественный характер процесса (СРВ - СНРВ). 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
Я бы сказал что динамичесие метрики системы управления являются следствием ее внутренних процессов со всеми их качествами. То есть Вы все правильно говорите насчет инверсии приоритетов, но это относится к другому уровню рассмотрения (Вы переключились от СРВ к ОСРВ, хотя СРВ совсем не обязательно содержит в себе ОСРВ). Например если мы считаем автомобилем только то, на чем можно передвигаться, то с точки зрения системы "автомобиль-пользователь", пользователь скажем либо может двигаться на автомобиле, либо не может. С этой точки зрения все равно почему автомобиль потерял свои потребительские свойства - залили плохой бензин или сел аккмулятор. Так и с точки зрения техпроцесса не важно почему система управления не выдала ВОВРЕМЯ необходимое воздействие - из-за инверсии приоритетов, ошибки приложения или неисправности аппаратных средств. При проектировании системы должны учитываться любые возможности. События выходящие из системы управления как из черного ящика (какие бы качественно процессы там внутри не происходили) характеризуются их логической и временнОй адекватностью технологическому процессу. И с точки зрения управления технологическим процессом именно логическая и временнАя правильность генерируемых системой управления воздействий имеет значение. Вы же сами об этом чуть позже и пишете (о взгляде пользователя на систему и о том что ему все  равно).

И на вычислении 72-го знака в записи константы PI наш паровой каток взлетает в воздух вместе с незадачливым расчётчиком! 
Вот это всё, что произошло в системе СНРВ (возвращаемся к вашей терминологии), и чего могло бы не произойти в системе СРВ (а могло бы и произойти). Как вы
видите - различия качественные: 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Я бы сказал наоборот. Если в системе происходит то, чего происходить не должно (не вовремя выдается ее реакция), то она не является СРВ. То есть если Вы применяете в системе управления ОСРВ, но по каким то причинам (например плохо написанное приложение) управляющие воздействия на управляемый техпроцесс выдаются не вовремя, то такая система управления не является СРВ.
 
- не СНРВ система, допустив ИП, позволила реакции замедлиться не "долго или не очень" (в 2, 3, 5... раз), а (принципиально важно!) на столько, сколько было угодно
 внешней задаче Т2, вплоть до вечности, если бы ей заблагорассудилось зациклиться. И это - всё в воле простейшей вычислительной задачи, которая и не занает то
ничего об диспетчировании, синхронизациях и т.д. 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
В системах жесткого РВ неважно на 1 секунду или на вечность был просрочен дедлайн. То есть важна вероятность нарушения дедлайна, а не то насколько он будет превышен.   

Первоначально опубликовано Sergey Sorokin

Понятно что в общем случае время события описывается неким вероятностным распределением, но предположим что наша предсказуемость вырождена в дельта-функцию и скажем одна система реагирует через 1мсек после внешнего события, а вторая ровно через 10сек. Какая из этих систем является СРВ? Если вторую систему применить для управления климатом в теплице, будет она работать в реальном времени? Скорее всего будет. А если ее же применить для управления прокатным станом, будет она СРВ? Нет не будет (за это время клети 100 раз успеют разлететься на куски). То есть система управления, АБСОЛЮТНО предсказуемо (ровно через 10 секунд) реагирующая на внешнее событие, не является СРВ. Другими словами система управления может быть отнесена к СРВ на основе метрик ее предсказуемости, но при этом абсолютные значения метрик системы управления имеют смысл только в контексте значений метрик самого управляемого процесса.
То есть система управления является СРВ если ее метрики предсказуемости адекватны скорости протекания управляемых технологических процессов (временнЫм метрикам техпроцесса).


А вот здесь я с вами никак не могу согласиться. 
... система управления, АБСОЛЮТНО предсказуемо (ровно через 10 секунд) реагирующая на внешнее событие, является СРВ. Эта система по своим показателям
производительности является абсолютно неадекватной метрикам объекта управления - да. Но она является так же 
абсолютно прогнозируемой и в качественном характере и во временных реакциях, я есть во всех смыслах СРВ. Но - не для этого объекта управления. 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
Если Вы прочитаете свое последнее предложение, то сразу увидите противоречие в своем рассуждении. В этом предлжении Вы согласились со мной, что изолированную систему управления нельзя отнести ни к СРВ ни к СНРВ, пока она не будет рассмотрена вместе с объектом управления.
 

Первоначально опубликовано Sergey Sorokin

Это полезная функция, однако оформив все необходимые алгоритмы в виде одной задачи или используя серверы глобальных ресурсов вместо семафоров, я вполне могу использовать ОС, где эта проблема не решена (проблема просто не возникает). То есть это условие не является обязательным условием мешающим применять ту или иную ОС в СУпрРВ.


1. алгоритм управления, оформленный в виде единой задачи - в принципе не может обслуживать ассинхронный поток событий, поэтому к ней вообще неприменима
терминология и проблемы СРВ (обработчики прерываний - не в счёт, т.к. при этом разрушается критерий однозадачности, обработчики - эту уже параллельные ветки, и все проблемы начинаются сначала). 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Может. Поллинг с частотой превышающей частоту асинхронных событий (чем больше превышение, тем точнее временнАя привязка асинхронных событий). В принципе можно обойтись даже без таймерного прерывания. Собственно round-robin системы как правило в этом стиле и работают (если запас по быстродействию большой, то можно и без прерываний обойтись)..  


2. возникновение инверсии приоритетов первоначально и было изучено в среде клиент-серверных OS, и там же наиболее активно обсуждается... так что и там есть те
же проблемы. Только инверсия у них возникает на других механизмах (см. выше). Но от этого она менее инверсией не становится. 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Просто самостоятельно организуя доступ к глобальным ресурсам через приложение-сервер разработчик может взять решение этих проблем на себя (на уровне приложения) если вдруг ОС  этих проблем не решает.  

Первоначально опубликовано Sergey Sorokin

Я не призываю разработчиков ОСРВ закладывать а их ОС только 3 приоритета. Я просто советую прикладным программистам не увлекаться большим количеством приоритетов. Это может создать проблемы, особенно когда в одном проекте задействовано несколько программистов.
 

В дополнение к тому же... Обратите внимание.

1. всё та же досадная инверсия приоритетов - никогда не возникнет в однопприоритетной системе ("нет приоритетов - нет проблемы";-)). Т.е. - чем больше
задействовано приоритетных уровней в программной системе - тем больше у вас вероятность нарваться на эти или подобные грабли... 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
В той же Виндовз насколько я помню результирующий приоритет потоков является хитрой комбинацией приоритетов потоков заданных им при разработке и приоритета периода исполнения задачи , в которой эти потоки работают. Двойные грабли.

С   Уважением 
Сергей Сорокин 
Наверх
Sergey Sorokin Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 27 Март 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 240
Свойства публикации Свойства публикации   Ответить, цитируя автора - Sergey Sorokin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Ноябрь 2003 05:03

Первоначально опубликовано Olej

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

Так вот вид этой кросс-корреляционная функция была бы достаточно характерной мерой соответствия системы realtime требованиям:

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Проблемы в том, что воздействия и реакции могут быть не только цифровыми, но и аналоговыми. Импульсные воздействия могут вызывать потнциальные реакции (и наоборот), воздействия могут приходить одновременно на несколько линий, аналоговое воздействие может вызывать дискретную реакцию (и наоборот) и т.п.
 
Мне в свою очередь кажется что при анализе софт реалтайм систем можно в определенных ситуациях применить теорию массового обслуживания (применяется в телекоммуникациях). Поток задач на исполнение это как бы поток сообщений и можно для разных параметров расчитать вероятность обслуживания сообщения (выполнения задачи) за определенный интервал времени. Насколько я помню при Пуассоновском характере запросов эта вероятность описывается распределением  Релея (такая горбатая кривулька).


С Уважением,
Сергей Сорокин
 
Наверх
Sergey Sorokin Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 27 Март 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 240
Свойства публикации Свойства публикации   Ответить, цитируя автора - Sergey Sorokin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Ноябрь 2003 05:18

Первоначально опубликовано Draggan

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

Наследование конечно не совсем адекватный термин, но лучшего пока не придумали.

Мне кажется что синхронизирующие примитивы могли бы работать в следующем стиле.

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

То есть происходит не наследование (потому как строго говоря потомков не образуется), а врЕменная "передача флага" от высокоприоритетной задачи, "застрявшей" на ресурсе низкоприоритетной задаче.

С Уважением

Сергей Сорокин

 

Наверх
Draggan Смотреть выпадающим
Участник
Участник


Присоединился: 31 Октябрь 2003
Категория: Ukraine
Online Status: Offline
Публикации: 52
Свойства публикации Свойства публикации   Ответить, цитируя автора - Draggan Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Ноябрь 2003 10:23
Sergey Sorokin
Если Вы прочитаете свое последнее предложение, то сразу увидите противоречие в своем рассуждении. В этом предлжении Вы согласились со мной, что изолированную систему управления нельзя отнести ни к СРВ ни к СНРВ, пока она не будет рассмотрена вместе с объектом управления.

В общем так и есть, особенно если исходить из вот этого определения
Реальное время (программное обеспечение) (IEEE 610.12 - 1990): Относится к системе или режиму работы в котором вычисления проводятся в течении времени, определяемого внешним процессом, с целью управления или мониторинга внешнего процесса по результатам этих вычислений.

Но и определение Тиммермана тоже верное, только оно для специалистов, поскольку многое подразумевает, а стандарт , он как говорил мой начальник "для военных - чтоб каждый сержант понял" когда заставлял меня переписывать руководство по эксплуатации :))

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

Теперь по поводу анализа многопоточной реал тайм системы. Еще до недавнего времени я бы с Вами согласился безоговорочно, но! Меня все таки очень заинтересовал вопрос, на который я раньше не обращал внимания, зачем разработчики ОС, позиционирующихся на рынке как real time и embedded стремятся к наращиванию колличества уровней приоритетов? 64 в QNX это еще ернда, но в других их ведь 256! А это уже противоречит всему опыту разработки и моему и всех моих знакомых, да и здесь была масса высказываний в том же духе. Неужели разработчики ОС такие дураки? Или это мы чего-то не знаем? Ну я уже писал, что ответом на этот вопрос является RMS технология прогнозирвания поведения РТ системы. (точнее диспетчеризации ее потоков). К сожалению пока я в ней не й до конца не разобрался, нет пока времени, но когда я увидел колличество цитирований и упоминаний в инете, причем в разных (а не в перепечатаной там и тут статье) источниках, когда я наткнулся на описание этого механизма в нескольких университетских курсах по ОСРВ,
я пришел к мысли, что, по видимому, это работает, и разбираться с ним надо обязательно.
Draggan
Kharkov, QNX Seminars
Наверх
Olej Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 14 Октябрь 2003
Категория: Ukraine
Online Status: Offline
Публикации: 267
Свойства публикации Свойства публикации   Ответить, цитируя автора - Olej Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Ноябрь 2003 14:49
Первоначально опубликовано Sergey Sorokin

Может. Поллинг с частотой превышающей частоту асинхронных событий (чем больше превышение, тем точнее временнАя привязка асинхронных событий). В принципе можно обойтись даже без таймерного прерывания. Собственно round-robin системы как правило в этом стиле и работают (если запас по быстродействию большой, то можно и без прерываний обойтись)..  


Я эту свою ... нить ;-) рассуждений, писал в несколько другом контексте... Не в том смысле, что не может быть СРВ программной системы, построенной в качестве единого монолитного процесса.

Может, конечно.
Либо имеющее несколько потоков, принудительно переключаемых по кругу - round-robin... либо и вообще без какой либо диспетчеризации: просто программно поочерёдно опрашивая N каналов, и при обнаружении сигнала в I-м канале - производить соответствующую реакцию.

Но...

1. так построенная система - это синхронный программный опрос (даже при принудительном переключении потоков) - всесто ассинхронного уведомления о событии (прерывания).

2. раз нет ассинхронных возмущений (т.е. во внешнем мире они - ассинхронные, но они помещаются во входную очередь опроса, и опрашиваются синхронно!) - то нет характерных проблем риэлтайм... и нечего их разрешать.

3. поэтому я нескольно отодвинул в сторону рассмотрение так построенных систем, т.к. тема разговора была названа "ОС реального времени", а не "системы управления реального времени", т.е. в это рассмотрение просто не попадают синхронные системы... у них нет обсуждаемых проблем.

4. наконец, последнее.
Если всё так хорошо в системах кругового (программного) опроса, то почему вообще везде и повсеместно их не применять, если в них нет тех проблем, которые такие противные в системах на базе ОСРВ???

Да в том же, чем программный опрос последовательного порта отличается от обслуживания его по прерыванию: скоростью реакции и загруженностью процессора!

Если у вас N каналов - то и время обнаружения события с канала N вы обнаруживаете за в N раз больший интервал. А когда N (число событий - степеней свободы) = 1000? или 10000?

Т.е. такие системы имеют право быть, но, очевидно, только для управления медленными, вялотекущими процессами... кстати, для многих именно АСУТП это - нормальное условие.

Плюс к этому то, что помимо обслуживания N каналов реагирования эта система уже ничем больше заниматься не может! (Это если без специальных ухищрений, но тогда сразу же вылезают всё те же "ассинхронные" проблемы, что и в RTOS).
Наверх
Draggan Смотреть выпадающим
Участник
Участник


Присоединился: 31 Октябрь 2003
Категория: Ukraine
Online Status: Offline
Публикации: 52
Свойства публикации Свойства публикации   Ответить, цитируя автора - Draggan Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Ноябрь 2003 15:10
Еще одно замечание по поводу определения. Напомню еще раз предмет спора:
Система реального времени - это система, предсказуемо реагирующая на непредсказуемые внешние события. (с уточнением, что в под предсказуемостью подразумевается временнАя предсказуемость)
Сергей Сорокин пишет, что в СРВ реакция на событие должна быть обязательно, и не важно опоздала она или ее не было вообще. Значит под словами реакция СРВ имеет смысл понимать только "правильная реакция"! Если она опаздала, то смело можно считать, что ее небыло вовсе! Значит когда мы говорим "предсказуемо реагирует" - речь идет о реакции ПРАВИЛЬНОЙ и происшедшей ВОВРЕМЯ.
Draggan
Kharkov, QNX Seminars
Наверх
evgen Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 178
Свойства публикации Свойства публикации   Ответить, цитируя автора - evgen Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Ноябрь 2003 15:46
Первоначально опубликовано Olej


4. наконец, последнее.
Если всё так хорошо в системах кругового (программного) опроса, то почему вообще везде и повсеместно их не применять, если в них нет тех проблем, которые такие противные в системах на базе ОСРВ???

Да в том же, чем программный опрос последовательного порта отличается от обслуживания его по прерыванию: скоростью реакции и загруженностью процессора!

Если у вас N каналов - то и время обнаружения события с канала N вы обнаруживаете за в N раз больший интервал. А когда N (число событий - степеней свободы) = 1000? или 10000?

Т.е. такие системы имеют право быть, но, очевидно, только для управления медленными, вялотекущими процессами... кстати, для многих именно АСУТП это - нормальное условие.

Плюс к этому то, что помимо обслуживания N каналов реагирования эта система уже ничем больше заниматься не может! (Это если без специальных ухищрений, но тогда сразу же вылезают всё те же "ассинхронные" проблемы, что и в RTOS).

Что касается компортов...
На компорты обычно вешается драйвер, у которого есть буфер. У самого компорта кстати тоже может быть буфер. Так что вполне можно асинхронно принять информацию и положить в буфер, а с буфер можно уже и round-robbin'ом опрашивать. А поскольку опрос наличия данных в буфере - достаточно быстрая операция, то для N компортов интервал обслуживания не будет существенно отличатся от интервала для одного порта.
SY,
EK
Наверх
Olej Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 14 Октябрь 2003
Категория: Ukraine
Online Status: Offline
Публикации: 267
Свойства публикации Свойства публикации   Ответить, цитируя автора - Olej Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Ноябрь 2003 16:22
Первоначально опубликовано evgen


Что касается компортов...
На компорты обычно вешается драйвер, у которого есть буфер. У самого компорта кстати тоже может быть буфер. Так что вполне можно асинхронно принять информацию и положить в буфер, а с буфер можно уже и round-robbin'ом опрашивать.


Вопрос не в частностях, /dev/ser был выбран для образца как простейший случай...
Вопрос в том, что система может:
- ожидать и реагировать на ассинхронные события, и тогда имеет смысл обсуждений о применении RTOS, и GOS, или ещё чего...
- и может буферизировать (разным, кстати, образом) входящие асинхронные события, а потом вкруговую обрабатывать их как синхронные, при этом система уже вряд ли может "отвлечься" на выполнение ещё како-го то задания, поэтому такие понятия, как многозадачность, параллелизмы и OS вообще (как механизм организации этих много-) - ей противопоказаны вообще, и рассматриваться она должна совсем отдельным классом: там свои проблемы, здесь - свои.

Первоначально опубликовано evgen


А поскольку опрос наличия данных в буфере - достаточно быстрая операция, то для N компортов интервал обслуживания не будет существенно отличатся от интервала для одного порта.


В общем случае, короткая или длинная процедура обслуживания канала - не есть принципиально важно, важно как синхронно он обслуживается.

А последнюю фразу я просто не понял...: время синхронного обслуживания N каналов, даже если оно и очень невелико для одного канала, будет ровно в N раз больше, чем для 1-го.
Наверх
 Ответить Ответить Страница  <1 2829303132 36>

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz