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

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学 号: 课 程 设 计 课程名称 操作系统 学 院 计算机科学与技术学院 专 业 软件工程专业 班 级 中国好学长系列 姓 名 小灰灰的爸爸 指导教师 刘 军 2013——2014学年 第1学期 目录 课程设计任务书 1 摘要 2 1 设计题目与要求 2 1.1设计题目:内核定时器 2 1.2设计要求:通过研究内核的时间管理算法,学习内核源代码;然后应用这些知识并且使用“信号”建立一种用户空间机制来测量一个多线程程序的执行时间。 2 2 总的设计思想及系统平台、语言、工具 2 2.1 设计思想: 2.1.1 Linux内核对定时器的描述 2.1.2 Linux 内核定时器 2.1.3 Linux 信号signal处理机制 2.1.4多线程编程 8 2.1.5内核定时器机制的实现 10 2.2 系统平台: 1 2.3 编程工具: 1 3.数据结构与模块说明(功能与流程图) 13 3.1 定时器使用: 1 3.2 多线程程序: 1 3.3程序流程图: 15 4. 源程序: 15 5.运行结果与运行情况 16 6.调试记录: 17 7.自我评析和总结: 18 8.参考文献 18 评分表 19 课程设计任务书 学生姓名: 专业班级: 指导教师: 刘军 工作单位: 计算机科学与技术学院 题目: 内核定时器 初始条件: 操作系统:Linux 程序设计语言:C语言 3.有界缓冲区内设有20个储存单元,其初值为0,放入/取出的数据项按增序设定为1-20这20个整型数 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.技术要求: 通过研究内核的时间管理算法学习内核源代码。然后应用这些知识并且使用“信号”建立一种用户空间机制来测量一个多线程程序的执行时间。 实验条件要求:每人一台Linux主机且有超级用户权限。 2. 设计说明书内容要求: 1)设计题目与要求 2)总的设计思想及系统平台、语言、工具等 3)数据结构与模块说明(功能与流程图) 4)运行结果与运行情况 3. 调试报告: 1)调试记录 2)自我评析和总结 时间安排: 序号 阶段内容 所需时间 1 消化资料、系统设计 1天 2 编程、调试 3天 3 撰写报告 1天 合计 5天 指导教师签名: 2013年12月26日 系主任(或责任教师)签名: 年 月 日 内核定时器 摘要 每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。内核时间指明线程执行操作系统代码已经经过了多少个100ns的CPU时间,linux是一个具有保护模式的操作系统。它一直工作在i386 cpu的保护模式之下。内存被分为两个单元: 内核区域和用户区域。一般地,在使用虚拟内存技术的多任务系统上,内核和应用有不同的地址空间,因此,在内核和应用之间以及在应用与应用之间进行数据交换需要专门的机制来实现,本文站在用户空间的角度,测试一个多线程程序的程序执行时间。当一个进程希望获得信号量时, 如果信号量已经被占有, 则该进程将会被放到等待队列上sleep直到cpu将其唤醒。相对于spinlock来说开销太大,适用于长时间占有的lock。不可用于中断状态,因为它拥有信号量的进程可以sleep, 可以被抢占。 1 设计题目与要求 1.1设计题目:内核定时器 1.2设计要求:通过研究内核的时间管理算法,学习内核源代码;然后应用这些知识并且使用“信号”建立一种用户空间机制来测量一个多线程程序的执行时间。 2 总的设计思想及系统平台、语言、工具 2.1 设计思想: 2.1.1Linux内核对定时器的描述 Linux在include/linux/timer.h头文件中定义了数据结构timer_list来描述一个内核定 时器: struct timer_list { struct list_head list; unsigned long expires; unsigned long data; void (*function)(unsigned long); }; 各数据成员的含义如下: (1)双向链表元素list:用来将多个定时器连接成一条双向循环队列。 (2)expires:指定定时器到期的时间,这个时间被表示成自系统启动以来的时钟滴答计

文档评论(0)

liyxi26 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档