Цитата(Andrew2000 @ Jun 9 2006, 04:58)

Цитата(Владимир Е. Зюбин @ Jun 8 2006, 18:38)

Ну, а в Рефлексе а ля стэнд-элон - все очень просто. Никаких замедлений просто нет и быть не может.
При чем тут Рефлекс? Тут вроде ОС обсуждаются - не надо мешать все в одну кучу - про Рефлекс отдельная ветка есть.
Рефлекс позволяет создавать приложения без участия ОС (создавать standalone приложения). Ну, а поскольку тема топика поиск ответа на вопрос "Когда не нужна ОС РВ", тема Рефлекса тут к месту.
Так что один из возможных ответов на вопрос: ОС не нужна, когда есть Рефлекс и нет проблемы со standalone драйверами УСО.
Цитата(Andrew2000 @ Jun 9 2006, 04:58)

Цитата(Владимир Е. Зюбин @ Jun 8 2006, 18:38)

Все очень просто. Виндовоз предоставляет: ...
Конечно, предоставляет - мелким фирмочкам сваять на коленке "пром. ПЛК", продать и свалить через месяц в неизвестном направлении (ну пару месяцев) ...
Ну, не знаю, под Виндовозом работет куча программ, те же LabView. Если сходить на сайт NI, можно узнать много интересного по этому поводу.
Цитата(Andrew2000 @ Jun 9 2006, 04:58)

Цитата(Владимир Е. Зюбин @ Jun 8 2006, 18:38)

Может, дело в том, что тема реального времени давно устарела? Не думали над этим?
...
Понимаете, словосочетание "реальное время" уже давно используется всеми кому не лень, его заездили, ...
Технически для ОС QNX более правильная характеристика - ОС с микроядерной архитектурой. ;-)
...
Да, и и словосочетание заездили, и для QNX и любой другой ОС я бы не применял термин РТОС.
(Ну, раз их так называют, что делать, и я буду).
Что мне (или какому-нить пользователю ПЛК) нужно. Нужна Система РВ (не отдельная РТОС, а коробка в сборе) - управляющая система.
Все верно. Любого конечного пользователя интересует выполнение требований ТЗ, а не абстрактные словеса насчет непонятно чего...
Цитата(Andrew2000 @ Jun 9 2006, 04:58)

А изнутри: Мне нужно, например, чтоб управляющая задача получала управление каждые 10мс (дрожание начала такта +- 100мкс) и занимала на 5мс ЦПУ, задача связи - ...
Применяя РТОС типа CMX, Nucleus, eCos - я знаю как это сделать (ессно. с учетом быстродействия ЦПУ и сложности алгоритма).
Применяя QNX я на 99% уверен, что смогу это сделать.
А вот применяя Linux или Windows я _наверное_ смогу это сделать, но только применив спец. "расширители" РВ для этих ОС (от того же CoDeSys, например). Но вот в чем я не уверен, так это в том, что такая система проживет больше месяца непрерывной работы.
Для системы вытягивания кремния больше месяца, наверное, и не надо, а для управления конвеером?
Система вытягивания кремния имеет ПЛК ядро без ОС вообще. И работать оно будет вечно (пока железо не посыпется). Виндовоз же там только для операторского интерфейса (сенсорный экран,графики, видео, голосовые сообщения, архивы и т.д. и т.п.) Получается дешево, надежно, и стильно. Но поработав с Виндовозом, которая зарекомендовала себя весьма надежной ОС, мы планируем перенести ПЛК-ядро на Виндовозную сторону.
Цитата(Andrew2000 @ Jun 9 2006, 04:58)

Применяя РТОС типа CMX, ... - я уверен, что кроме меня самого никто (т.е. система) динамическую память не запрашивает - я все выделяю в момент инициализации, до while(1) - рабочего цикла.
Все, что нужно после - выделяется/освобождается _только_ блоками фиксированного размера.
Применяя QNX ?? - не знаю, не пробовал.
Применяя Windows - ни в чем не уверен, чем она там занимается.
Ну, и маленький совет тем, кто будет делать ПЛК под Win - когда оставляете машину управлять объектом без присмотра - выдергивайте мышъ!!! Страшнее мышиных прерываний от ползания по коврику для производительности нет ! :)
Согласен, все технические решения надо прорабатывать очень аккуратно. Но в принципе, при появлении многоядерных архитектур в массовом количестве все эти проблемы должны вообще исчезнуть.
Можно предложить что-то типа такого:
Каждому процессу по ядру, а планировщиков - в корзину.Цитата(Olej @ Jun 9 2006, 14:39)

Цитата(Владимир Е. Зюбин @ Jun 8 2006, 18:29)

Цитата(Olej @ Jun 8 2006, 14:53)

А кстати - как на счёт strdup()? ;) - многие ли задумываются что они при этом делают?
А если так ;) :
Код
void func( char* S1 ) {
char* S2 = S1;
...
return( strdup( S2) );
};
насчет strdup, "я такой умный вещь скажу, ты только не обижайся"(с):
в алгоритмах управления strdup-ы не встречаются. Ни к чему они там.
Круто!
А i++ - встречаются ? а ++i ?
Это жизнь.
А ++ встречаются, только переменные заводятся либо в стеке, либо являются глобальными переменными.
Цитата(Olej @ Jun 9 2006, 14:39)

Теперь осталось только проделать ревизию "встречаются" / "не встречаются" - и оформить ... "руководящим и направляющим" документом, обязательным к исполнению ;) ... что-то мне это мучительно напомнило ... а, вот оно (прошу прощения за длинную off-topic цитату)
Да не нужен Си++ при описании алгоритмов управления, не нужен и не приспособлен для этого...
Поделитесь лучше, в каких случаях при управлении Вы используете strdup? Может действительно, я чего-то не понимаю. И мне надо срочно перейти на strdup-технологию.
(Олег, только, чур, без обид, мне хотелось бы, чтобы Вы вели разговор, постоянно имея ввиду промышленную автоматизацию уровня ПЛК).