首页 > 系统服务 > 详细

Linux时间子系统之四:Timer在用户和内核空间流程

时间:2017-11-30 16:41:44      阅读:360      评论:0      收藏:0      [点我收藏+]

用户空间应用中创建一个Timer(alarm/setitimer/POSIX Timer等等),然后程序继续执行;

内核进入创建/设置Timer系统调用,开始计时,在超时后通过何种方式通知用户空间;

用户空间又是如何执行回调函数的。

下面就着重这个流程,梳理一下Timer周期中用户空间和内核空间涉及到的相关模块。

 1. 总体框架

关注的Timer(alarm/setitimer/POSIX Timer),都在libc/librt/libphtread中定义。librt是POSIX.1b Realtime扩展的实现,这其中就包括POSIX Timer。

其中alarm/setitimer都调用libc,POSIX Timer调用librt/libpthread。

总体框架如下:

技术分享图片

 

?应用调用库通过系统调用创建Timer,同时自身注册信号处理函数。

?库提供通用接口,转换成系统调用。

?内核Timer相关系统调用(setitimer/timer_create),通过hrtimer创建相应的定时器,在超时后调用hrtimer超时函数发送signal给用户空间进程。

?用户空间进程在收到信号之后,执行对应的信号处理函数。

至此,Timer一个闭环完成。

下面分alarm/setitimer和POSIX Timer两种类型的Timer,来介绍其流程。

2. alarm/setitimer流程

 

3. POSIX Timer流程

 

Linux时间子系统之四:Timer在用户和内核空间流程

原文:http://www.cnblogs.com/arnoldlu/p/7929611.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!