cumtgao 发表于 2012-7-12 15:15:01

我所理解的多任务

假设 一个系统程序里只有2个周期性任务在运行,定为任务A和任务B我的理解是如果任务A的优先级高 A先运行 A运行完后调用延时函数使自己挂起 使得B得以在任务调度时能运行。
按这样的思路如果任务A和任务B的代码都很长 每个代码运行时间都要花费10MS的话那么B必须要等A运行完了 (即10ms)后才能运行自己如此CPU还可以被称为多任务并行么?感觉就好像还是单任务一样啊 类似于单任务下 死循环A任务然后每10ms调用B任务一样
不知我的理解有没有误欢迎拍砖。。

jackiezeng 发表于 2012-7-12 15:35:17

但是操作系统还有种时间片的调度方式,比如时间片是1MS切换 , 你上面所讲的情况就是,A执行1MS , B 执行1MS , 等到20MS后,两个任务执行完。
哪怕A未完成,也会被切换到B执行。

cumtgao 发表于 2012-7-12 17:39:38

UCOS不支持时间片轮转吧?好像是抢占式额

pang123hui 发表于 2012-7-12 17:46:25

我们常用的usoc-ii不支持时间片轮转的,不过在人为设计中,也可以A运行一部分,人为延迟释放MCU,B运行一部分,就是说程序就是一个switch case,每个case就是一部分,未必任务A要一次性运行完呀

cumtgao 发表于 2012-7-13 08:32:57

回楼上,实体设计时是不是 如果A任务较长 可以人为在A运行一段时间后加入一个延时 让出CPU。就这样 在A中嵌入几个延时 实现类似时间片轮转?
页: [1]
查看完整版本: 我所理解的多任务