- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
学号:
0121110680
课程设计
题
目
内核定时器
学
院
计算机学院
专
业
软件工程
班
级
姓
名
指导教师
刘军
2013 年
课程设计任务书
学生姓名: 专业班级: 软件zyllOl
指导教师: 刘军 工作单位:计算机科学与技术学院
题目:内核定时器
初始条件:
1操作系统:Linux或者windows
2程序设计语言:C, java语言
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
技术要求:
1) 分析操作系统内核源码。
2) 研究内核的时间管理算法。
3) 建立一种用户空间机制来测量一个多线程程序的执行时间。
设计说明书内容要求:
1) 设计题目与耍求
2) 总的设计思想及系统平台、语言、工具等。
3) 数据结构与模块说明(功能与流程图)
4) 给出用户名、源程序名、日标程序名和源程序及其运行结果。(要注明存储
各个程序及其运行结果的主机IP地址和目录。)
5)运行结呆与运行情况
(提示:(1)编译命令可用: CC
(2)多线程编程方法参见附件。)
? lpthread
■0
H标文件名 源文件名
3. 调试报告:
1) 调试记录
2) 口我评析和总结
上机时间安排:
19周一?五下午14: 00 一 18: 00
指导教师签名:
年
月
日
系主任(或责任教师)签名:
年
口
摘要:
每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是 整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它 可以在程序里独立执行。也可以把它理解为代码运行的上下文。内核时间指明线程执行操 作系统代码己经经过了多少个100ns的CPU时间,linux是一个具有保护模式的操作系统。 它一直T作在i386 cpu的保护模式Z下。内存被分为两个单元:内核区域和用户区域。一般 地,在使用虚拟内存技术的多任务系统上,内核和应用有不同的地址空间,因此,在内核 和应用Z间以及在应用与应间进行数据交换需要专门的机制来实现,本文站在用户空 间的角度,测试一个多线程程序的程序执行时间。当一个进程希望获得信号量时,如果信号 量已经被占有,则该进程将会被放到等待队列上sleep直到cpu将其唤醒。相对丁 spinlock 来说开销太大,适用于长时间占有的locko不可用于中断状态,因为它拥有信号量的进程 可以sleep,可以被抢占,信号量可以设置为同时允许的进程数。
关键字:
内核的时间管理算法 内核定时器 执行时间 多线程程序
1.设计题目和要求
设计题内核定时器
设计要求:通过研究内核的时间管理算法,学习内核源代码;然后应用这些知识并且使用“信号”建 立一种用户空间机制來测量一个多线程程序的执行时间
2.1.1 Linux内核定时器
定时器是管理内核时间的基础,用来计算流逝的时间,它以某种频率(节扌n率)自行 触发时钟中断,当时钟中断发生时,内核就通过一种特殊中断处理程序对其进行处理。 但是原来的实现只能是time_t mytime形式的,经过简单的localtime(mytime)和 ctime(mytime)处理.精度是不够的,为了返回高精度的时间,这里使用了 gettimeofday函数。 这个syscall用来供用户获取timeval格式的当前时间信息(精确度为微秒级),以及系统的 当前时区信息(timezone)o结构类型timeval的指针参数tv指向接受时间信息的用户空间 缓冲区,参数tz是一个timezone结构类型的指针,指向接收时区信息的用户空间缓冲区。 这两个参数均为输出参数,返回值0表示成功,返回负值表示出错。两数sys_gettimeofday() 的源码如卜(kernel/time.c):
asmlinkage long sys_gettimeofday(struct timeval *tv, struct timezone *tz)
{ if (tv) { struct timeval ktv; do_gettimeofday(ktv); if (copy_to_user(tv, ktv, sizeof(ktv))) return -EFAULT;
} if (tz) { if (copy_to_user(tz, sys_tz, sizeof(sys_tz))) return ?EFAULT;
return 0;
}
显然,函数的实现主要分成两个大的方面:
如果W指针有效,则说明用户要以timeval格式来检索系统当前时间。为此,先调用 do_gettimeofday()函数来检索系统当前时间并保存到局部变量ktv中。然后再调用 copy_to_user ()宏将保存在内核空间屮的当前时间信息拷贝到由参数指针tv所指向的用户
原创力文档


文档评论(0)