linux内核时间管理
来源:互联网 发布:gp6打谱软件 mac 编辑:程序博客网 时间:2024/05/21 22:54
时间管理在内核中占有非常重要的地位,主要作用是提供一种周期性触发中断机制。
系统定时器频率(也称节拍率)是通过静态预处理定义的,也就是HZ,其代表每秒钟发生的时钟中断次数,但是该值并不是固定不变的,在系统启动时按照HZ的值对硬件进行设置,体系结构不同,HZ的值夜不同。由于HZ的不同,也就是说时钟中断的频度不同,而更高的时钟中断频度(也就是HZ更大)具有如下优点:
1.内核定时器可以以更高的频度和更高的准确度运行
2.依赖定时值执行的系统调用,比如poll和select,更够以更高的进度运行
3.对诸如资源消耗和系统运行时间等的测量 会有更精细的解析度
4.提高进程抢占的准确度
但是更高的HZ同样带来一个大问题:节拍率越高意味着时钟中断频率越高,也就是说系统负担越重。这样不但会减少处理器处理其他工作的时间,而且还会更频繁的打乱处理器高速缓存并增加耗电。所以HZ根据实际情况进行更改。
全局变量jiffies用来记录自系统启动以来产生的节拍的总数,由于一秒内时钟中断的次数等于HZ,所以jiffies一秒内增加的总数也是HZ,在linux中,jiffies值得定义如下:
extern unsigned long volatile jiffies;
对于需要通过jiffies的值来判断超时的情况,内核提供了四个宏来帮助比较节拍数,他们能正确处理节拍数回绕的情况(jiffies一出之后变回0的情况,在32机器上会溢出,在64为机器上不会溢出),函数如下:其中unknown通常是jiffies,know是需要比较的值
#define time_after(unknown,known)((long)(known) - (long)(unknown) < 0)
#define time_before (unknown,known) ((long)(unknown) - (long)(known) < 0)
#defien time_after_eq(unknown,known) ((long)(unknown) - (long)(known) >= 0)
#define time_before_eq(unknown,known) ((long)(known) - (long)(unknown) >= 0)
实时时钟(RTC)是用来持久存放系统时间的设备,即便系统关闭后,他也可以依靠主板的微型电池提供的电力保持系统的计时。
定时器是管理内核流逝时间的基础,定时器的使用很简单:执行一些初始化工作,设置一个超时时间,指定超时后发生的执行函数,最后激活定时器就可以了。定时器的结构由timer_list表示,其结构如下:
struct timer_list{
struct list_head entry; /*定时器链表的入口*/
unsigned long expires;/*以jiffies为单位的定时值*/
void (*function)(unsigned long);/*定时器处理函数*/
unsigned long data;/*传给处理函数的参数*/
};
创建定时器时首先需要定义该结构,如下:struct timer_list my_timer;
接着需要初始化该定时器结构,如下: init_timer(&my_timer);
初始化完成之后需要对该定时器结构赋值,可以如下进行:
my_timer.expires = jiffies + delay;
my_timer.data = 0;
my_timer.function = my_function;
最后激活定时器就可以了,激活如下: add_timer(&my_timer);
在定时器没有超时之前,如果想修改指定的定时器的超时时间,可以如下修改:mod_timer(&my_timer,jiffies+new_delay);
在对定时器进行删除操作时,由如下两个函数,del_timer(&my_timer)和del_timer_sync(&my_timer);后一个函数用在多处理机上,但是不能用在中断上下文中。
- Linux内核时间管理
- Linux内核时间管理
- linux内核时间管理
- [linux]linux内核时间管理基础
- linux时间管理 之 内核定时器
- Linux内核时间管理和定时器
- Linux内核时间管理相关的接口
- linux内核时间管理(一) : 时间概念和延迟操作
- 再读《Linux内核设计与实现》之时间管理
- linux内核分析笔记----定时器和时间管理
- linux内核分析笔记----定时器和时间管理
- LINUX内核之中断(4)--时间管理
- linux内核分析笔记----定时器和时间管理
- linux内核分析笔记----定时器和时间管理
- linux内核分析笔记----定时器和时间管理
- LINUX内核设计思想之定时器和时间管理
- linux 内核学习之—定时器和时间管理
- Linux内核——定时器和时间管理
- Android 自定义View (四) 视频音量调控
- php木桶排序
- 编译时候如何配置连接库的搜索路径
- 一个七位数只能由1,2,3,4,5,6,7组成的,不能重复,从大到小求第2014个数是多少
- Android 仿Win8的metro的UI界面(上)
- linux内核时间管理
- C++(四)define 可变参数宏
- Android自定义控件——仿优酷圆盘菜单
- dm
- 资妆撰左昨撞拙醉综子子坠锥紫阻棕灼宗
- IE调试
- 撰阻追茁足钻租籽奏阻兹族追嘴渍租卓钻
- Android自定义控件——仿ios开关按钮
- VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT方式)