Pull to refresh

Comments 70

Вы про сеть и межпроцессорную работу напишите!
Сам смутно все с ВУЗа помню. Но помню, было оч. интересно.
Может, тогда народ сам начнет гуглить про установку.
Наверное лучше про сеть для начала. Про IPC это сильно на любителя и в документации очень подробно описано. Хотя краткий обзор различных механизмов IPC тоже можно написать.
Да вообще побольше про QNX, я раньше грезил ей безумно, но из-за отсутствия достаточного кол-ва статей и времени, просто начал забывать. Вы не упомянули что пресловутые канадцы, которые написали её на чистом asm'е вроде, используют её в ядерном реакторе, что сразу задирает планку уважения :)

Просим-просим, еще и побольше про QNX!
А еще она используется в одной из навороченных моделей CISCO. А еще, а еще… :)
Ну это из области баек наверное. Скорее всего тут речь идёт ещё о QNX2. На чём написан QNX2 я не могу сказать, скорее всего большая часть на C. Более новые QNX4 и QNX6 написаны на C с небольшими вставками на ассемблере.

В атомной промышленности QNX применяется, и у нас, и у них, так что эта часть не байка.
Прочитал — действительно заинтересовало.
Жду информацию про установку! (:
Написать вторую заметку про установку мне кажется вполне логично. А раз есть желающие почитать, то напишу.
Установка на PC и виртуалку элементарна, не вижу повода для статьи. Лучше напишите подробнее про микроядерную архитектуру и средства разработки
Черт, я только разогнался, а тут конец статьи :) Пишите еще, тема очень интересная.
А мне интересно, как компилировать под QNX?
Под Playbook до сих пор нет нормального SDK, но можно скомпилированную C программу запустить через tmp.
Так, записываю. Напишу и про это.

Если кратко, то вместе с QNX SDP устанавливается tool-chain, в который входит набор компиляторов GCC (для разных аппаратных платформ), так что компилировать можно прямо ими. Я лично предпочитаю этот вариант, т.к. мне нравится командная строка.

Ещё есть Momentics IDE (на базе Eclipse). Фирма разработчик QNX также участвует и в проекте Eclipse, так что он для QNX родной. Среда очень удобная и популярная. В Momentics IDE просто есть специальные профили для работы с QNX.
SDP официально поставляются только под Windows и Linux. Хотя есть информация, что существует бета-версия под Mac. Может быть со временем будет доступна для пользователей.
Тогда остается вопрос, как собрать под QNX su и BusyBox (под PlayBook его нет) :)
На том PlayBook, что был у меня, su был.

Собрать BusyBox не составит проблем, но будет ли толк при запуске от пользователя? Я не уверен. А доступа от root нет.
Консоль от devuser запускается только и su not exist.
ob1 иммет ввиду что, чтобы su работал, вам нужно будет сделать chown root su;chmod +s su, а это можно сделать только под рутом
Не знаю что такое PlayBook, но можно попробовать вытащить из него накопитель, вставить в ругой комп и установить там владельца и суид-бит на su.
и если проблема собрать su для этой платформы, то можно написать небольшую программу с ровно двумя сискалами. Смотрите man 2 setuid и man 2 execve
su уже собран и входил в тандартный набор утилит на том PlayBook, который я держал в руках. Suid бит тоже установлен, как и положено. Но пароль рута неизвестен.

Собрать свой su из исходников не проблема. Можно его и пропатчить так, чтобы он пароль не спрашивал. Но вот записать новый su на PlayBook будет уже сложнее. Вытащить накопитель можно (а вернее, скопировать образ файловой системы с командами), но этот образ зашифрован. Так что не всё так очевидно.

В любом случае, взлом PlayBook немного выходит за рамки темы, которую я написал. С пониманием отнесусь, если этот разговор продолжится в другой теме или на другом форуме.
Извиняюсь, думал какой-то очередной net-book. Согласен насчет оффтопа, прекращаю.
UFO just landed and posted this here
Конечно, реальное время это большой козырь, но QNX выбирают не только из-за этого. Очень немаленькую роль играет, например хорошая и подробная документация (на английском, хотя существуют частичные переводы). Плюс к этому удобная и лёгкая разработка, как высокоуровнего ПО, так и драйверов устройств.

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

Безотказность это следствие использования микроядра. В QNX любой драйвер это рядовой процесс, такой же как и пользовательская программа. Например, при сбое драйвера файловой системы его легко можно перезапустить без перезагрузки всей системы. Конечно, есть и такие средства как сторожевой таймер (watch-dog) и менеджер высокой готовности (HAM).

Так сложилось, что я сначала познакомился с книжкой Сергея Зыля (по QNX6), а потом прочитал Kolnick'а и Krten'а (это уже по QNX4). На самом деле хороших книг по QNX не так и много. Думаю, что отчасти это связано с тем, что с QNX поставляется обширная и очень качественная документация.
Ну в плане для чего применять. Смотрите, когда необходима высокая эффективность моделирования процессов реального времени, значит и необходима возможность отладки некоторого алгоритма или модели, который или которая в свою очередь взаимодействует с аппаратурой, работающей в режиме реального времени. Сейчас вообще для проектирования и отладки таких моделей стандартом де-факто является среда Matlab Simulink, но это псевдо-реальное время, в зависимости от ресурсов рабочей машины моделирование будет протекать или быстрей или медленнее (грубо сказано).
Добавлю пример из жизни, на работе собирали стенд для тестирования алгоритмов защиты некоторого устройства, так вот архитектура представляла из себя двухмашинный комплекс. Первый ПК работал под управлением Windows и был предназначен для проектирования моделей алгоритмов защит, второй ПК — под управлением ОС реального времени QNX и был оснащённый платами ЦАП и АЦП, благодаря которым в реальном времени происходил обмен данными с испытуемым устройством.
>Еще интересно есть ли какие-то механизмы в QNX которые позволяют безотказно функционировать всей системе? Тоесть чтобы например в искуственном сердце при возникновении ошибки в прриложении, система все перезапустила, а само микроядро не зависло?

Процессорное время выделяется в соответствии с приоритетами задач, поэтому задача с более низким приоритетом никогда не сможет застопорить более приоритетные задачи.
Далее, если есть несколько задач одного и того же приоритета, то процессорное время выделяется им по принципу round robin, т.е. каждая из задач гарантированно получает своё процессорное время.
Это если вкратце.
Спасибо, что уточнили. Для меня многие вещи в QNX настолько привычны, что мне надо предварительно подготовиться, чтобы самое важное и интересное не забыть.
>> Процессорное время выделяется в соответствии с приоритетами задач, поэтому задача с более низким приоритетом никогда не сможет застопорить более приоритетные задачи.

Понятно, что у задач есть приоритеты (как и во всех современных ОС) и также понятно, что теоретически это не мешает низкоприоритетным задачам стопорить высокоприоритетные (собственно en.wikipedia.org/wiki/Priority_inversion ). В QNX это решается с помощью наследования приоритета en.wikipedia.org/wiki/Priority_inheritance, опять же как и в других современных ОС. Это не особенность QNX.
>В QNX это решается с помощью наследования приоритета en.wikipedia.org/wiki/Priority_inheritance, опять же как и в других современных ОС. Это не особенность QNX.

Вот только почему-то в «других современных ОС» пользовательское приложение может легко отожрать весь проц, да так что мышка еле дёргается. Неужели прикладные задачи запускаются с тем же приоритетом, что и системные?

Что касается равноприоритетных задач — тут всё дело в волшебных пузырьках слове «гарантированно». Система гарантирует, что ни одна задача не отъест больше процессорного времени, чем остальные равные ей по приоритету. Прошёл отпущенный квант времени — освободи помещение и иди в конец очереди. В «других современных ОС» это, очевидно, не так, иначе они бы тоже именовались «RTOS».
>> Вот только почему-то в «других современных ОС» пользовательское приложение может легко отожрать весь проц, да так что мышка еле дёргается. Неужели прикладные задачи запускаются с тем же приоритетом, что и системные?

Очевидно, нет. Возможность «отожрать проц», как вы понимаете, может быть связана с множеством причин — особенностями планировщика, планировщика ввода-вывода и множеством других. В основном это результат тяжелого компромисса между требованиями к производительностями и требованиями к отзывчивости в ОС «нереального» времени. Идеал вообще — штука труднонаходимая.

>> то процессорное время выделяется им по принципу round robin, т.е. каждая из задач гарантированно получает своё процессорное время.
>> Система гарантирует, что ни одна задача не отъест больше процессорного времени, чем остальные равные ей по приоритету

Само по себе использование алгоритма Round Robin совершенно не делает систему системой реального времени. Это простейший алгоритм, он используется со времен зарождения многозадачности. Для того, чтобы ОС стала ОСРВ нужно гораздо больше. Впрочем, надеюсь, автор осветит это в своих следующих статьях.
Это может показаться странным, но у меня нет возражений ни по одному из пунктов :)

Разумеется, очень многое упирается в планировщик и другие компоненты ядра, и разумеется, round robin сам по себе ещё ничего не означает (кстати, на нём свет клином не сошёлся, в QNX предусмотрены и другие алгоритмы, он просто используется по умолчанию).
Затык именно в том, как он реализован и всё в том же ключевом слове «гарантированно».
Наверное, Вы правы, в инверсии приоритетов и наследовании приоритетов ничего необычного нет. Однако, стоит учитывать, что в QNX используется микроядро, а все драйверы это обычные процессы. А значит влияние системных вызовов на задержки минимально.

Помимо всего прочего, в QNX есть технология Adaptive Partitioning. Можно группировать процессы в блоки, которым задавать процент процессорного использования времени, который они не могут превышать.
Да. а микроядро и Adaptive Partitioning — это уже особенности.
Надеюсь, в своей серии статей вы не обойдете вниманием момент производительности микроядра (против монолитного/гибридного). Все мы слышали, что микроядро «медленное-медленное-медленное!». Хотелось бы узнать насколько медленное или это вообще предрассудок. Как насчет того, чтобы погонять какой-нибудь общий бенчмарк производительности против linux/*bsd?
И про Adaptive Partitioning. Какова реальная польза от использования? Есть ли применение за пределами ОСРВ?
Вот, пожалуйста, такой заказ на следующие статьи)
Подумаю.

В общем случае, микроядро и передача сообщений будут медленнее, чем монолитное ядро, т.к. переключений контекстов больше. Но в с случае с QNX это не трагедия, т.к. переключения контекстов достаточно шустрые. В любом случае реальное время не даётся просто так, стабильность результатов в обмен на некоторое общее замедление присутствует.

Ну и кое-какие результаты тестов, конечно есть. Например в Linux могут быть провалы или скачки, а в QNX всё идёт ровненько.
В QNX используется микроядро. Которое состоит из менеджера процессов и шедуллера. Очень «примитивное» ядро. Так вот, программист точно знает в какие моменты времени ядро вытеснит все процессы, переназначит приоритеты и отработает свой код. Так же программист знает сколько точно длится этот период. Время между двумя ближайшими «включениями ядра» называется системным тиком, можно понимать как период работы системы. Системный тик остается постоянным.
Плюс к этому система написана так, что все операции по возможности атомарны и нет никаких отложенных операций и прочих «хаков». Это позволяет безопасно прерывать исполнение процессов и отдавать процессор более приоритетному процессу.
Это дает возможность строить системы, которые обладают высокой точностью во времени. Программа не может «опоздать» к исполнению или исполняться дольше чем должна по каким-то не зависящим от нее системным причина. QNX дает возможность четко контролировать время. Отсюда и название.
Когда я начал работать в QNX, я был поражён наличием функции nanospin(), которая гарантирует временную задержку с точностью до наносекунд.
Спасибо за статью! Я пробовал зимой где-то скачать и установить систему но запутался на сайте что там и куда… Скачал потом что-то, а оно просило серийник при инсталяции :(

В интернете читабельной инфы очень мало

У меня есть какой-то древний QNX но он инсталируется только с виндовс 98
а потом при загрузке системы делает бут меню и грузит всю систему из одного большого файла на диске.
Да на сайте, к сожалению, не всё так очевидно. Теперь Вам удалось зарегистрироваться и получить ключ? Информацию в русском Интернете будем добавлять. ;-}

Судя по всему, у Вас диск из книжки Сергея Зыля с QNX 6.2.1NC. Или даже более старая версия. Тогда QNX6 умел делать файловую систему в большом файле на разделе FAT в Windows. Скорее всего это было сделано с целью популяризации QNX6. Сейчас в этом уже нет необходимости, т.к. QNX (4 и 6 версии) очень хорошо поддерживают VMWare. Кстати, книжка очень даже полезная, а вот диск уже устарел.
QNX интересная ось, голова(CIS) в автомобилях bmw работает именно на ней.
UFO just landed and posted this here
Лет 9 назад (+-) у нас по школе ходил образ загрузочной дискеты с демоверсией qnx. Меня тогда очень удивило, что разрешение экрана можно было поставить поддерживаемое без всяких драйверов.

В этой демо версии вроде даже браузер свой был.

У сторонников теории «виндовс маст дай» qnx был одним из козырей в спорах)
Было-было такое.
Я тогда болел загрузочными дискетами с Linux, но там голая консоль, а тут такое чудо )
Это, кстати, был диск с QNX4. На дискетке помещались ядро, небольшой набор утилит, сервер Photon (графическая система) с драйвером, набор популярных тогда сетевых драйверов и свой собственный браузер Voyager.

Дискета, кстати, была популярна ещё до совсем недавнего времени.
автор — молодец.
только нафиг эту установку, это все бубны же.
расскажите лучше про СОЛЬ системы, как она справляется с реалтаймом и как она работает на слабых системах. и вообще особенности разработки продукта под нее. про курьезы расскажите, которые неизбежно порождает требование реалтайма.
Поддерживаю. Все эти описания процесса установки и менюшек абсолютно не нужны, если не понятно зачем вообще нужна эта ОС.
Согласен. Установку можно самостоятельно осилить, если система действительно интересна и/или нужна. С другой стороны автору непременно попеняют на отсутствие информации по установке.
Поэтому, уважаемый ob1, если и будете рассказывать об установке, то не тратьте много сил на это. Поберегите их для экскурсов в суть системы :)
Всё-таки про установку надо немного рассказать. Чтобы каждый не разбирался с одним и тем же. Существуют разные способы установки, разные образы дисков. И описать простой и понятный путь, наверное, стоит.

Хорошо, раз есть такой интерес к применению и назначению QNX, то эту информацию я постараюсь подготовить в первую очередь.
Узнал о QNX только с официального сайта, представляющего Playbook, и загорелся. Было бы прекрасно увидеть Lessons по разработке по типу уроков от университета Стенфорда по iPhone Development, когда-то они очень мне помогли…
Сорри, ссылка из-за слитой кармы не пропечаталась, но ищущий да найдет CS193P iPhone Application Development ;) И очень хочется увидеть обучающие видео-скринкасты, чтобы сделать что-нибудь более сложное, чем ¡Hello, world! =)
Готовых видео уроков по QNX, наверное, нет. По крайней мере я не помню, чтобы они были доступны. По QNX проводятся курсы, например, нашей компанией тоже.

Одно время мы хотели подготовить такое видео, но пока его нет. Думаю, что рано или поздно оно появится, тогда я об этом тоже напишу.
А курсы платные? Просто я уверен, что энтузиасты могут выложить свои скринкасты, например, на Youtube — такая практика уже давно применяется
Да, курсы платные.

Не удивлюсь, что с ростом популярности QNX как мультимедиа платформы, появятся и обучающие видеоролики подготовленные заинтересованными пользователями. Кстати, роликов с QNX на Youtube немало. Например:

www.youtube.com/watch?v=2Kc9bOSEMts
www.youtube.com/watch?v=yTUweJKAUfk
Спасибо за интересную инфу!
Хотелось бы узнать, а с графическими и мультимедийными приложениями работает кто-нибудь в этой системе? т.е., на десктоп ставит кто-нибудь с целью «жить» в этой системе?

Есть ли там bash, perl, gnu?
Графика и мультимедиа самобытная. Когда-то собирали VLC, мы недавно собирали MPlayer. Кстати, звуковая система QSA ответвилась когда-то от ALSA.

Жить в системе вполне можно, раньше некоторые жили, был в своё время Netscape. Однако, надо понимать, что хоть система вполне адекватно смотрится на десктопе, но QNX хорош как встраиваемая система.

Родная оболочка — ksh, bash тоже можно поставить. Perl есть в pkgsrc. Родной компилятор — gcc.
Спасибо за интересное описание, надеюсь это только первая статья из серии! Самому очень интересно прочувствовать именно «идеологию» риалтайма и понять, какие механизмы гарантируют то или иное время обработки задач. Сам работаю с «управляемыми» языками, где сборщик мусора может в любой момент остановить все без исключения потоки :)
В РЖД на QNX работают контроллеры, которые собирают информацию с датчиков температур, давления, смещения и тд, установленных на объектах инфраструктуры.
Моё знакомство с QNX началось со скачивания демо-дискетки. Интернета не было. Оценить систему по достоинству тогда не смог. Жаль образ дискеты уже давно не найти на офф. сайте(( Спасибо за статью!
До сих пор лежит дома печатный CD с QNX4, красивая такая :)
В универе под нее писали на С софт для работы с наземными станциями слежения за спутниками и т.д.
Статья интересная, к сожалению информации действительно мало в интернетах. Особо интересует вопросы сравнения Linux c патчами реального времени и QNX. Я сам отдаленно связан с автоматизацией (телемеханника ТП, РП и тд) и у меня сложилось мнения, что производителям оборудования очень нравиться эта операционка, вот только я так и не понял из-за чего и простого ответа на этот вопрос так и не нашел :(
Какова стоимость лицензии для коммерческой разработки?
И надо ли покупать коммерческую лицензию заказчику или можно обойтись некоммерческой?
Для разработки надо покупать лицензию на средства разработки, а именно, на QNX SDP.

Каждая установка QNX Neutrino требует run-time лицензию. Эта цена гораздо ниже цены на средства разработки и зависит от модулей, которые предполагается использовать. Например, без графики (без Photon) стоимость получается ниже.

Если Вы заказчику будете поставлять какое-то конечное изделие с QNX, то заказчику ничего дополнительно покупать не надо. В этом случае, Вам надо будет приобретать run-time на QNX. Если Вы хотите поставить заказчику свой софт, а тиражировать он будет самостоятельно, то заказчик должен будет приобретать лицензии на run-time модули. Если же заказчик захочет ещё и дорабатывать Ваш код, то ему понадобятся лицензия на средства разработки.

Цены тут озвучивать, наверное, неправильно. Я Вам в личку сейчас скину ссылку, где Вы можете запросить цены.
Место разработчика стоит примерно 150 000 руб и его приобретение необходимо для закупок лицензий для конечных устройств. Одна лицензия на устройство в минимальной комплектации, только ядро и основные драйвера, без скидок на кол-во — примерно 5 000 руб. Но стоимость очень сильно зависит от кол-ва лицензий, отличия на порядки.
Академическая лицензия требует написания научных трудов и их публикации, т.е. просто так сказать, что типа мы тут денег не зарабатываем не получится.
В ходе обсуждения были предложены следующие темы для будущих топиков по QNX. Этот список я добавил в конец топика:
  • Сеть в QNX: Qnet.
  • Обзор механизмов межпроцессного взаимодействия в QNX.
  • Архитектура QNX. Микроядро.
  • Средства разработки для QNX.
  • Установка. (И хоть многие были против, но я, наверное, подготовлю небольшую заметку.)
Буду потихоньку готовить и публиковать. Если что-то интересно ещё, то пишите в личку.
Хех меня эта система как то спасла. Был я полным ламером, заглючила у меня винда98я и отказался комп ходить по инету через модем, хоть тресни. А надо было для реферата по психологии срочно надергать с сети материала. На счастье на диске от журнала Hard'n'Soft оказался установочный образ QNX который ставился в виде хитрого раздела аля файл на диске и прописывался в загрузчик. Поставил, бутанулся в него. Графически интерфейс и основной софт (браузер и диалап звонилка) там уже был. Скачал нужный материал, закинул на дискетку, грузанулся в винду, достал распечатал. Бинго! Тогда я не придал этому значения, ну еще одна ОС как ос. Теперь же понимаю, что чертовски круто, что такая нетипичная ОС с пол тычка стартанула у меня из коробки и дала вполне вменяемое рабочее окружение. Линух этому научился лишь спустя несколько лет.
Приветствую автора! Я понимаю, что вопрос мой скорее всего имеет ответ не в двух словах. Дело в том, что есть на руках прошивка и копия её с одного автомобиля. Хотелось бы как-либо добавить в голову FLAC формат. Сам я не программист, и *nix системами дел не имел. Штатный виндузятник. Как обрабатывает мультимедийный плеер в транспорте библиотеки можно понять посвященному человеку, но найти мне лично самому библиотеку для папки \efs-system\lib\dll\mmedia типа *_parser.so ума не приложу, а тем более как научить магнитолу её подхватывать. Правда в конфигах был файл, где задавались форматы, и wav я таки себе разрешил, сняв комментарий со строки, но на следующей версии прошивки этот финт уже не прокатил, хотя штатные мелодии вызова сохранены в том же wav формате. Форум наш qnx мне не помог или не знают, или не до меня или светиться не хотят) В общем на данный момент у меня нет только возможности записи в ifs-root. А хотелось бы всё таки себе по феншую flac сделать, хотя и wav это уже прогресс. Прошу ответить мне, даже при не очень обнадёживающей информации. А вообще за этой ОС будущее конечно. Я аж завидую по хорошему тем, кто с ней на «ты».
Sign up to leave a comment.

Articles