(笔记)linux下的真实计时器、虚拟计时器、实用计时器
2016-09-01 09:14
330 查看
linux为每个进程维护三种计时器,分别为真实计时器、虚拟计时器、实用计时器。他们三者的区别是:
真实计时器:计算程序运行的实际时间,包括程序运行在用户态消耗的时间+系统调用时间+程序睡眠时间;
虚拟计时器:计算的是程序运行在用户态消耗的时间,即真实计时器计算的时间-系统调用时间-程序睡眠时间;
实用计时器:计算的是程序运行在用户态消耗的时间+处于内核态消耗的时间。
具体函数:
头文件:#include<sys/time.h>
函数: int getitimer(int which,struct itimerval*curr_value);//获取定时器的设置
int setitimer(int which,const struct itimerval* new_value,struct itimerval*old_value);//设置定时器
返回值:成功返回0,失败返回-1.
参数含义:
参数which是指定具体ITIMER_REAL、ITIMER_VIRTUAL、ITIMER_PROF三种定时器的其中的哪个定时器。ITIMER_REAL对应真实定时器,计时器发送的时钟信号为SIGALRM,ITIMER_VIRTUAL对应的是虚拟计时器,计时器发送的时钟信号为SIGVTALRM,ITIMER_PROF对应的是实用计时器,计时器发送的时钟信号为SIGPROF.
getitimer的第二个参数curr_value为一个结构体的传出参数,用于获取该计时器的初始间隔时间和重复间隔时间。
setitimer的第二个参数new_value为一个结构体的传入参数,用于指定该定时器的初始间隔时间和重复间隔时间。参数old_value为一结构体的传出参数,用于传出以前定时器的时间设置(不需要可以设为NULL)。
struct itimerval{
struct timerval it_interval;//重复时间间隔
struct timerval it_value;//初始时间间隔
};
struct timerval{
long tv_sec;//时间的秒数部分
long tv_usec;//时间的微秒部分
};
为进程设置好一个定时器后,该计时器会定时的向进程发送时钟信号!!!
真实计时器:计算程序运行的实际时间,包括程序运行在用户态消耗的时间+系统调用时间+程序睡眠时间;
虚拟计时器:计算的是程序运行在用户态消耗的时间,即真实计时器计算的时间-系统调用时间-程序睡眠时间;
实用计时器:计算的是程序运行在用户态消耗的时间+处于内核态消耗的时间。
具体函数:
头文件:#include<sys/time.h>
函数: int getitimer(int which,struct itimerval*curr_value);//获取定时器的设置
int setitimer(int which,const struct itimerval* new_value,struct itimerval*old_value);//设置定时器
返回值:成功返回0,失败返回-1.
参数含义:
参数which是指定具体ITIMER_REAL、ITIMER_VIRTUAL、ITIMER_PROF三种定时器的其中的哪个定时器。ITIMER_REAL对应真实定时器,计时器发送的时钟信号为SIGALRM,ITIMER_VIRTUAL对应的是虚拟计时器,计时器发送的时钟信号为SIGVTALRM,ITIMER_PROF对应的是实用计时器,计时器发送的时钟信号为SIGPROF.
getitimer的第二个参数curr_value为一个结构体的传出参数,用于获取该计时器的初始间隔时间和重复间隔时间。
setitimer的第二个参数new_value为一个结构体的传入参数,用于指定该定时器的初始间隔时间和重复间隔时间。参数old_value为一结构体的传出参数,用于传出以前定时器的时间设置(不需要可以设为NULL)。
struct itimerval{
struct timerval it_interval;//重复时间间隔
struct timerval it_value;//初始时间间隔
};
struct timerval{
long tv_sec;//时间的秒数部分
long tv_usec;//时间的微秒部分
};
为进程设置好一个定时器后,该计时器会定时的向进程发送时钟信号!!!
相关文章推荐
- Linux学习笔记之pureftp(四)虚拟用户
- Linux 上虚拟网络与真实网络的映射
- 学习笔记----linux下编译apache中的虚拟主机中出现的apache 403
- linux笔记之Nginx虚拟主机的配置
- Linux运维笔记-文档总结-虚拟网络接口bond
- Linux运维笔记-文档总结-Apache基本配置的介绍和语言支持,虚拟主机,访问控制的实现
- C++库研究笔记——Linux 下高精度计时器
- linux安装之后要安装VMware Tools不然很难在真实机器和虚拟机器之间操作
- linux【进程学习】笔记——PCB、进程环境、进程原语、虚拟地址……
- 真实体验不虚拟 在Windows中运行Linux
- [转] linux虚拟带库操作笔记
- Linux总结笔记5-配置虚拟主机
- 虚拟的大战,真实的恐惧:《世界大战》观后
- TOMCAT笔记(一)之 目录、虚拟主机、SERVER.XML、TOOL管理原理小记
- linux操作笔记
- linux系统安全基础笔记之一
- apache tomcat and jk整合(linux) 笔记
- 来自HP的真实Linux体验的成功故事
- linux系统安全基础笔记之二
- 学习嵌入式Linux的笔记和体会