- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统大作业-内核定时器
学 号: 0120910680115
课 程 论 文
课程名称 操作系统A 学 院 计算机科学与技术学院 专 业 软件工程专业 班 级 软件0901 姓 名 指导教师 向广利
2011——2012学年 第1学期
目录
1.设计题目和要求…………………………………………………………………..3
2. 总体设计思想及系统平台、语言、工具………………………………………..3
3. 数据结构与模块说明(功能与流程图)……………………………………....13
4. 源代码(见附录)…………………………………………………………….…15
5. 运行结果以运行情况………………………………………………………….…15
6. 调试记录………………………………………………………………………….16
7. 自我评价和总结:……………………………………………………………….16
8. 参考资料:……………………………………………………………………….16
9. 附录…………………………………………………………………………….…17
课程设计任务书
学生姓名: 专业班级: 软件0901
指导教师: 向广利 工作单位: 计算机科学与技术学院
题目: 内核定时器
初始条件:
1操作系统:Linux 或者 windows
2程序设计语言:C,java语言
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.技术要求:
1)分析操作系统内核源码。
2)研究内核的时间管理算法。
3)建立一种用户空间机制来测量一个多线程程序的执行时间。
2. 设计说明书内容要求:
1)设计题目与要求
2)总的设计思想及系统平台、语言、工具等。
3)数据结构与模块说明(功能与流程图)
4)给出用户名、源程序名、目标程序名和源程序及其运行结果。(要注明存储各个程序及其运行结果的主机IP地址和目录。)
5)运行结果与运行情况
(提示: (1)编译命令可用: cc -lpthread -o 目标文件名 源文件名
(2)多线程编程方法参见附件。)
3. 调试报告:
1) 调试记录
自我评析和总结
上机时间安排:
19周一 ~ 五 下午14:00 - 18:00
指导教师签名: 年 月 日
系主任(或责任教师)签名: 年 月 日
摘要:
每个正在系统上运行的程序都是一个。每个进程包含一到多个线程。进程也可能是整个或者是部分程序的动态执行。线程是一组的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为运行的上下文。指明线程执行操作系统代码已经经过了多少个100ns的CPU时间一般地,在使用虚拟内存技术的多任务系统上,内核和应用有不同的地址空间,因此,在内核和应用之间以及在应用与应用之间进行数据交换需要专门的机制来实现,当一个进程希望获得信号量时, 如果信号量已经被占有, 则该进程将会被放到等待队列上sleep直到cpu将其唤醒。相对于spinlock来说开销太大,适用于长时间占有的lock。不可用于中断状态,因为它拥有信号量的进程可以sleep, 可以被抢占信号量可以设置为同时允许的进程数Linux内核定时器:
时钟中断:有系统定时的硬件以周期性的时间间隔产生
比如HZ=1000.即1S中产生1000次中断。一次1/1000s
每当时钟中断产生一次,jiddise(ulong)就加一,驱动程式根据jiffise值计算时间及间隔关机之后jiffse清零。
一个延时程序:
ulong j=jiffise+jit_delay*HZ;//延时jit_delay秒
while(jiffiseJ);
内核定时器 用于控制某个函数在未来的某个特定的时刻执行,特点函数执行一次,就是一个单闹钟
内核定时器:内核定时器被组织成双向链表,使用一个结构体描述
Struct timer_list
{
Struct list_head entry;//内核使用
Ulong expires; //超时的jiffse值
Void(*funct)(ulong);//超时处理函数
Ulong data; //超时处理函数的参数
Struct tvec_base*base;//内核使用
}
内核定时器:
Void init_timer(struct timer_list*timer) //初始化定时器 对了结构
启动定时器:
V
文档评论(0)