文档详情

操作系统大作业-内核定时器.doc

发布:2017-12-17约1.77万字共20页下载文档
文本预览下载声明
学 号: 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
显示全部
相似文档