[ZX]
-
- Тока похоже, что товарищи забыли про восстановление "окружения", которое было в момент вызова их планировщика. Видимо они предполагают, что это сделает тот, кто будет пользоваться этой RTOS. - AlexBi(26.04.2010 18:04)
- Под "окружением" что понимается? Во-первых выполнение "задачи" может быть остановленно только в одной функции верхнего уровня, которая собственно "задачей" и является (блокировка в вызываемых функциях недопустима, либо их вызывать надо как fk0(226 знак., 27.04.2010 12:16)
- Там ничего про статические переменные не говорится Sergey_N(537 знак., 27.04.2010 12:34)
- ;) превратное понимание - Vit(27.04.2010 22:32)
- 3) приоритеты чего? вытеснения нет. можно, конечно, запускать согласно приоритетам, но смысла не особо много. а то в недостаток можно поставить отсутствие оконной системы и COM-объектов. - fk0(27.04.2010 14:49)
- 2) я ж и пишу: выкинуть goto (который для финских студентов-любителей) и заменить на профессиональное решение в виде switch(i) { case __LINE__: ... -- минус только в том, что если в функции делать switch, то в нём нельзя вызывать блокирующие функции. - fk0(27.04.2010 14:47)
- По пунктам: 1) -- чушь. поскольку переключение контекста не "вытесняющее", а контролируемое, очень всё чётко и просто контролируется (и локальные переменные есть, но, понятно, "временные"). - fk0(27.04.2010 14:45)
- 1) - да, почти всё нужно делать нелокальным, удобно в качестве расширения структуры с контекстом, добавлять туда поля, необходимые для задачи. Заодно по тому же указателю адресуются. ReAl(835 знак., 27.04.2010 13:06, ссылка, ссылка)
- А мне вообще непонятен этот гемор, вместо нормального переключения стека. Что экономится? Память на несколько регистров? Если переключать контекст не по прерыванию, а строго по явному запросу, то можно охранять не все регистры, и экономия становится =AlexD=(17 знак., 27.04.2010 21:07)
- Структура по указателю неудобна, ибо медленный/большой код. - fk0(27.04.2010 14:51)
- Там ничего про статические переменные не говорится Sergey_N(537 знак., 27.04.2010 12:34)
- Под "окружением" что понимается? Во-первых выполнение "задачи" может быть остановленно только в одной функции верхнего уровня, которая собственно "задачей" и является (блокировка в вызываемых функциях недопустима, либо их вызывать надо как fk0(226 знак., 27.04.2010 12:16)
- Беглый взгляд показал Sergey_N(113 знак., 26.04.2010 18:03)
- Я о концепции protothreads в целом. То что там есть сейчас -- уныло в плане синхронизации. То что есть в другой известной реализации (куда ссылка с сайта) -- ещё более уныло, ибо там "планировщик" тупо вызывает всё подряд до победного успеха и жрёт fk0(191 знак., 27.04.2010 12:18)
- ;) финские студенты расставляют всем таскам по 1К+ стека и синхронизируют фсё по приоритету - Vit(27.04.2010 22:29)
- Уныло. С таким подходом внешний DRAM нужен. - fk0(28.04.2010 12:31)
- два. каждому. - Vit(28.04.2010 14:18)
- Уныло. С таким подходом внешний DRAM нужен. - fk0(28.04.2010 12:31)
- Ну, насколько я вижу, прикрутить Idle function труда большого не составит. - Sergey_N(27.04.2010 12:36)
- ;) финские студенты расставляют всем таскам по 1К+ стека и синхронизируют фсё по приоритету - Vit(27.04.2010 22:29)
- Я о концепции protothreads в целом. То что там есть сейчас -- уныло в плане синхронизации. То что есть в другой известной реализации (куда ссылка с сайта) -- ещё более уныло, ибо там "планировщик" тупо вызывает всё подряд до победного успеха и жрёт fk0(191 знак., 27.04.2010 12:18)
- Тока похоже, что товарищи забыли про восстановление "окружения", которое было в момент вызова их планировщика. Видимо они предполагают, что это сделает тот, кто будет пользоваться этой RTOS. - AlexBi(26.04.2010 18:04)