欢迎来到天天文库
浏览记录
ID:44393104
大小:259.12 KB
页数:21页
时间:2019-10-21
《武汉理工大学-操作系统课程设计-中国好学长系列之小灰灰地爸爸》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准学号:课程设计课程名称操作系统学院计算机科学与技术学院专业软件工程专业班级中国好学长系列姓名小灰灰的爸爸指导教师刘军2013——2014学年第1学期文案大全实用标准目录课程设计任务书1摘要21设计题目与要求21.1设计题目:内核定时器21.2设计要求:通过研究内核的时间管理算法,学习内核源代码;然后应用这些知识并且使用“信号”建立一种用户空间机制来测量一个多线程程序的执行时间。22总的设计思想及系统平台、语言、工具22.1设计思想:22.1.1Linux内核对定时器的描述22.1.2Linux内核定时器42.1
2、.3Linux信号signal处理机制72.1.4多线程编程82.1.5内核定时器机制的实现102.2系统平台:132.3编程工具:133.数据结构与模块说明(功能与流程图)133.1定时器使用:133.2多线程程序:143.3程序流程图:154.源程序:155.运行结果与运行情况166.调试记录:177.自我评析和总结:188.参考文献18评分表19文案大全实用标准课程设计任务书学生姓名:专业班级:指导教师:刘军工作单位:计算机科学与技术学院题目:内核定时器初始条件:1.操作系统:Linux2.程序设计语言:C语言3
3、.有界缓冲区内设有20个储存单元,其初值为0,放入/取出的数据项按增序设定为1-20这20个整型数要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.技术要求:通过研究内核的时间管理算法学习内核源代码。然后应用这些知识并且使用“信号”建立一种用户空间机制来测量一个多线程程序的执行时间。实验条件要求:每人一台Linux主机且有超级用户权限。2.设计说明书内容要求:1)设计题目与要求2)总的设计思想及系统平台、语言、工具等3)数据结构与模块说明(功能与流程图)4)运行结果与运行情况3.调试报
4、告:1)调试记录2)自我评析和总结时间安排:序号阶段内容所需时间1消化资料、系统设计1天2编程、调试3天3撰写报告1天合计5天指导教师签名:2013年12月26日系主任(或责任教师)签名:年月日文案大全实用标准内核定时器摘要每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。内核时间指明线程执行操作系统代码已经经过了多少个100ns的CPU时间,linux是一个具有保护模式的操作系统。它一直工作在i3
5、86cpu的保护模式之下。内存被分为两个单元:内核区域和用户区域。一般地,在使用虚拟内存技术的多任务系统上,内核和应用有不同的地址空间,因此,在内核和应用之间以及在应用与应用之间进行数据交换需要专门的机制来实现,本文站在用户空间的角度,测试一个多线程程序的程序执行时间。当一个进程希望获得信号量时,如果信号量已经被占有,则该进程将会被放到等待队列上sleep直到cpu将其唤醒。相对于spinlock来说开销太大,适用于长时间占有的lock。不可用于中断状态,因为它拥有信号量的进程可以sleep,可以被抢占。1设计题目与要
6、求1.1设计题目:内核定时器1.2设计要求:通过研究内核的时间管理算法,学习内核源代码;然后应用这些知识并且使用“信号”建立一种用户空间机制来测量一个多线程程序的执行时间。2总的设计思想及系统平台、语言、工具2.1设计思想:2.1.1Linux内核对定时器的描述Linux在include/linux/timer.h头文件中定义了数据结构timer_list来描述一个内核定时器:structtimer_list{structlist_headlist;unsignedlongexpires;unsignedlongdat
7、a;文案大全实用标准void(*function)(unsignedlong);};各数据成员的含义如下:(1)双向链表元素list:用来将多个定时器连接成一条双向循环队列。(2)expires:指定定时器到期的时间,这个时间被表示成自系统启动以来的时钟滴答计数(也即时钟节拍数)。当一个定时器的expires值小于或等于jiffies变量时,我们就说这个定时器已经超时或到期了。在初始化一个定时器后,通常把它的expires域设置成当前expires变量的当前值加上某个时间间隔值(以时钟滴答次数计)。(3)函数指针fun
8、ction:指向一个可执行函数。当定时器到期时,内核就执行function所指定的函数。而data域则被内核用作function函数的调用参数。内核函数init_timer()用来初始化一个定时器。实际上,这个初始化函数仅仅将结构中的list成员初始化为空。如下所示(include/linux/timer.h):staticinl
此文档下载收益归作者所有