OS SuperLoop-M
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено smav 14 ноября 2003 г. 20:31
В ответ на: это хорошо, когда девайс делает несколько маленьких задачек, время исполнения каждой строго детерминировано , тогда(+) отправлено DASM 14 ноября 2003 г. 11:52

Простейшая корпоративняя ОС - Супер loop:
main()
{
while(1)
{
task(1);
task(2);
...
task(n);
}

Недостаток - если одной задаче нужно ждать какого-то события, другие задачи не смогут выполняться.
Модифицированный вариант:

static int taskFlags;
void mainLoop()
{
while(1)
{
if (taskFlags & 1)
{
taskFlags |=1;
task(1);
taskflags&=(~1);
}
if (taskFlags & 2)
{
taskFlags |=3;
task(2);
taskflags&=(~2);
}
}
}

main()
{ init();
mainLoop();
}
Если задача должна ждать какого-либо события - она в цикле ожидания вызывает mainLoop, давая возможность выполняться остальным задачам

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

Ответы



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

E-mail: info@telesys.ru