2024年3月13日发(作者:宛辉)
在多任务实时系统中,任务状态有四种:①执行状态(execute),表示正在执行中这种状
态的任务只能有一个,由优先数决定。②挂起状态(suspend)表示暂时停止。机器正在进
行输入输出等待或事件等待,所有任务一旦处于挂起状态,机器就在操作系统内循环。③就
绪状态(ready)表示准备完了,一旦来通知就可以继续执行,或者由于优先数高的任务先
执行,而优先数低的处于执行等待状态。④静止状态(dormant)或称潜伏状态,作为任务
已经消除,不能执行的状态。所有的任务都处于静止状态时,表示该程序执行完毕。
转载请注明来自:.cn/Knowledge/nPost/nPost_
uC/OS-II任务挂起和任务延时的异同:
同:二者都使任务进入等待状态。处于等待状态的任务不处于就绪状态,任务在就绪任务表
中登记的就绪标志被取消,任务不可能被调度。
异:挂起的任务只能在其他任务中通过调用恢复函数OSTaskResume()使其恢复为就绪状态,
否则将不可能再次被运行(因为它没有就绪),而延时的任务可以在延时时间到时自动恢复
就绪状态,即使没有其他任务调用取消延时函数OSTimeDlyResume()。
任务挂起是怎么回事
就相当于操作系统中将进程挂起的操作,可以查看itron的源代码,只要有操作系统的原理
知识就可以解决了。
itron里边的任务有三个状态
1 run
2 ready
3 (广义挂起)
3.1 waiting
3.2 suspended
3.3 dormant
3.4 no-existing
一个任务可以在三个状态之间切换,再具体可以看相关资料
ready到waiting,,一个task在ready下时,这个task其实是可以执行的,但是有比他优先
级更高的task在执行,当前task只好reay.这个task需要等待某一事件的发生比如说一个
semaphone,他就跳转到waiting. waiting到ready,这个semaphone解除了,当前task又从
waiting跳转到ready。可以看下资料把那几个状态的跳转关系看一下,就明白了状态大致如
6楼所说,但在最新的4.0系统上多了个二重等待状态
阻塞(pend)与挂起(suspend)的区别
理解一:挂起是一种主动行为,因此恢复也应该要主动完成,而阻塞则是一种被动行为,是
在等待事件或资源时任务的表现,你不知道他什么时候被阻塞(pend),也就不能确切的知道
他什么时候恢复阻塞。而且挂起队列在操作系统里可以看成一个,而阻塞队列则是不同的事
件或资源(如信号量)就有自己的队列。
理解二:阻塞(pend)就是任务释放CPU,其他任务可以运行,一般在等待某种资源或信
1
号量的时候出现。挂起(suspend)不释放CPU,如果任务优先级高就永远轮不到其他任务
运行,一般挂起用于程序调试中的条件中断,当出现某个条件的情况下挂起,然后进行单步
调试。
理解三:pend是task主动去等一个事件,或消息.suspend是直接悬挂task,以后这个task和你
没任何关系,任何task间的通信或者同步都和这个suspended task没任何关系了,除非你
resume task;
理解四:任务调度是操作系统来实现的,任务调度时,直接忽略挂起状态的任务,但是会顾
及处于pend下的任务,当pend下的任务等待的资源就绪后,就可以转为ready了。ready
只需要等待CPU时间,当然,任务调度也占用开销,但是不大,可以忽略。可以这样理解,
只要是挂起状态,操作系统就不在管理这个任务了。
理解五:挂起是主动的,一般需要用挂起函数进行操作,若没有resume的动作,则此任务
一直不会ready。而阻塞是因为资源被其他任务抢占而处于休眠态。两者的表现方式都是从
就绪态里“清掉”,即对应标志位清零,只不过实现方式不一样。
操作系统中睡眠、阻塞、挂起的区别形象解释
首先这些术语都是对于线程来说的。对线程的控制就好比你控制了一个雇工为你干活。你对
雇工的控制是通过编程来实现的。
挂起线程的意思就是你对主动对雇工说:“你睡觉去吧,用着你的时候我主动去叫你,然后
接着干活”。
使线程睡眠的意思就是你主动对雇工说:“你睡觉去吧,某时某刻过来报到,然后接着干活”。
线程阻塞的意思就是,你突然发现,你的雇工不知道在什么时候没经过你允许,自己睡觉呢,
但是你不能怪雇工,肯定你这个雇主没注意,本来你让雇工扫地,结果扫帚被偷了或被邻居
家借去了,你又没让雇工继续干别的活,他就只好睡觉了。至于扫帚回来后,雇工会不会知
道,会不会继续干活,你不用担心,雇工一旦发现扫帚回来了,他就会自己去干活的。因为
雇工受过良好的培训。这个培训机构就是操作系统。
内存暂处理不过来的程序,称之为挂起程序
就是该程序未处于运行状态,但也没有被结束,只是暂时冻结
挂起 就是进入后台操作
前台看不见 我们能看到的 就是前台
我们看不到了 其实程序还在运作 或者说这个程序还在占用一定的内存空间 就
是后台运行 就叫挂起 有些挂起还是可以看到的 比如缩到 右下角的任务栏里
了
任务调度的几种状态
任务常见的有4种状态:就绪状态、运行状态、等待状态和挂起状态。内存中的
任务必须处于这4种状态之一。
就绪状态:指任务运行的时间条件和资源条件都满足,等待调度算法选
择最合适的任务进入就绪状态。任务一旦建立就处于就绪状态,这一点和
μC/0S—II相同。
2
2024年3月13日发(作者:宛辉)
在多任务实时系统中,任务状态有四种:①执行状态(execute),表示正在执行中这种状
态的任务只能有一个,由优先数决定。②挂起状态(suspend)表示暂时停止。机器正在进
行输入输出等待或事件等待,所有任务一旦处于挂起状态,机器就在操作系统内循环。③就
绪状态(ready)表示准备完了,一旦来通知就可以继续执行,或者由于优先数高的任务先
执行,而优先数低的处于执行等待状态。④静止状态(dormant)或称潜伏状态,作为任务
已经消除,不能执行的状态。所有的任务都处于静止状态时,表示该程序执行完毕。
转载请注明来自:.cn/Knowledge/nPost/nPost_
uC/OS-II任务挂起和任务延时的异同:
同:二者都使任务进入等待状态。处于等待状态的任务不处于就绪状态,任务在就绪任务表
中登记的就绪标志被取消,任务不可能被调度。
异:挂起的任务只能在其他任务中通过调用恢复函数OSTaskResume()使其恢复为就绪状态,
否则将不可能再次被运行(因为它没有就绪),而延时的任务可以在延时时间到时自动恢复
就绪状态,即使没有其他任务调用取消延时函数OSTimeDlyResume()。
任务挂起是怎么回事
就相当于操作系统中将进程挂起的操作,可以查看itron的源代码,只要有操作系统的原理
知识就可以解决了。
itron里边的任务有三个状态
1 run
2 ready
3 (广义挂起)
3.1 waiting
3.2 suspended
3.3 dormant
3.4 no-existing
一个任务可以在三个状态之间切换,再具体可以看相关资料
ready到waiting,,一个task在ready下时,这个task其实是可以执行的,但是有比他优先
级更高的task在执行,当前task只好reay.这个task需要等待某一事件的发生比如说一个
semaphone,他就跳转到waiting. waiting到ready,这个semaphone解除了,当前task又从
waiting跳转到ready。可以看下资料把那几个状态的跳转关系看一下,就明白了状态大致如
6楼所说,但在最新的4.0系统上多了个二重等待状态
阻塞(pend)与挂起(suspend)的区别
理解一:挂起是一种主动行为,因此恢复也应该要主动完成,而阻塞则是一种被动行为,是
在等待事件或资源时任务的表现,你不知道他什么时候被阻塞(pend),也就不能确切的知道
他什么时候恢复阻塞。而且挂起队列在操作系统里可以看成一个,而阻塞队列则是不同的事
件或资源(如信号量)就有自己的队列。
理解二:阻塞(pend)就是任务释放CPU,其他任务可以运行,一般在等待某种资源或信
1
号量的时候出现。挂起(suspend)不释放CPU,如果任务优先级高就永远轮不到其他任务
运行,一般挂起用于程序调试中的条件中断,当出现某个条件的情况下挂起,然后进行单步
调试。
理解三:pend是task主动去等一个事件,或消息.suspend是直接悬挂task,以后这个task和你
没任何关系,任何task间的通信或者同步都和这个suspended task没任何关系了,除非你
resume task;
理解四:任务调度是操作系统来实现的,任务调度时,直接忽略挂起状态的任务,但是会顾
及处于pend下的任务,当pend下的任务等待的资源就绪后,就可以转为ready了。ready
只需要等待CPU时间,当然,任务调度也占用开销,但是不大,可以忽略。可以这样理解,
只要是挂起状态,操作系统就不在管理这个任务了。
理解五:挂起是主动的,一般需要用挂起函数进行操作,若没有resume的动作,则此任务
一直不会ready。而阻塞是因为资源被其他任务抢占而处于休眠态。两者的表现方式都是从
就绪态里“清掉”,即对应标志位清零,只不过实现方式不一样。
操作系统中睡眠、阻塞、挂起的区别形象解释
首先这些术语都是对于线程来说的。对线程的控制就好比你控制了一个雇工为你干活。你对
雇工的控制是通过编程来实现的。
挂起线程的意思就是你对主动对雇工说:“你睡觉去吧,用着你的时候我主动去叫你,然后
接着干活”。
使线程睡眠的意思就是你主动对雇工说:“你睡觉去吧,某时某刻过来报到,然后接着干活”。
线程阻塞的意思就是,你突然发现,你的雇工不知道在什么时候没经过你允许,自己睡觉呢,
但是你不能怪雇工,肯定你这个雇主没注意,本来你让雇工扫地,结果扫帚被偷了或被邻居
家借去了,你又没让雇工继续干别的活,他就只好睡觉了。至于扫帚回来后,雇工会不会知
道,会不会继续干活,你不用担心,雇工一旦发现扫帚回来了,他就会自己去干活的。因为
雇工受过良好的培训。这个培训机构就是操作系统。
内存暂处理不过来的程序,称之为挂起程序
就是该程序未处于运行状态,但也没有被结束,只是暂时冻结
挂起 就是进入后台操作
前台看不见 我们能看到的 就是前台
我们看不到了 其实程序还在运作 或者说这个程序还在占用一定的内存空间 就
是后台运行 就叫挂起 有些挂起还是可以看到的 比如缩到 右下角的任务栏里
了
任务调度的几种状态
任务常见的有4种状态:就绪状态、运行状态、等待状态和挂起状态。内存中的
任务必须处于这4种状态之一。
就绪状态:指任务运行的时间条件和资源条件都满足,等待调度算法选
择最合适的任务进入就绪状态。任务一旦建立就处于就绪状态,这一点和
μC/0S—II相同。
2