操作系统课程设计内核定时器.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档