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

реал тайм осы

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


Присоединился: 14 Октябрь 2003
Категория: Ukraine
Online Status: Offline
Публикации: 267
Свойства публикации Свойства публикации   Ответить, цитируя автора - Olej Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: реал тайм осы
    Опубликовано: 17 Октябрь 2003 18:01
П.10. - это тоже из технических, не "академических" требований: RTOS должна иметь адекватные (realtime) средства сетевого взаимодействия.

Об чём речь? Что у нас есть практически во всех OS общего применения? Правильно - TCP/IP (IPX/SPX - это славная, но практически умершая технология, и - не считать же серьёзной сетевой технологией "одоробло" NETBEUI от MS?).

TCP/IP по ряду причин не годится для realtime & embedded приложений. Т.е., очень даже годится, и даже крайне желателен, например, для управления извне (зашёл по telnet или ssh - и чудишь как у себя дома) - но не годится для гарантированной доставки данных. TCP/IP разрабатывался и оптимизировался для WAN, а не для LAN, и главная его характеристика "живучесть", но никак не "гарантированность". Вот, например, существует общее заблуждение, что TCP ("протокол гарантированной доставки", про UDP я даже не говорю) - может обнаружить обрыв канала... - не может: будете сидеть в своём блокирующем read() до посинения ;-)... И многое другое, причин много, сейчас не об этом - если кому будет интересно, я перечислю отдельно.

Тот же QNX - имеет в своём составе развитую сетевую подсистему Qnet - "гарантированного реагирования", которая, кроме того - плотно и органично интегрируется с работой полностью автономного стека TCP/IP.
Наверх
Olej Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 14 Октябрь 2003
Категория: Ukraine
Online Status: Offline
Публикации: 267
Свойства публикации Свойства публикации   Ответить, цитируя автора - Olej Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 17 Октябрь 2003 18:09
Вот, пожалуй, на этом можно остановиться (хотя это ещё далеко не все П.П. "почему нельзя требовать от OS общего назначения - удовлетворять требованиям realtime").

P.S. Прошу прощения, если я написал слишком много, и утомил кого-то... Просто - "проходил мимо", сммотрю тема "реал тайм осы" - а в реал тайм осы скоро станут зачислять OS/2, и MS-DOS ... так дальше пойдёт - и MS Windows допустим в реалтайм... :-( Абыдно стало, панимаешь, да? Ещё раз прошу прощения.
Наверх
evgen Смотреть выпадающим
Действительный член
Действительный член


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


Здесь я сознательно пошутил - сформулировал утверждение провокационно... и результат не заставил себя ждать, и именно тот, которого я ожидал.

Всё было бы так как вы говорили, если бы в природе вообще существовали однозадачные вычислительные процессы. Но их - не бывает!

Вы еще будете меня за многозадачность агитировать ;-)
Тем не менее - есть. Вот даже у меня рядом стоит - ящик для радиоканала - так внутри дос.

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



И ещё, к развеиванию иллюзий однозадачности у автоматчиков (а она - ой как есть!) - если у вас есть хоть одно (!) ассинхронное событие внешнего мира - прерывание: у вас уже есть классическая многозадачность! И хорошо, если она обслуживается такими же классическими API OS, и очень плохо - если "самопалками" от непонимания, что перед нами таже общая проблема ("вот кинжал: он хорош для того, у кого он есть, и плох - для того, у кого его нет"(с) ;-)).

"Автоматчики" как вы выражаетесь поступают элементарно: используют цикл опроса на манер поллинга с такой частотой, что никакой асинхронности нету. Вон у меня в DSP - все укладывается в 2-3 микросекунды.
Первоначально опубликовано Olej


А вот на предмет: "псевдомногозадачный режим в стиле DOS" - акститесь! Я столько руками переделал этих TSR, зубы на этом проел... много могу порасказать - о том, например, что почти все эксплуатируемые TSR были сделаны
некорректно, а потом говорят "виснет, виснет"... Переключение в TSR корректно только в том случае, когда вы сохраняете контекст задачи - в DOS это PSP - первый сектор задачи, да и это ещё не всё... Теперь представьте: для переключения на выполнение 3-х команд в TSR ... начинаем сохранять 256 байт (куда? может на диск ;-)? или в область памяти - так её ещё выделить нужно, динамически, и лучше по принципу стека - этот TSR может другой прервать!?)... а выполнив - вернуть братно.

Заметьте - я про TSR ничего не говорил. Просто все сделано через большой цикл с кучей switch'ей, callback-ов, тайм-аутов и нарезкой данных на куски.

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


Ещё будем об realtime и предсказуемости поведения говорить в этом случае?

Конечно. squid работает на многих платформах и под большой нагрузкой. С предсказуемым поведением. И с такой архаичной внутренней организацией.
Первоначально опубликовано Olej


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


Критические секции тоже есть и используются. Чем оно избыточное - непонятно.

А потому, что:
- в POSIX его нет - не нужно, и так всего хватает;
- где мютексы есть - так критическую секцию создать труда не составляет, кто понимает...

На ассемблере тоже можно все что угодно изобразить - однако ж. И эээ.. навскидку - с мутексами будет тормознее. Намного.
SY,
EK
Наверх
evgen Смотреть выпадающим
Действительный член
Действительный член


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

П.10. - это тоже из технических, не "академических" требований: RTOS должна иметь адекватные (realtime) средства сетевого взаимодействия.
[...]
канала... - не может: будете сидеть в своём блокирующем read() до посинения ;-)... го стека TCP/IP.

Не пользуйте блокирующие вызовы и будет вам щастье.
Стандартные пайпы OS/2 совершенно спокойно живут под netbios'ом / netbios over ip.
SY,
EK
Наверх
Olej Смотреть выпадающим
Действительный член
Действительный член


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


Вы еще будете меня за многозадачность агитировать ;-)
Тем не менее - есть. Вот даже у меня рядом стоит - ящик для радиоканала - так внутри дос.

Почти как говорил М.Жванецкий: что ящик стоит - верю, что там внутри дос - верю, а вот что однозадачность - не верю - отныне и во веки веков, аминь ;-).

Чисто однозадачным процессом можно считать только что-то из численных вычислений - решение какого-то квадратного уравнения, что ли...

Как только у вас любое IRQ - всё, это поехала новая, параллельная ветка... В том случае, если вы аккуратничаете, сохраняете 2-3 регистра (даже не трогая сегментных, возможно), не сохраняя контекста прерванной задачи - так это только из-за элементарной простоы действий, выполняемых в обработчике (кстати, и эта привычка элементарных действий в обработчике - это "обратным концом" привычка, выработанная неприятностями ;-)).

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


используют цикл опроса на манер поллинга с такой частотой, что никакой асинхронности нету.

Активноый опрос со 100% загрузкой процессора? Хорошее решение...

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


Заметьте - я про TSR ничего не говорил. Просто все сделано через большой цикл с кучей switch'ей, callback-ов, тайм-аутов и нарезкой данных на куски.

TSR - это только название, и всего.
Но всё происходящее происходит точно также: calback-и (по сетевым событиям, ведь вы об squid говорите, если я понял?) - прерывания по сетевым событиям, тайм-ауты - прерывания от системного таймера, а на них обработчики, обработчики, обработчики... А на них - сохранение контекста, или без - но это "если повезёт"...

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


Конечно. squid работает на многих платформах и под большой нагрузкой. С предсказуемым поведением. И с такой архаичной внутренней организацией.

Под многими - я видел, знаю...
Под однозадачной дос - не видел..., но может пропустил чего.
Но считать squid как образец ... "с предсказуемым поведением" в смысле realtime? Нет, право, батенька, это уж слишком. Да если он заснёт над вашим запросом на лишних 5 минут - так вы и не заметите... даже на 15 минут - тоже не успеете идти на разборки с администратором...
Наверх
evgen Смотреть выпадающим
Действительный член
Действительный член


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

Вот, пожалуй, на этом можно остановиться (хотя это ещё далеко не все П.П. "почему нельзя требовать от OS общего назначения - удовлетворять требованиям realtime").

P.S. Прошу прощения, если я написал слишком много, и утомил кого-то... Просто - "проходил мимо", сммотрю тема "реал тайм осы" - а в реал тайм осы скоро станут зачислять OS/2, и MS-DOS ... так дальше пойдёт - и MS Windows допустим в реалтайм... :-( Абыдно стало, панимаешь, да? Ещё раз прошу прощения.

Обычно таки разделяют hard и не hard-realtime OS.
Вы этого почему-то не проводите. По факту у меня получаются весьма hard-realtime системы на не hard-realtime OS - и оно работает в промышленных условиях. Часть из приложений я описывал, и не только здесь. И почему-то никто не объявился и не сказал - у меня точно такое же, но под QNX. Даже обидно, панимаешь.
SY,
EK
Наверх
evgen Смотреть выпадающим
Действительный член
Действительный член


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

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


Вы еще будете меня за многозадачность агитировать ;-)
Тем не менее - есть. Вот даже у меня рядом стоит - ящик для радиоканала - так внутри дос.

Почти как говорил М.Жванецкий: что ящик стоит - верю, что там внутри дос - верю, а вот что однозадачность - не верю - отныне и во веки веков, аминь ;-).

Чисто однозадачным процессом можно считать только что-то из численных вычислений - решение какого-то квадратного уравнения, что ли...

Как только у вас любое IRQ - всё, это поехала новая, параллельная ветка... В том случае, если вы аккуратничаете, сохраняете 2-3 регистра (даже не трогая сегментных, возможно), не сохраняя контекста прерванной задачи - так это только из-за элементарной простоы действий, выполняемых в обработчике (кстати, и эта привычка элементарных действий в обработчике - это "обратным концом" привычка, выработанная неприятностями ;-)).

В ящике для радиоканала - наверное есть прерывания, а в остальном - можно и без них с тупым поллингом
Первоначально опубликовано Olej



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


используют цикл опроса на манер поллинга с такой частотой, что никакой асинхронности нету.

Активноый опрос со 100% загрузкой процессора? Хорошее решение...

DSP или PICу - это по барабану, у них все время 100% загрузка, кроме режимов сна

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


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


Заметьте - я про TSR ничего не говорил. Просто все сделано через большой цикл с кучей switch'ей, callback-ов, тайм-аутов и нарезкой данных на куски.

TSR - это только название, и всего.
Но всё происходящее происходит точно также: calback-и (по сетевым событиям, ведь вы об squid говорите, если я понял?) - прерывания по сетевым событиям, тайм-ауты - прерывания от системного таймера, а на них обработчики, обработчики, обработчики... А на них - сохранение контекста, или без - но это "если повезёт"...

TSR - это еще и куча ограничений...
А в сквиде все сетевые события проверяются в одном месте - через select или poll - и далее только обработчики и никаких таких прерываний. Цикл опроса длится где-то 100-200 мс, а все остальное сидит в буферах TCP стека...

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



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


Конечно. squid работает на многих платформах и под большой нагрузкой. С предсказуемым поведением. И с такой архаичной внутренней организацией.

Под многими - я видел, знаю...
Под однозадачной дос - не видел..., но может пропустил чего.
Но считать squid как образец ... "с предсказуемым поведением" в смысле realtime? Нет, право, батенька, это уж слишком. Да если он заснёт над вашим запросом на лишних 5 минут - так вы и не заметите... даже на 15 минут - тоже не успеете идти на разборки с администратором...

;-) В дос оно не влезет по размеру - разве что с экстендером.
А на предмет заснет-не заснет - тестируют его в хвост и гриву - не засыпает. Хотя неприятности с ним случаются при потере связи - но это уже из другой области
SY,
EK
Наверх
evgen Смотреть выпадающим
Действительный член
Действительный член


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


П.3. "RTOS должна имень достаточно большое число уровней приоритетов". Это самое простое... А сколько большое? И как их считать. Вот Windows имеет 16(?)? Но ведь это нечестные 16 - там 4 группы по 4, и приоритеты могут меняться внутри групп шедулером ядра! А это уже вопросы из области диспетчирования, а не приоритетов. Т.е. можно считать "честно" - 4.

4 по 32.
для Normal приоритетов приоритет еще может динамически меняться внутри каждого из 32 уровней

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


Т.е. само требование нужно бы переписать: "RTOS должна имень достаточно большое число статических уровней прерывания". В QNX - 64, у кого-то ещё из RTOS (VxWorks?) - 128. В Linux, если не ошибаюсь - 16? Сколько в OS/2?


Долго думали - что вы имели ввиду ? для IRQ уровень прерывания задается его номером, в писюке их всего 16.
SY,
EK
Наверх
evgen Смотреть выпадающим
Действительный член
Действительный член


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

П.4. - его даже не называют часто (а зря), это сильно связано с приоритетами выше: "RTOS должна иметь эффективные и управляемые процедуры диспетчеризации".

Очень интересный пункт - об одном ём можно книжку написать ;-).

POSIX 1003b (стандарт POSIX в части realrime возможностей, я на него буду много ссылаться) определяет 4 дисциплины диспетчеризации: FIFI, RR (round-robin), adaptive, sporsdic.

Разработчикам OS общего применения часто даже не приходит на ум иметь одновременно несколько дисциплин диспетчеризации - они ищут "лучшую"...
- в Linux - чистая round-robin (на уровне, фактически, процессов! - мы ещё к этому вернёмся);
- в Windows... это отдельная песня: в 3.1/3.11 было то, что MS "изобрели" как "кооперативная многозадачность" - у всех остальных нормальных людей это FIFO. В 95/NT/... - это "вытесняющая многозадачность", т.е. то, что у остальных RR, но у них ещё идёт "изобретательство" по изменению (снижению) приоритета выполняющегося процесса - т.е. это типичая adaptive. О том, на уровне чего (процессов или потока) идёт диспетчеризация в Win32 судить трудно ("тайны мадридского двора") - везде в документации: "... процесс ..." - но они пишут документацию так небрежно, что могут и не различить эти понятия.

4 класса приоритетов по 32 уровня. NORMAL класс может иметь как динамические приоритеты, так и абсолютные (устанавливается в config.sys) все остальные - абсолютные
На уровне ниток.
Приоритеты наследуются нитками.
SY,
EK
Наверх
evgen Смотреть выпадающим
Действительный член
Действительный член


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

П.5. - почти все универсальные OS (Windows, Linux, OS/2...) - моноядерные (или макроядерные) OS, за исключением, пожалуй MacOS & NextStep, я больше не знаю. Моноядерность сама по себе ни в коей мере не порок (вон биолог Линус Торвальдсон - тот просто "писает горячим чаем" от моноядерности...). Но из нее вытекает ряд любопытных следствий.

Ядро моноядерных OS - нереентерабельно. Т.е. оно может быть реентерабельно, ещё в IBM OS/360 это было - но реентерабельное ядро будет на порядок сложнее, и, самое главное с условиях рынка настольных систем - существенно медленнее. По крайней мере, ядро и Windows и Linux - нереентерабельное. Может OS/2 реентерабельное? Не верю.

А это значит, что любой вызов API ядра не может прерываться для выполнения другого вызова API ядра. А это значит, что любой вызов API ядра - это временная зона нечувствительности (напрмер, для переключения в контекст другого потока)... А вызовы ядра - это добрая половина всего API OS :-( ... сколько их 2000? 5000? 10000? (и чем богаче API системы - тем ситуация усугубляется). А вот здесь и выплывает пункт: "RTOS должна обеспечивать минимальные интервалы нечувствительности"...

Многие RTOS выполнены по технике микроядра - в универсальных OS эта техника применяется редко, т.к. она была тщательно проработана в университетских IT кругах (появилась) только в 1-й половине 80-х годов. Так сделаны QNX, VxWork... В микроядерной архитектуре системный вызов (вызов микроядра) - это только передача (коммутация) через микроядро исполняющему модулю вызова - это на порядки меньше, чем в макроядре. Да и API микроядра в QNX, напр., это - 64 вызова!


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

Микро- или не микро ядро - прямого отношения к риалтайму этого не имеет, как и то, сколько вызовов API сидит в ядре и сколько - не в ядре. Они все равно где-то есть...

Что до OS2 - то часть системных вызовов реентабельны, часть - нет, но от этого никто не страдает
SY,
EK
Наверх
 Ответить Ответить Страница  <1 45678 36>

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

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