基于linux2.6.12.1的进程睡眠原理是什么

技术基于linux2.6.12.1的进程睡眠原理是什么这篇文章给大家介绍基于linux2.6.12.1的进程睡眠原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。进程是一个动态的实体,满足条件

本文向您介绍了基于linux2.6.12.1的进程睡眠原理,内容非常详细。有兴趣的朋友可以参考一下,希望对你有帮助。

流程是一个动态的实体。当满足条件时,总是执行,但有时,当不满足流程要求的条件时,就会暂停。但这是被动的,不是过程控制的。也就是说,当一个进程访问一个资源时,如果不能满足,系统会暂停该进程,当满足条件时,系统会唤醒该进程。

今天介绍的是一个过程主动睡眠的能力。也就是进程让自己挂机,过了一定时间,被系统唤醒(时间到了或者收到信号)。这个能力是由睡眠功能提供的。

unsigneditsleep(unsigneditseconds);

该功能允许进程暂停几秒钟。让我们看看这个函数的一些解释。

OnLinux,sleep()is implementedviananoslement(2)。请参见(2)manpagefordiscussionoftheclackused。

即睡眠功能由操作系统的[nano LEEP]功能实现(http://www . man 7 . org/Linux/man-pages/man 2/nano LEEP . 2 . html)。让我们看看核心代码。

ASM link long sys _ nano LEEP(struct time spec _ _ user * rqtp,struct time spec _ _ user * rmtp){ struct time spec t;无符号长过期;长retexpire=times pec _ to _ jiffies(t)(t . TV _ sec | | t . TV _ nsec);当前状态=任务_可中断;expire=schedule_timeout(过期);}

计算超时,然后暂停进程(可中断暂停),然后调用schedule_timeout。

fast call signed long _ _ sched schedule _ time out(signed long time out){ struct timer _ list timer;无符号长过期;//计算超时时间过期=超时瞬间;init_timer(计时器);//超时计时器. timer.expires=expiretimer.data=(无符号长)当前值;//超时回调timer . function=process _ time out;//添加定时器add_timer(定时器);//进程调度计划();//删除timer del _ single shot _ timer _ sync(定时器);//超时或信号唤醒,如果信号唤醒,可能还没有超时=过期-瞬间;out:返回超时0?0 :超时;}

然后,给系统增加一个定时器,然后发送进程调度,然后进程就会进入挂起状态。过了一定时间,过程就会苏醒。此外,我们注意到挂起进程的状态是TASK _中断,这意味着它可以被中断。意味着这个状态下的进程可以被信号唤醒。而TASK _不间断不能被信号唤醒。

当超时发生时,执行process_timeout函数。

static void process _ time out(unsignedlong _ _ data){ wake _ up _ process((task _ t *)_ _ data);}

代码很简单,就是唤醒挂起的进程。_ _数据在

timer.data=(unsignedlong)电流;

设置在。这是过程主动睡眠的一般原理。

基于linux2.6.12.1的进程睡眠的原理是什么,希望在这里分享。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/132974.html

(0)

相关推荐

  • C++函数可以返回列表或者容器吗

    技术C++函数可以返回列表或者容器吗本篇内容介绍了“C++函数可以返回列表或者容器吗”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年11月30日
  • swing入门到精通教程(怎么让程序用swing实现)

    技术怎么分析Swing体系结构今天就跟大家聊聊有关怎么分析Swing体系结构,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Swing体系结构最初Smalltalk

    攻略 2021年12月18日
  • 螓怎么读,在问大侠荣威5501.8启螓版

    技术螓怎么读,在问大侠荣威5501.8启螓版你的是1螓怎么读。8T的吗带T的保养要贵一些,机油有讲究的,一定要按时换机油。另外最好热车和冷车。5年左右可能要换了,好几万噢,另外带T的发动机转速上去涡轮介入后发动机噪音会大

    生活 2021年10月24日
  • zookeeper集群怎么发现(zookeeper怎么查集群)

    技术怎样分析ZooKeeper 集群这篇文章将为大家详细讲解有关怎样分析ZooKeeper 集群,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、为什么需要集群1.1 马

    攻略 2021年12月24日
  • vue中给data添加属性会发生什么(vuedata里增加一个属性实时刷新吗)

    技术Vue data中随意改一个属性视图就会更新吗这篇文章主要讲解了“Vue data中随意改一个属性视图就会更新吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue

    攻略 2021年12月16日
  • 同性恋的原因,同性恋和父母的基因有关系吗

    技术同性恋的原因,同性恋和父母的基因有关系吗引起同性恋的原因同性恋的原因,至今没有肯定的说法,一般认为同性恋和以下因素有关:
    一,遗传因素:即生物学因素,有人发现同性恋者,在同卵双生子中远比异卵双生子中多见。
    二,儿童角

    生活 2021年10月30日