Аааааа... так бы сразу и сказали, хм... однако каким образом (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SOIC 03 апреля 2003 г. 11:26
В ответ на: У кооперативных RTOS стек общий для всех задач. Вот и экономия. отправлено Михаил Евстафьев 03 апреля 2003 г. 09:19

каким образом можно использовать один стек для нескольких задач:

работа задачи 1:


task1()
{
for(;;)
{
f1();
f2();
}
}

f2()
{
OS_Yield(...); // переход на задачу 2
}

Работа задачи 2:


task2()
{
for(;;)
{
f1();
f3();
}
}

f3()
{
f4();
}
f4()
{
OS_Yield(...); // переход на задачу 2
}


Что получится в стеке?

Задача 1 загнав в стек при вызове f2 адрес возврата в task1, переключается на задачу 2. задача 2, думая что в стеке адрес возврата из f4 возвращается в task1 (а нужно было в f3)...

так каким образом получается один стек для всех задач?


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru