阻塞 cpu占用

请问,windowsxp系统下,有一个线程A,此线程中需要wait一个信号,我有以下观点,请大家帮我判断一下我的观点对不对,谢谢!如果我用阻塞方式,则一旦轮到这个线程执行,os只要发现这个线程所wait的信号没有到达,则立即跳转到其他线程执行,当前线程连挂起都不用,是么?。如果用非阻塞模式,则轮到这线程执行的时候,如果没有wait到这个信号,则cpu跳过wait,继续执行这个线程,直到执行到下一个阻塞点或者时间片到时,是么?谢谢!



www.cqzol.com网友回答:如果线程在等待某个事件,内核会将其放入等待列表,直到收到事件信号。操作系统在切换线程时不会考虑等待列表中的线程,只会考虑就绪列表中的线程。

 

// 问题:那么等待列表中的线程什么时候放到就绪列表中?是操作系统每次切换的时候都检查一下吗?还是用中断?

// 回答:请看下面UCOSIII解释,os里的5个默认任务之一的时钟节拍任务会检查等待列表中的线程是否可以就绪。

 

UCOSIII默认有5个系统任务:

    1、空闲任务:UCOSIII创建的第一个任务,UCOSIII必须创建的任务,此任务有UCOSIII自动创建,不需要用户手动创建。

2、时钟节拍任务:此任务也是必须创建的任务。遍历所有在等待延时结束或指定时间内等待某个内核对象的任务,及遍历节拍列表。

   ① 插入节拍列表:

      dly 为要延时或等待的时间;

      MatchValue = OSTickCtr +dly

      节拍列表下标 = MatchValue %表格长度

该表是一个环形表,取模运算时一表格长度为模,将任务插入节拍列表中,在同一下标下按照延时或等待的时间长短排序。

   ② 每个节拍中断都会给此任务一个信号让其执行,通过对OSTickCtr求模(同上),找到对应的位置,与.TickCtrMatch比较是否相同,若相同就把相应的OS_TCB从时钟列表中删除,如果是等待延时,会把它放入就绪列表中;如果是等待某一事件,还需要将其从等待列表中删除;接着继续一本下标的下一个任务控制块比较。若不同则结束返回函数。

    3、统计任务:可选任务,用来统计CPU使用率和各个任务的堆栈使用量。此任务是可选任务,由宏OS_CFG_STAT_TASK_EN控制是否使用此任务。可以统计CPU利用率

    4、定时任务:用来向用户提供定时服务,也是可选任务,由宏OS_CFG_TMR_EN控制是否使用此任务。计时减到零会调用回调函数进行一系列操作。

5、中断服务管理任务:可选任务,由宏OS_CFG_ISR_POST_DEFERRED_EN控制是否使用此任务。当ISR调用UCOS_III中的“post”函数,要发送数据的副本和发送的目的地都会存入一个特别的缓冲队列中,当ISR执行完毕后,任务切换到中断服务管理任务,该任务会把存放的信息重发给相应的任务。做额外的这一步可以减少中断关闭的时间;否则,在ISR中还需要把任务从等待列表中删除,并把任务放在就绪表中,以及一些耗时的操作。

 

转载于:https://www.cnblogs.com/dirichlet/archive/2011/03/16/1986288.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

登录验证应该是进行在客户端还是服务器端_网站登录认证方式

目前大部分软件系统资源访问都是使用HTTP协议,HTTP是无状态的协议,每次请求默认都是相互独立的。但是大部分情况下我们需要记录请求资源的用户信息,也就是保存会话,从而对资源的访问做限制,这是我们认证功能。常用的认…

arcgis将点的属性赋值给面

例子:将点的编号属性列赋值到对应的面属性

关于application title一直是untitled的问题

建立了一个cocoaapplication项目,在Interface Builder中修改了title,在运行时标题始终是“Untitled”。这是我在http://stackoverflow.com/questions/4720030/cocoa-mac-application-title-says-untitled上找的解决方法。I have created a document base…

python 中文apichm_python api 中文 chm

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

arcgis投影数据计算度分秒

原始数据投影坐标系 1.先将图层坐标改为地理坐标系 2.添加字段必须是文本类型,否则计算不出度分秒的形式,只显示十进制 错误示例(字段类型为双精度) 正确示例(字段类型为文本类型)

Js实现异步刷新(原创)

看了ajax的一些资料,稍微学到了一点东西,于是写出来与大家分享,由于读的资料比较少和自己的看法可能不全面,再加上自己的拙笔,如果不小心写错,还请大家 谅解 一.ajax理论叙述 ajax并不是一个新技术&#xf…

python压缩算法_LZ77压缩算法编码原理详解(结合图片和简单代码)

前言LZ77算法是无损压缩算法,由以色列人Abraham Lempel发表于1977年。LZ77是典型的基于字典的压缩算法,现在很多压缩技术都是基于LZ77。鉴于其在数据压缩领域的地位,本文将结合图片和源码详细介绍其原理。原理介绍:首先介绍几个专…

ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析

ARM汇编有ldr指令以及ldr、adr伪指令,它们都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。 ldr r0, _start adr r0, _start ldr r0, _start _start: b _start 编译的时候设置 RO 为 0x30000000&#xf…

arcgis裁剪后发现部分矢量缺失

解决办法 1.先修复几何 2.再进行裁剪 修复几何 修复的内容如下

SpringMVC上传文件以流方式判断类型附常用类型

此类中判断类型所截取的byte 长度暂不确定,请使用者测试过使用 packagecom.tg.common.other;importcom.tg.common.tginterface.TG_FileUpload;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;import…

arcgis快速创建斜坡单元剖面线

本教程做出的剖面只能用作参考,实际工作中需要进行修改 一、数据: 1.斜坡单元 DEM 步骤 利用DEM做出坡向2.提取斜坡单元内部点数据 提取斜坡单元边界线数据 提取坡向数据至点属性 3.给带有剖面点的数据添加xy坐标字段,数据类型选择数值型 添…

ARM中的ldr指令与adr、ldr伪指令之间的区别

ARM汇编语言中有ldr指令和ldr、adr伪指令,他们都可以将标号表达式作为操作数。区别如下: ldr指令和adr、ldr伪指令的区别:ldr指令属于load-store指令,用于读取标号地址中的值;adr、ldr伪指令用于获取标号的地址。 adr和…

js解释器rhino查看执行环境

rhino是一个Mozilla的开源的由java写的javascript解释器。 文档地址 https://developer.mozilla.org/en/Rhino_documentation 安装方法 http://www.terminally-incoherent.com/blog/2008/01/08/rhino-scripting-java-with-javascript 安装。 ubuntu下直接 sudo apt-get insta…

mapgis转arcgis数据后发现属性表内没有数据

示例: 编辑点属性结构 将注释赋为属性

对python生态系统的认识_SAS,R与Python的区别详细对比

本文概述在本主题中, 我们将比较这三种语言的各个方面, 以使你对这些语言的市场价值和功能有清晰的认识, 以便你可以选择可以向前发展的语言。众所周知, 要学习数据分析, 可以使用三种重要的语言, 分别是Python, R和SAS。如果你是数据科学界的新手, 并且没有上述任何一种语言的…

ARM汇编ADR,LDR等伪指令

arm中LDR伪指令与LDR加载指令LDR伪指令的形式是“LDR Rn,expr”。下面举一个例子来说明它的用法。 COUNT EQU 0x40003100 …… LDR R1,COUNT MOV R0,#0 STR R0,[R1] COUNT是我们定义的一个变量,地址为0x40003100.这中定…

分享50款非常漂亮的桌面壁纸

我喜欢根据季节更换桌面壁纸,换上一张清爽的桌面壁纸,心情也会变得舒畅。所以,今天我为大家收集了一批夏天壁纸,虽然夏天还未到来,不过这些壁纸真的非常漂亮,尽情欣赏吧。 (编译来源&#xff1a…

获取字段 命名空间和类_系统架构之命名规范

数据库设计规范表设计规范表名全部小写,单词间通过_间隔主键命名为id,类型为Long,长度为20位,非自增2. 外键及索引命名规范唯一索引:ux_表名_索引字段。如:ux_resource_code普通索引:ix_表名_索…

arcgis创建剖面线execl文件

如何快速创建剖面线,参考https://blog.csdn.net/qq_39397927/article/details/118730100 由于创建完的剖面线不带有野外编号,所以我们需要进行空间连接,因为斜坡单元转点后的数据是具有编号,所以进行空间连接将斜坡编号赋值给剖面…

VMWare网络设置的3中方式

一 VMware网络设置的三种方式 1 Host-only连接方式 让虚机具有与宿主机不同的各自独立IP地址,但与宿主机位于不同网段,同时为宿主主机新增一个IP地址,且保证该IP地址与各虚机IP地址位于同一网段。最终结果是新建了一个由所有虚机与宿主主机…