最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

任务挂起

IT圈 admin 66浏览 0评论

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

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论