Здравствуйте уважаемые гуру!
Я, как в большей степени теоретик от программирования, неоднократно слышал и читал общие фразы в стиле: ".. ОС позволяет упростить работу программиста и существенно сократить время создания ПО...". В то же время на форумах при обсуждении вопроса нужна или не нужна ОС в данном конкретном случае, всегда приходят к выводу: "не нужна, т.к. это избыточная заморочка".
Объясните, пожалуйста, чайнику: когда конкретно использование ОС выгодно во встроенных приложениях? Какие признаки это выгодности ?
Заранее Вам благодарен.
Сергей Борщ
Nov 24 2009, 12:30
Цитата(Aiva @ Nov 24 2009, 14:10)

всегда приходят к выводу: "не нужна, т.к. это избыточная заморочка".
Как правило к такому выводу приходят те, кто никогда ее не использовал. Мое мнение - использовать всегда, если позволяют ресурсы. Попробуйте, и делайте выводы сами.
Dima_G
Nov 24 2009, 12:38
Когда процессор занимается более чем одной задачей

К примеру - просто генерить меандр ножкой - ось не нужна.
если генерить меандр и выводить даные в UART - ось желательна
А если генерить менадр, выводить данные в UART и рисовать что-то на дисплее - без оси будет довольно тяжело жить
sigmaN
Nov 24 2009, 16:40
А если принемать/передавать по УАРТ, сжимать/разжимать вокодером голос, гонять данные от кодека/к кодеку через McBSP и ещё несколько периодических процессов по прерыванию от таймера.... Без оси всё это работает и не так уж и сложно это всё....с осью на данном проце с данным объемом памяти и при данном энергопотреблении - дело бы не пошло.
Примеры эти привел не в качестве осуждения. Мне тоже интересен вопрос, заданный автором.
sergeeff
Nov 24 2009, 19:10
Ответ прост - встроенные ОС были разработаны для облегчения программирования в случае наличия многих задач. И такие ОС содержат набор отлаженных и проверенных функций для реализации этой многозадачности. Можно ли это решить без ОС? Можно. Как можно все писать на ассеблере, но по тем же соображениям (удобства программирования, в конечном счете) появились языки более высокого уровня.
Правильно ли я понял из всего вышесказанного:
1. ОС нужна ТОЛЬКО для параллельного выполнения нескольких задач.
2. Ось имеет средства так организовать выполнение задач, что они автоматически определяют время бездействия проца и без участия программиста втюхивают нужный в данный момент код для выполнения;
3. Без оси необходимо вручную выщитывать времена для таймера и т.п., что трудно если задач 10-ки и чревато неоптимальным выполнением кода.
Правильно ли это и все ли это ? Может еще есть преимущества ОС?
mempfis_
Nov 24 2009, 21:04
ОС упоминаемые на этом форуме не пользовался но пользовался менеджером задач с возможностью вызова до 64х задач с приоритетом от 1 до 64. Как оказалось вещь очень удобная в случае когда нужно исполнять до нескольких десятков задач паралельно. Заметно облегчает написание программы т.к. позволяет описать каждуюу задачу в пределах одного task с использованием текущего состояния и независимого вызова каждого из них. Сейчас разрабатываюустройство gps-трекера с использованием такого менеджера задач (читай ОС) - результат очень хороший - каждая задача вызывается независимо от остальных, имеет своё текущее состояние, выполняется и в принципе может быть использована в других проектах без существенной переделки.
P.S. IMXO применять ОС там где нужено обслуживать uart/индикатор/клавиатуру/пару датчиков и .... всё это излишество....
Большинство проектов были именно такими и всё работает без freeRTOS/Linux/WinCE и т.п. подобных на борту.
Многое можно сделать просто описав текущими состояниями программы плюс независимый опрос датчиков.
ОС нужна лишь в том случае, если лениво сделать тоже самое без нее. Т.е. фактически со своей ОС, написанной в процессе решения задачи строго под задачу. Просто готовая ОС в ряде случаев экономит время и силы за счет ресурсов, и больше толку от нее никакого.
GetSmart
Nov 24 2009, 21:40
Цитата(SM @ Nov 25 2009, 03:31)

ОС нужна лишь в том случае, если лениво сделать тоже самое без нее. Т.е. фактически со своей ОС, написанной в процессе решения задачи строго под задачу. Просто готовая ОС в ряде случаев экономит время и силы за счет ресурсов, и больше толку от нее никакого.
Я бы поправил - в ущерб ресурсам, то бишь требует их больше для того же алгоритма. А так, полностью согласен.
Правда некоторые многотредовые алгоритмы реализовывать в один тред - полная ж..а. То есть без оси реализация подобных алгоритмов
иногда может быть даже ресурсоёмче, а не просто сложнее в реализации. Так что всё зависит от алгоритма. Говорить же, что ось нужна в любом проекте - такой же бред, как и то, что она не нужна нигде.
Можно и свою тредопереключалку наваять, не беря готовую ось. Специфическую для задачи. Не велика сложность. Если время позволяет, а ресурсы - нет.
GetSmart
Nov 24 2009, 22:31
Я как раз примерно 3 года назад свою "тредопереключалку" ваял. Вообще ничего от оси, кроме регистрации и переключения тредов там не было. Но решился я на этот "велосипед" только когда запарился реализовывать очень сложный алгоритм, причём он делился на два подалгоритма. Одна часть должна была реализовывать жёстко заданные действия по обслуживанию девайса (с десяток периферийных устройств), а вторая часть должна была содержать пользовательские алгоритмы, которые пользователь должен был (мог) делать не обращая внимания на первую часть. В такой ситуации сам бох велел делать мультитредовость
Цитата(GetSmart @ Nov 25 2009, 01:31)

Я как раз примерно 3 года назад свою "тредопереключалку" ваял.
А я где-то в 90-х, на Atmega103, когда других атмег еще не было вообще. Зачем - сам сейчас не понимаю, молодой наверное был, хотелось "крутоты". Просто чтобы сделать. Однако работала она даже в серийном приборе, 2-х канальная прослушивалка телефонных линий.
Есть очень простой признак - если в вашем проекте у вас возник вопрос 'А какие выгоды дает применение ОС, и не надо ли мне ее тут применить' - то ОС вам (в этом проекте) не нужна
_Pasha
Nov 26 2009, 08:51
Если есть достаточно стабильная и довольно сложная железяка, то рано или поздно все равно появится здоровое желание юзать ось.
По поводу тредопереключалки - в последнее время ограничился protothread-ами или даже выжимками оттуда.
zltigo
Nov 26 2009, 08:59
Цитата(XVR @ Nov 26 2009, 11:26)

Если в вашем проекте у вас возник вопрос 'А какие выгоды дает применение ОС, и не надо ли мне ее тут применить' - то ОС вам (в этом проекте) не нужна

А, если у Вас возник вопрос "А какой вкус имеет суп их черепахи, не попробовать-ли" - то Вам этот суп не нужен - кушайте солянку.
mrKirill
Nov 27 2009, 05:07
Цитата(XVR @ Nov 26 2009, 13:26)

Есть очень простой признак - если в вашем проекте у вас возник вопрос 'А какие выгоды дает применение ОС, и не надо ли мне ее тут применить' - то ОС вам (в этом проекте) не нужна

Этот "признак" может появиться и от недостаточности информации по данному вопросу, потому он явно не решающий.
Цитата(mrKirill @ Nov 27 2009, 08:07)

Этот "признак" может появиться и от недостаточности информации по данному вопросу, потому он явно не решающий.
Отнюдь. Если ваш проект замечательно живет без ОС, логичный, простой и понятный, то искать себе дополнительных приключений на свою задницу явно не стоит.
Если же проект перерос свою степень сложности и уже трудно управляем, либо с самого начала было понятно, что просто и ясно его (без ОС) не сделать, тогда вопрос будет стоять по другому - не 'что мне даст применение ОС', а 'караул! Нужна ОС или я уже не знаю что' - вот тогда она действительно нужна.
Любая ОС требует некоторого порога вхождения, и для проекта типа 'моргание LEDом' он будет больше, чем сам проект.
Конечно, для общего развития стоит знать, что такое ОС. Хотя бы для того, что бы вопрос 'караул! Нужна ОС или я уже не знаю что' не появился слишком поздно
Цитата(zltigo @ Nov 26 2009, 11:59)

А, если у Вас возник вопрос "А какой вкус имеет суп их черепахи, не попробовать-ли" - то Вам этот суп не нужен - кушайте солянку.
Угу, я тут забежал домой на
5 минут в обеденный перерыв - солянки похлебать, а мне говорят - топай в ресторан, черепаховый суп есть! А то так и помрешь, не отведав черепаховый суп!
Вот в отпуск пойду, поселюсь в ресторане, и не уйду, пока все их меню не перепробую
zltigo
Nov 27 2009, 09:31
Цитата(XVR @ Nov 27 2009, 12:01)

Вот в отпуск пойду, поселюсь в ресторане, и не уйду, пока все их меню не перепробую

Тогда жду Ваших "советов" по использованию Операционных Систем ,
после возвращения из "отпуска"
Serhiy_UA
Nov 27 2009, 10:04
Цитата(XVR @ Nov 27 2009, 09:37)

Конечно, для общего развития стоит знать, что такое ОС....
Хорошо бы ссылку, где все было бы ясно и понятно про ОС.
Писал многозадачные программы к MCS196, MegaAVR, Silabs, NiosII, но все без ОС. До десятка независимых процессов + UART, Ethernet, LCD.
Покупать ОС дорого, а осваивать хлопотно. Может, удастся создать простую ОС, лучше своего переключателя задач....
MrYuran
Nov 27 2009, 10:51
Цитата(Serhiy_UA @ Nov 27 2009, 13:04)

Может, удастся создать простую ОС, лучше своего переключателя задач....
Да их и так насоздовано до икса...
осталось только выбрать.
Можно начинать с простых, типа
jacOs или широко известной в узких кругах
scmRTOSГлавное преимущество - унифицированный подход. Можно таскать задачи из проекта в проект, не заботясь о "нюансах"
sergeeff
Nov 27 2009, 15:18
Думается, что документация на scmRTOS, написанная автором просто, понятно и с большим юмором, прояснит любому, что такое RTOS и с чем ее "едят"
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.