- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux内核分析实验报告
实验题目:内核定时器
实验目的:练>]怎样编写调用内核的吋间测量功能为应用程序测量和精确定吋, 通过这个实验:可以进一步了解Linux内的的定时机制以及数据结果以及怎样从
用户空间去访问内核控件的时间数据 硬件环境:内存1G以上 软件环境:Linux (Ubuntu) 2-6
实验步骤:
-:实验原理简介:
在每一个用户进程的主耍执行动作前设定时间,主要动作完成以后,获 取时间,如此得到了主要动作的执行时间,系统总共有三种类型的时间
ITIMER_REAL, ITIMER.VIRTUAL, ITIMER_PROF,三种类型的数据分别记录了程序
执行的实际吋间,程序执行的虚拟吋间,程序执行的CPU吋间。其屮:
程序的用户态吋间=ITI MRT_PROF得到的吋间
程序的系统态时间=ITIMRT_PROF得到的时间(CPU时间)- ITI MER_V IRTUAL得到的时间(用户态时间)
在这里使用了 f ibonacci函数测验。因为f ibonacci函数运行的吋间相 对较长,实验结果明显。测验相关函数时,可以运用一个for循环达到相同的效 果。
二:主要数据结构:
时问结构:
struct timeval{
long tv_sec; 1970+1开始经历的秒数 long tv_usec;//从上一秒到现在经历的微秒数 } theTime;
要想得到现在的具体时问,需要经过和应的转换
吋间设置结构:
struct itimerval{ struct timeval it_interval: struct timeval it_vaIue
};
it_interval当吋钟到吋后吋钟设的初始值; i t_va I ue 调用get i timer函数后,吋间值存储在这个结构中
三:主要函数介绍 1:系统调用函数
(1) getitimer ( int timerType , const struct itimerval *va I ue) 函数说明:得到指定类型的的吋间值,得到的给过放在value
结构中
: (2) setitimer(int timerType , const struct itimerval *value,
struct itimerval *oldValue )
函数说明:设置指定类型的时间的时间值,设置的标准时 value结构巾指定的值。
(3) sighandler_t signal (int signum,sighandler_t handler);
函数说明:将指定的信号类型与指定的函数相关联。
2:自定义函数:
static void psig_real(void);
函数说明:每当父进程实呩执行时问达到1秒,就把 p_real_secs (记录父进程实际执行的秒数)变量加1?两 个子进^同理。
static void psig_virtual(void);
函数说明:每当父进程虚拟执行时间达到1秒,就把 p_virt_secs (记录父进程实呩执行的秒数)变量加1。两 个子ii程同理。
static void psig_prof(void);
函数说明:每当父进程prof执行时间达到1秒,就把 p」eal_secs (记录父进程实际执行的秒数)变量加1。两 个子进同理。
四:程序流程:
父子程序的执行流程基本相同,满足:设置计算 获取。具体代码如下:(见图3-1)94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
111 112
113
114
115
116
117
118
119
121
clclclclreaU.it interval..tv sec =0;//定时器到0时候.重新设置成十抄钟 realt.it_interval.tv usee = 999999; realt.it value.tv sec =0;
cl
cl
cl
cl
clvirtt.itinterval.tv_sec=0; cl virtt.it interval.tv usec=999999; cl virtt.it value.tv sec=o; cl virtt.it value.tv usec=999999;
cl proft.it interval.tv sec=0; cl proft.it interval.tv_usec=999999; cl proft.it value.tv sec=0; cl proft.it value.tv usec=999999;
setitimer(ITIMER REAL,c1 realt.NULL);
set it ime r(ITIMERVIRTUA
您可能关注的文档
最近下载
- 智能制造精益生产与智能制造的融合.pptx VIP
- 汽车热管理管路深度报告:新能源管路空间大幅提升,塑料应用高速增长.docx VIP
- 01.2021U9Cloud多组织入门培训-基础设置.pptx VIP
- 学校校长公开选拔笔试试题及参考答案校长招聘考试笔试真题及答案.docx VIP
- 2025年央国企AI+数智化转型研究报告.pdf VIP
- 2025年疾控中心招聘试题及答案.docx VIP
- 道家打坐的正确方法.doc VIP
- 2024-2025学年初中音乐七年级上册(2024)人音版(2024)教学设计合集.docx
- 智能毕业设计:基于单片机的电子时钟设计.docx VIP
- 2024年贵州社区工作者招聘真题 .pdf VIP
文档评论(0)