当前位置: 首页 > wzjs >正文

网站和域名的区别网站建化

网站和域名的区别,网站建化,wordpress怎么设置友情链接,万户 网站建设背景 之前的 blog 63、【OS】【Nuttx】任务休眠与唤醒:sleep 64、【OS】【Nuttx】任务休眠与唤醒:clock_nanosleep 分析了任务休眠中的 sleep 函数,下面继续来分析下 clock_nanosleep 函数中的核心功能 nxsig_clockwait nxsig_clockwait 函…

背景

之前的 blog
63、【OS】【Nuttx】任务休眠与唤醒:sleep
64、【OS】【Nuttx】任务休眠与唤醒:clock_nanosleep
分析了任务休眠中的 sleep 函数,下面继续来分析下 clock_nanosleep 函数中的核心功能 nxsig_clockwait

nxsig_clockwait

函数描述

先来看函数描述
在这里插入图片描述
nxsig_clockwait 检查传入的信号集(由 set 参数指定)。。。看到这里就不用往下看了,因为这个函数压根没有 set 入参,这个函数描述应该是很久没更新了,下面直接看函数实现

函数实现

在这里插入图片描述
函数入参:

  • clockid:指定要使用的时钟源
  • flags:用绝对时间还是相对时间
  • rqtp:要休眠的时间
  • rmtp:剩余待休眠的时间
    在这里插入图片描述
    参数检查,rqtp 时间要合法,主要是纳秒单位 tv_nsec
    在这里插入图片描述
    当前正在执行的任务 this_task() 是 ready 队列中第一个任务
    在这里插入图片描述

当请求休眠时间 rqtp 为 0 时,sleep(0) 的行为在 POSIX 标准没有明确规定,不同系统表现会不一样

  • 在 Linux 中,当调用 sleep(0) 时,会进入系统内核并调用 schedule(),主动让出当前 CPU 时间片,此时当前任务暂停运行,直到下一次被调度器重新选中
  • 在 BSD 系统,当调用 sleep(0) 会直接返回,不做任何实际的休眠或调度操作,相当于空操作,此时当前任务不会主动让出 CPU

在 Nuttx 中,表现和 Linux 类似,下面来看下 sched_yield 这个函数的功能(从名字上看,yield 的含义有放弃,让步的意思,sched_yield 的功能就与调度让出有关):
在这里插入图片描述
从函数描述可以看出

  • sched_yield 强制当前正在运行的任务(线程或进程)主动放弃当前使用的 CPU
  • 只允许优先级相同的其他任务运行,不会让低优先级任务获得 CPU

来看下 sched_yield 函数的实现:
在这里插入图片描述
核心的就是这段注释:

  • 首先 sched_yield 不是直接通过调度器(如 Linux 中的 schedule()),而是通过将当前任务的优先级重新设置为原来的值来触发一次调度
  • 在 Nuttx 中,当任务的优先级被重新设置时,即使优先级没有变化,调度器也会将该任务放到同优先级队列的末尾,然后通过上下文切换,使得当前任务主动放弃当前时间片,让其他同优先级任务先运行

等下篇 blog 再来分析 nxsched_set_priority,先接着往下看 nxsig_clockwait
在这里插入图片描述

  • 接下来就是根据标志位 flags (相对时间&绝对时间)来启动看门狗定时器了,看门狗定时器之前 blog 29、【OS】【Nuttx】【最小系统】tickless 有分析过一些,主要就是通过普通定时器的后处理函数 nxsched_process_timer 的执行不断去判断看门狗任务有没有超时
  • 另外,这里的编码不太好,rqtp 应该用卫语句,在函数一进来时就应该先判空,而不是后面每次用到的时候都要判断一下非空

在这里插入图片描述

  • 启动完定时器后,接下来把当前任务从 ready 队列中去掉,然后当前任务设置成 TSTATE_WAIT_SIG,加入信号等待队列,等待被唤醒
  • 接着切换上下文
  • 等被信号唤醒后,重新回到该任务,开始执行下一行 wd_cancel,将该看门狗定时器去掉
  • 最后更新下 rmtp 剩余休眠时间,休眠任务就结束了

下篇 blog 继续分析下 nxsched_set_priority


文章转载自:

http://hUlfpnmH.wpqwk.cn
http://wI5Q8rfV.wpqwk.cn
http://nsVky3vZ.wpqwk.cn
http://JEdYjdU0.wpqwk.cn
http://1myTxvJ2.wpqwk.cn
http://iQSXcuYK.wpqwk.cn
http://sG6vXcNX.wpqwk.cn
http://RTwG1ShH.wpqwk.cn
http://cM0etMIF.wpqwk.cn
http://QmRwn6FZ.wpqwk.cn
http://wCkG4uYE.wpqwk.cn
http://xUBXSATg.wpqwk.cn
http://hHFqutrf.wpqwk.cn
http://bm6M3ACv.wpqwk.cn
http://H6ZtkrJD.wpqwk.cn
http://1DcDcWOg.wpqwk.cn
http://xzy5t0Su.wpqwk.cn
http://Z9lvBVSv.wpqwk.cn
http://yZRjisQB.wpqwk.cn
http://7mRvm6rc.wpqwk.cn
http://kLibpwxq.wpqwk.cn
http://OiTHLhv2.wpqwk.cn
http://sl9lSMbK.wpqwk.cn
http://FWmnt3yD.wpqwk.cn
http://uTkJtWiB.wpqwk.cn
http://GOZIxM8z.wpqwk.cn
http://ZsRlyjEt.wpqwk.cn
http://sbuf3Dgh.wpqwk.cn
http://svKxbVdh.wpqwk.cn
http://Ye3B04nW.wpqwk.cn
http://www.dtcms.com/wzjs/652076.html

相关文章:

  • 手机壁纸网站大全西部数码网站管理助手v3.1
  • 做网站什么费用服装毕业设计代做网站
  • 电影网站膜拜武威网站建设价格
  • 区县12380网站建设情况郑州网站制作网页
  • wordpress_zh网站建设优化兰州
  • 怎么自己做网站游戏企业网站报价方案模板下载
  • 周口哪里做网站做网站如何导入信用卡付款
  • discuz网站开发做战袍网站
  • 企业建站套餐价格表汽车制造行业网站模板
  • 网站建设 全网推广wordpress的搭建
  • ps国外教程网站页面设计要会什么
  • 网站建设推广报价单wordpress模板带后台
  • 网站底部加备案号网站建设企划
  • 设计深圳网站制作注册公司流程和费用找哪家
  • 把网站做进微信公众号百度app下载官方免费最新版
  • 营销型网站建设区别做设计图的网站
  • 网站模板模仿网站建设用什么系统好
  • 网站优化方案模板做电子杂志用什么网站
  • 县门户网站建设方案汽车网址大全图片
  • 安康网站建设公司亿网互联
  • 怎么免费建设网站wordpress 4 安装教程
  • 积极推进网站建设网站开发需要学习哪些内容
  • 站点建立网站的方法网站开发流程详细步骤
  • 制作网站用什么代码在线网页传输文件
  • 建设网站 注册与登陆品牌建设费用包括哪些?
  • php商城网站开发网站如何验证登陆状态
  • 为什么网站显示正在建设杭州市富阳区建设局网站
  • 网站编程培训机构排名前十品牌建设最高境界
  • 网站建设后期服务协议2023年重启核酸
  • 百度推广和网站建设推广的区别信息网络工程师