1.最基本的:系统开始运行OSStart()会引发一次调度
2.创建一个新任务时,如果此时系统在运行状态,则引发一次调度。3.某任务调用挂起函数挂起自己后引发一次调度。
4.调用恢复任务函数OSTaskResume()引发一次调度。
5.任务延时时,引发一次调度。
6.任务请求或释放事件时(信号量,邮箱,队列),引发一次调度
7.中断退出时,(因为调用了OSIntEXIT)包括时钟节拍中断
8.调度器解锁时(若此时无中断嵌套)
9。系统运行中,删除一个任务后。
求补充。。。。
另外,求ucos玩的很通的大神指导一个问题,ucos的源代码需不需要逐句的读懂。比如一个函数,知道它大概实现什么功能就行了,还是要把代码读通!
ucos不熟悉。曾经接触过的一款OS,印象中有一条概括:任何中断和调用OS提供的函数,都(可能)会引起调度。
哎呀……现在是无处验证了
这个在ucos上挺符合的,中断肯定会引起调度,大多数系统服务函数也会引起调度
恩,个人认为这个说法还是很谨慎的,确实起到了概括的作用。毕竟大部分情况下不需要任务调度的话,就不需要操作系统来提供函数调用啦,可是难免会有些不找OS实现不了,可是又和任务调度无关的事,比如获取一下当前任务的ID,^_^,我主要是没有确认过这个功能是否会引起调度,只是主观上认为这个家伙不用调度,调度的话性能会下降(可是万一某种实现方法所有的系统调用都会统一经过调度呢……)。
算啦不纠结了,相对来说这个问题重要度还不是最高的,只能呵呵了