[ZX]
-
- Вот вы говорите, что есть проблема использования в вытесняющих осях функций newlib, и об этом забывают. Но может не забывают, а такой проблемы нет или она проявляется у вас на используемых вами МК. Apтём(77 знак., 06.07.2012 19:29)
- Да к любой либе идёт описание, где сказано, реентерабельная она или нет. Часто идут с несколькими вариантами компиляции, нужно указать линкеру или IDE какой использовать. - =AlexD=(06.07.2012 21:28)
- Всё есть в описании, согласен. Тогда непонятно с какими именно функциями у fk0 проблемы. - Apтём(06.07.2012 22:24)
- Да к любой либе идёт описание, где сказано, реентерабельная она или нет. Часто идут с несколькими вариантами компиляции, нужно указать линкеру или IDE какой использовать. - =AlexD=(06.07.2012 21:28)
- Комментарий про стек и setjmp/longjmp понятент. И я видел пример реализации кооперативной ОСи на setjmp/longjmp для x51 (!!!) у которого ОЗУ так вообще кот наплакал. Это опять же все понятно. И опять же мне кажется, что я пытаюсь уйти от bialix(564 знак., 06.07.2012 17:28)
- Не надо гнаться за "читаемыми" программами. Надо разделить проектирование и программирование. Программа после этого должна быть не читаемой, а верифицируемой, что она соответствует документации, где есть схема конечного автомата, например. Вот fk0(39 знак., 06.07.2012 17:50)
- Я не могу с вами согласиться. Программы пишутся для людей, чтобы их читали. Хорошие программы пишутся не по принципу: написал и забыл, а их приходится дорабатывать, улучшать, добавлять новые функции. Нечитаемые программы превращают дальнейшую bialix(3172 знак., 06.07.2012 18:12)
- В рамочку и на стену :-) Если напрячься, то и дизассемблер можно верифицировать :-) Нет, читаемость точно не вредит. - SciFi(06.07.2012 17:59)
- Не надо гнаться за "читаемыми" программами. Надо разделить проектирование и программирование. Программа после этого должна быть не читаемой, а верифицируемой, что она соответствует документации, где есть схема конечного автомата, например. Вот fk0(39 знак., 06.07.2012 17:50)
- Насчет code.google.com/p/protothread: мне казалось, что это просто творческое развитие прототредов Дюнкеля. Оказалось, что там все написано с нуля и немного по-другому. Именно кооперативная ОС. Но мне это не надо. Я так умею. Я хочу по другому. bialix(83 знак., 06.07.2012 17:23)
- Спасибо за длинный ответ. Я его сейчас пытаюсь переварить и буду отвечать и задавать уточняющие вопросы по частям. - bialix(06.07.2012 16:47)
- Добавил бы про необходимость изобретать велосипед, если нет десятков килобайт ОЗУ. sbb(349 знак., 06.07.2012 15:58)
- Контекст в прототредах очень маленький. Сохрание локальных переменных между вызовами прототредов может потребовать дополнительной памяти, а может и нет. Зависит от программы. Ваш комментарий я не очень понял. - bialix(06.07.2012 16:48)
- Я про то, что вытесняющую многозадачность можно применять и на очень скромных ресурсах. sbb(524 знак., 06.07.2012 18:25)
- Для меня существенным вопросом является тестируемость кода. Как это все тестировать, без ОСи? Мы будем вынуждены в тестах подменять сервисы ОСи на свои заглушки и моки. Задача решаема. Главное чтобы сам код был тогда минимально завязан на сервисы bialix(158 знак., 06.07.2012 18:36)
- До конца не понял, зачем тестировать без ОС и подменять? И если по сути будет своя самописная многозадачность, то тестировать и подменять будет проще? sbb(352 знак., 06.07.2012 19:32)
- кстати, описанная ситуация с драйвером для работы с ибутоном, писалась под линух. и хотя там как бы есть настоящая вытесняющая многозадачность, но для достижения максимально возможного быстродействия мы не использовали никакое вытеснение и вообще bialix(245 знак., 06.07.2012 18:40)
- Бугога, select это надстройка над poll, которое есть полинг события с интервалом времени. По настоящему асинхронны в линухе только специальные функции асинхронного ввода-вывода. - =AlexD=(06.07.2012 18:50)
- Ерунда AD(753 знак., 09.07.2012 12:31)
- +1. Никакого "поллинга" там нет. По-сути аналог WaitForMultipleEvents. Последний, правда, по-функциональнее будет -- вопрос ожидания в unix разных событий, например файловых дескрипторов и POSIX IPC одновременно, AFAIK нерешаемый без "поллинга", fk0(171 знак., 09.07.2012 14:53)
- Linux - найдётся всё posix(38 знак., 10.07.2012 01:15,
)
- Linux - найдётся всё posix(38 знак., 10.07.2012 01:15,
- +1. Никакого "поллинга" там нет. По-сути аналог WaitForMultipleEvents. Последний, правда, по-функциональнее будет -- вопрос ожидания в unix разных событий, например файловых дескрипторов и POSIX IPC одновременно, AFAIK нерешаемый без "поллинга", fk0(171 знак., 09.07.2012 14:53)
- у меня есть основания считать, что select -- это не поллинг. Если у вас есть ссылка на подтверждение ваших слов, то мне будет интересно почитать подробнее. - bialix(06.07.2012 19:00)
- Об особенностях этих функций я помню ещё с тех времён, когда собирал ядро FreeBSD :-P, впрочем в линухе оно сделано так-же. Я те нагуглил простенькое описание (см. Как работает select()). - =AlexD=(06.07.2012 22:04, ссылка)
- Мягко выражаясь, чушь. Любой желающий может посмотреть реализацию: fk0(943 знак., 09.07.2012 15:52 - 15:54)
- аффтар 2.4 кернел использовал, тяжело ему было... - posix(10.07.2012 01:22,
)
- аффтар 2.4 кернел использовал, тяжело ему было... - posix(10.07.2012 01:22,
- Мягко выражаясь, чушь. Любой желающий может посмотреть реализацию: fk0(943 знак., 09.07.2012 15:52 - 15:54)
- Об особенностях этих функций я помню ещё с тех времён, когда собирал ядро FreeBSD :-P, впрочем в линухе оно сделано так-же. Я те нагуглил простенькое описание (см. Как работает select()). - =AlexD=(06.07.2012 22:04, ссылка)
- Ерунда AD(753 знак., 09.07.2012 12:31)
- Бугога, select это надстройка над poll, которое есть полинг события с интервалом времени. По настоящему асинхронны в линухе только специальные функции асинхронного ввода-вывода. - =AlexD=(06.07.2012 18:50)
- Для меня существенным вопросом является тестируемость кода. Как это все тестировать, без ОСи? Мы будем вынуждены в тестах подменять сервисы ОСи на свои заглушки и моки. Задача решаема. Главное чтобы сам код был тогда минимально завязан на сервисы bialix(158 знак., 06.07.2012 18:36)
- Я про то, что вытесняющую многозадачность можно применять и на очень скромных ресурсах. sbb(524 знак., 06.07.2012 18:25)
- Контекст в прототредах очень маленький. Сохрание локальных переменных между вызовами прототредов может потребовать дополнительной памяти, а может и нет. Зависит от программы. Ваш комментарий я не очень понял. - bialix(06.07.2012 16:48)
- Вот вы говорите, что есть проблема использования в вытесняющих осях функций newlib, и об этом забывают. Но может не забывают, а такой проблемы нет или она проявляется у вас на используемых вами МК. Apтём(77 знак., 06.07.2012 19:29)