VxWorks中的任务状态 “pend”和“suspend”有啥区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VxWorks中的任务状态 “pend”和“suspend”有啥区别相关的知识,希望对你有一定的参考价值。
1、意思不一
pend:pend(阻塞),指任务释放。
suspend:suspend(挂起),指任务不释放。
2、用途不一
pend:一般在等待某种资源或信号量的时候出现。
suspend:一般挂起用于程序调试中的条件中断。
3、运行不一
pend:其他任务可以运行。
suspend:任务优先级高就轮不到其他任务运行。
4、表现方式不一
pend:资源被其他任务抢占而处于休眠态。
suspend:需要用挂起函数进行操作。
5、类别不一
pend:pend是一种被动行为。
suspend:suspend是一种主动行为。
参考技术A 操作系统中挂起和阻塞的区别如下:一:挂起是一种主动行为,因此恢复也应该要主动完成,而阻塞则是一种被动行为,是在等待事件或资源时任务的表现,你不知道他什么时候被阻塞(pend),也就不能确切 的知道他什么时候恢复阻塞。而且挂起队列在操作系统里可以看成一个,而阻塞队列则是不同的事件或资源(如信号量)就有自己的队列;
二:阻塞(pend)就是任务释放CPU,其他任务可以运行,一般在等待某种资源或信号量的时候出现。挂起(suspend)不释放CPU,如果任务优先级高就永远轮不到其他任务运行,一般挂起用于程序调试中的条件中断,当出现某个条件的情况下挂起,然后进行单步调试;
三:pend是task主动去等一个事件,或消息.suspend是直接悬挂task,以后这个task和你没任何关系,任何task间的通信或者同步都和这个suspended task没任何关系了,除非你resume task;
四:任务调度是操作系统来实现的,任务调度时,直接忽略挂起状态的任务,但是会顾及处于pend下的任务,当pend下的任务等待的资源就绪后,就可以转为ready了。ready只需要等待CPU时间,当然,任务调度也占用开销,但是不大,可以忽略。可以这样理解,只要是挂起状态,操作系统就不在管理这个任务了;
五:挂起是主动的,一般需要用挂起函数进行操作,若没有resume的动作,则此任务一直不会ready。而阻塞是因为资源被其他任务抢占而处于休眠态。两者的表现方式都是从就绪态里“清掉”,即对应标志位清零,只不过实现方式不一样。本回答被提问者采纳
VxWorks常用命令(备忘)
i 显示任务基本信息,参数为0时显示全部任务。
ti 显示任务的TCB信息。
d 显示目标地址内存内容。
devs 列出目标机系统上的全部设备。
version 显示VxWorks版本号。
memShow 显示系统内存空间中空闲和已分配空间的总数等信息。
memPartShow 显示系统内存分区块和统计信息。
moduleShow 显示已加载的所有模块
iosDevShow 显示系统设备的信息。
iosDrvShow 显示系统驱动程序的信息。
semShow 显示信号量的信息。
regsShow 显示所有寄存器信息。
taskShow 显示任务TCB信息。
taskRegsShow 显示任务寄存器的内容。
coreShow 显示CPU频率、DDR频率、system频率、一级缓存、二级缓存、MSR寄存器信息等。
coreLbcShow 显示LBC控制器寄存器详细信息。
vxBusShow 显示vxBus的详细信息。
pciConfigTopoShow 显示PCI配置信息。
pciDevShow [pci设备号] 显示指定的pci设备信息。
pciHeaderShow[总线号] 显示PCI总线相关信息
TempratureShow 显示当前温度。
-> cmd 进入命令模式
[ VxWorks ] C 退出命令模式
使用d命令从0xff00 0000开始读取Flash 16M的内容 d 0xff000000,16777216,1
usrTffsConfig 0,0,"/flashVolume" 配置设备名
格式化并恢复文件系统:
1. [cmd] sysTffsFormat
2. [cmd] dosfsDiskFormat("/tffs0")
3. [cmd] usrTffsConfig(0, 0, "/flashVolume")
4. [cmd] cd FlashVolume
5. [cmd] file create -d FILE_DIR
6. [cmd] cd FILE_DIR
7. [cmd] ftp ip_addr,并输入用户名和密码登录
8. ftp> cd 需要下载的文件所在目录
9. ftp> binary (下载.ini文件时切换到binary模式)
10. ftp> get FILE
11. ftp> quit
12. [cmd] ls -l (查看所下载文件大小是否和FTP Server端的文件大小一致,以防下载出错
以上是关于VxWorks中的任务状态 “pend”和“suspend”有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
您如何解释 exynos SoC kmsg 中的 WAKEUP_STAT 和 WAKEUP_INTx_PEND?