linux内核编程实验报告3

linux内核编程实验报告3

ID:27700631

大小:176.92 KB

页数:11页

时间:2018-12-05

linux内核编程实验报告3_第1页
linux内核编程实验报告3_第2页
linux内核编程实验报告3_第3页
linux内核编程实验报告3_第4页
linux内核编程实验报告3_第5页
资源描述:

《linux内核编程实验报告3》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Linux内核分析实验报告实验题目:内核定时器实验目的:练>]怎样编写调用内核的吋间测量功能为应用程序测量和精确定吋,通过这个实验:可以进一步了解Linux内的的定时机制以及数据结果以及怎样从用户空间去访问内核控件的时间数据硬件环境:内存1G以上软件环境:Linux(Ubuntu)2-6实验步骤:-:实验原理简介:在每一个用户进程的主耍执行动作前设定时间,主要动作完成以后,获取时间,如此得到了主要动作的执行时间,系统总共有三种类型的时间ITIMER_REAL,ITIMER.VIRTUAL,ITIMER_PROF,三种类型的数据分别记录了程序执行的实际吋间,程序执

2、行的虚拟吋间,程序执行的CPU吋间。其屮:程序的用户态吋间=ITIMRT_PROF得到的吋间程序的系统态时间=ITIMRT_PROF得到的时间(CPU时间)-ITIMER_VIRTUAL得到的时间(用户态时间)在这里使用了fibonacci函数测验。因为fibonacci函数运行的吋间相对较长,实验结果明显。测验相关函数时,可以运用一个for循环达到相同的效果。二:主要数据结构:1.时问结构:structtimeval{longtv_sec;"1970+1开始经历的秒数longtv_usec;//从上一秒到现在经历的微秒数}theTime;要想得到现在的具体时问

3、,需要经过和应的转换2.吋间设置结构:structitimerval{structtimevalit_interval:structtimevalit_vaIue};it_interval当吋钟到吋后吋钟设的初始值;it_vaIue调用getitimer函数后,吋间值存储在这个结构中三:主要函数介绍1:系统调用函数(1)getitimer(inttimerType,conststructitimerval*vaIue)函数说明:得到指定类型的的吋间值,得到的给过放在value结构中:(2)setitimer(inttimerType,conststructiti

4、merval*value,structitimerval*oldValue)函数说明:设置指定类型的时间的时间值,设置的标准时value结构巾指定的值。(3)sighandler_tsignal(intsignum,sighandler_thandler);函数说明:将指定的信号类型与指定的函数相关联。2:自定义函数:staticvoidpsig_real(void);函数说明:每当父进程实呩执行时问达到1秒,就把p_real_secs(记录父进程实际执行的秒数)变量加1◊两个子进^同理。staticvoidpsig_virtual(void);函数说明:每当父

5、进程虚拟执行时间达到1秒,就把p_virt_secs(记录父进程实呩执行的秒数)变量加1。两个子ii程同理。staticvoidpsig_prof(void);函数说明:每当父进程prof执行时间达到1秒,就把p」eal_secs(记录父进程实际执行的秒数)变量加1。两个子进同理。四:程序流程:父子程序的执行流程基本相同,满足:设置计算获取。具体代码如下:(见图3-1)949596979899100101102103104105106107108109110111112113114115116117118119120121signal(SIGALRM,clsig

6、real,;signal(SIGVTALRMrclsigvirtual);signal(SIGPROF,clsigprof};clclclclreaU.itinterval..tvsec=0;//定时器到0时候.重新设置成十抄钟realt.it_interval.tvusee=999999;realt.itvalue.tvsec=0;//定义了当前的值realt.itvalue.tvusee=999999;clvirtt.itinterval.tv_sec=0;clvirtt.itinterval.tvusec=999999;clvirtt.itvalue.tv

7、sec=o;clvirtt.itvalue.tvusec=999999;clproft.itinterval.tvsec=0;clproft.itinterval.tv_usec=999999;clproft.itvalue.tvsec=0;clproft.itvalue.tvusec=999999;setitimer(ITIMERREAL,&c1realt.NULL);setitimer(ITIMER'VIRTUALr&c1virtt,NULL);setitimer(ITIMERPROF,&clproft,NULL);//父进程设置三种定时器芫毕fib=fib

8、onacci(atoi(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。