реал тайм осы |
Ответить | Страница <1 23456 36> |
Автор | |||||||||||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
Опубликовано: 16 Октябрь 2003 13:01 |
||||||||||
Critical mission application - достаточно установившийся терминологический термин. Борт авиационной системы, система управления огнём танка, телекоммуникации международной космической станции... - это я назвал малую часть проектов, в которых реально использовались RTOS. Что такое realtime OS - вы там сами ниже пишете... Но это ("гарантированная реакция... etc") - цель, а для достижения цели есть ряд (по-моему их 5, N скажем) критериев, которым должна удовлетворять OS чтоб иметь право на приставку RT. Вот 1-е N-1 критериев (достаточно большое число уровней приоритетов, ...) - мало интересны: они достаточно очевидны и их не так сложно учесть в проектировании новых или ревизии старых OS. А вот последний - N-й - критерий, он и добавился на несклько лет позже к остальному джентльменскому набору - отнюдь не тривиальный (потому долго и "просмотрели") и совсем не прост в решении: OS должна препятствовать возникновению эффекта "инверсии приоритетов". Вот ему не удовлетворяет практически ни одна из универсальных OS: ни OS/2, ни большинство "родовых" UNIX, ни Windows XX (именно с появлением "инверсии приоритетов" MS и пришлось придумывать "мягкий реалтайм" - не первой свежести осетрину ;-)).
А вот моё понимание - принципиально отличается! Особенно если вы включили в перечень процессоров - x86, т.е. различие становится совсем прозрачным: - ваше видение (я утрирую, но идея та-же) состоит в том, что задача нижнего уровня пишется "голой", т.е. все взаимо действия с внешним миром и другие - прописываются "ручками" в составе приложения (задачи). Я давно ("я стар, я очень стар, я - суперстар..."(с) :D) работаю в крупных проектах "бок-о-бок" с "контроллерщиками", и очень хорошо знаю эту аргументацию. Основывается она на святой вере в то, что взаимодействия частей полностью "ручками" прописанной задачи - будет предсказуемей и надёжнее. - моё видение состоит в том, что я приведенной выше аргументации - не верю, и миллион раз наблюдал обратное, но, к сожалению, уже после завершения и при сдаче проекта. Почему? Потому, что API realtime OS реализует механизмы, "строительные камни", которые всё равно нужно заново изобретать в "ручной" реализации - но! в OS, в POSIX 1003b реализации - эти элементарные составляющие механизмы отрабатывались даже не годами, а десятилетиями... Дальше понятно? До какого-то времени (ешё 3-5 лет назад) задача использования универсальных процессорных модулей под управлением RTOS была безальтернативной в пользу специализированных контроллеров - определялось это стоимостными разрывами. На сегодня этого разрыва уже почти нет. Посмотрите опубликованные прогнозы Сименс (законодатель специализированных решений!) своего развития на ближайшие 3 года: "изменить соотношение контроллер-универсальный процессор с 70%/30% к ~40%/60%" - я пересказал по памяти, но смысл исказил не сильно...
Во-первых, вот это "замечал" - очень сильно зависит от конкретного класса задач, над которыми идёт работа. А во-вторых, ... а "зависания" OS вы не замечали? особенно при отработке задач с multithread, активными IPC etc.?
1. OS/2 - никогда и ни одним словом не позиционировалась как realtime: в IBM - серьёзный народ, это же не авнтюристы из MS... 2. по поводу успехов... В QNX (за 22-года! - чуть больше возрасту, чем MS-DOS) делалось и сделалось уймища успешных проектов. Число внедрений (проданных лицензий?) превышает 400000! А если у кого-то с успехами туго... так может на "ручки" нужно посмотреть? ;-) |
|||||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 08 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 178 |
|||||||||||
Насколько я в танке ;-) там вопрос решается просто - все трижды дублируется и решается двумя из трех. Кстати - наблюдение за пациентом тоже Critical mission application и тем не менее туда [некие уроды] ставят виндоус
ет (c) задача взаимодействует с другими задачами. Хотя все прописывается моими ручками - по разным причинам, но к OS отношения не имеющим.
Какие строительные камни мне надо изобретать ? пайпы-очереди-семафоры-нитки-приоритеты есть. Что еще нужно от OS ?
Сименс сосет. Хотя с другой стороны - PIC'и и DSP становятся все более универсальными.
"зависаний OS" не замечал. Это ж не вынь95/98. Есть проблема со свопингом - но при желании своппинг запрещается. Максимальный "уход в себя" - порядка 100микросекунд на p2-350 на незагруженном процессоре и для задач с нормальным проритетом
Ну не позиционировалась - ну и что ? Не позиционировалось - но работает ;-) Мало ли какие там тараканы в голове у руководства IBM... Вон HDD от IBM позиционировались как надежные
смотреть надо не только на ручки, а и на поддержку, в том числе бесплатную |
|||||||||||
SY,
EK |
|||||||||||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||||||||||
Н-да...
to moderator - обсуждение становится определённо тупиковым... ;-), и не из-за бескомпромисности опонентов, а из-за элементарной технической примитивности форума. Вот вам классический антогонизм формы и содержания ;-): претензия на умное "содержание" рассуждений в форуме - и убогое бормотание из-за "формы" редактирования постингов ;-)... |
|||||||||||
Гость |
|||||||||||
А прямая переписка безо всякого веба в Яхугрупсах с использованием любимого мэйлера устроит? ;) |
|||||||||||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||||||||||
1. там всё не так просто... можно и 100 раз "в лоб" резервировать - с тем же результатом... 2. а на предмет использования Windows везде, где ему не надлежит... так на то есть много исторических причин, об этом можно отдельно... Не так давно я работал с новинкой - макетным экземпляром для ПВО - только начинается(!) производство и экспорт(!) - Win16 + Borland 3.1 :-( ...
Мы говорим об разных вещах... 1. если о том, что "контроллерщики" городят в автономных контроллерах низового уровня - то это и есть изобретательство "пайпы - очереди - семафоры - нитки - приоритеты"... - только зачастую: не предполагая, как ОНО называется, такие вот "велосипеды"... 2. а если вы говорите о том, что у вас в OS/2 всё есть ... "пайпы - очереди - семафоры - нитки - приоритеты" ... то это к чему? Тема форума называется "OS реального времени" (или как-то так). Вы хотите меня, или кого ещё убедить в том, что OS/2 - это реальное время? Не делайте мне так смешно! Это просто малосерьёзное времяпрепровождение... [QUOTE=evgen] Есть проблема со свопингом - но при желании своппинг запрещается. Максимальный "уход в себя" - порядка 100микросекунд на p2-350 на незагруженном процессоре и для задач с нормальным проритетом [QUOTE=Olej] Эти 100мкс. - ну просто ничего не значат: ни хорошего, ни плохого... Ну у QNX даже на гораздо слабее процессоре <30мкс. - но и это ничего не значит... Возьмите любой (не realtime) UNIX - Linux, Free/NetBSD ... любой - вы думаете у них будет хуже тех же ваших 100мкс.? - я думаю, что будет лучше! Но никто же из них не претендует на применения в realtime application? Как только реально встанет вопрос об требованиях чего-то приближающегося к realtime - тут же у вас выплывут вот те N (5?) критериев, которым ваша универсальная OS ... не удовлетворяет... Только лучше это уяснять ДО начала проекта, а не ВО ВРЕМЯ его внедрения в эксплуатацию. |
|||||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 08 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 178 |
|||||||||||
"Как подумаю какой из меня инженер, так боюсь идти к врачу"
Я говорю только о том, что если есть требование "чтоб не бабахнуло" или если бабахнет - то несильно, то это должно обеспечиваться на как можно более хардварном уровне - даже на уровне пусть будет два жучка, но третий пусть будет предохранителем. Если требуется гарантированная реакция за микросекунды - то пусть ее обеспечивает спецконтроллер ибо в писюке такого не обеспечить.
Ну берем умную книжку и читаем чего должно быть в риалтайм осе
Да я собственно никого в свою веру и не пытаюсь обратить. Будем считать, что нижеприведенный список никакого отножения к реальному времени не имеет: -Управление шаговым двигателем через LPT порты с тактовой частотой 2кГц (причем ограничение по частоте - от самого двигателя) - Общение с дивайсами DS1820/1822 с интерфейсом 1-Wire через тот же самый LPT (опрос датчиков температуры в фоне) - управление неким высокоскоростным двухкоординатным дивайсом с реализацией ранееупомянутого Брозенхейма с фиксированной скоростью перемещения через посредство пары LPT портов и с задержками, кратными времени одного inp() Было сделано по бедности и временно из остатков ide-контроллеров с портами и работает до сих пор. Про работу с DSP и прочими дивайсами я даже и говорить не буду - там реалтаймовые эффекты не так сильно проявляются, хотя реальной пользы от них намного больше, чем при прямой работе через порты
лет восемь уже работает - а мужики-то не знают. PS: я не собираюсь затевать какие-либо религиозные войны и не настаиваю что OS/2 - риалтайм ос. Просто по факту под ней работают весьма и весьма риалтайм системы. |
|||||||||||
SY,
EK |
|||||||||||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||||||||||
Здесь даже нет предмета для религиозных войн! Религиозные войны можно устраивать, напр., по вопросу "Windows vs UNIX" (как и делают придурки с www.rsdn.ru)... А здесь настолько всё очевидно... OS общего применения (OS/2, Windows, MS-DOS, MacOS, Linux, FreeBSD, Sun Solaris... - нужное подчеркнуть ;-)) - наскольно непригодны для того, чтоб обеспечивать (гарантированно, а не "если повезло") реальное время, что и говорить не об чем... А чтоб разговор не стал совсем голословным ("сам дурак"(с)) - то я предлагаю рассмотреть вот те N требований (и еже с ними) - подробно (между "академическим" и "тестовым" слоями). В надежде, что ещё кто-то из работающих в области автоматизации - заглянет сюда... и посмотрит на вещи в немного нетрадиционном для "автоматчиков" свете. P.S. Только, т.к. я уже боюсь этого форума - по своим выразительным свойствам (цитирование, редактирование, удаление постинга...) он приближается к высечению клинописных знаков на скале ;-) - то я пропишу это по пунктам, отдельными постингами... Так и оимечая их в начале "П.10" - т.е. это, продолжение того, что говорилось в П.9... ;-) |
|||||||||||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||||||||||
П.1. - ну нет... как я таки угадал: этот форум пригоден только для того, чтоб произнести что-то не длиннее "сам дурак"... ;-).
П.2. Так вот давайте рассмотрим вот те "N-пунктов", но в конкретике: применительно к RTOS (QNX, которую я хорошо знаю) и универсальной OS (к примеру, OS/2 - это даже ещё интереснее, потому как я её "в живую" вовсе не знаю, но детально следил за её эволюцией по публикациям..., а где нужны будут конкретные детали - вы меня поправите ;-)). А вот теперь - к конкретике... Итак: П.3. "RTOS должна имень достаточно большое число уровней приоритетов". Это самое простое... А сколько большое? И как их считать. Вот Windows имеет 16(?)? Но ведь это нечестные 16 - там 4 группы по 4, и приоритеты могут меняться внутри групп шедулером ядра! А это уже вопросы из области диспетчирования, а не приоритетов. Т.е. можно считать "честно" - 4. Т.е. само требование нужно бы переписать: "RTOS должна имень достаточно большое число статических уровней прерывания". В QNX - 64, у кого-то ещё из RTOS (VxWorks?) - 128. В Linux, если не ошибаюсь - 16? Сколько в OS/2? |
|||||||||||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||||||||||
П.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 судить трудно ("тайны мадридского двора") - везде в документации: "... процесс ..." - но они пишут документацию так небрежно, что могут и не различить эти понятия. |
|||||||||||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||||||||||
П.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 вызова! |
|||||||||||
Ответить | Страница <1 23456 36> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |