武汉理工大学操作系统课程设计中国好学长系列之小灰灰的爸爸分析报告.doc
文本预览下载声明
学 号:
课 程 设 计
课程名称 操作系统 学 院 计算机科学与技术学院 专 业 软件工程专业 班 级 中国好学长系列 姓 名 小灰灰的爸爸 指导教师 刘 军
2013——2014学年 第1学期
目录
课程设计任务书 1
摘要 2
1 设计题目与要求 2
1.1设计题目:内核定时器 2
1.2设计要求:通过研究内核的时间管理算法,学习内核源代码;然后应用这些知识并且使用“信号”建立一种用户空间机制来测量一个多线程程序的执行时间。 2
2 总的设计思想及系统平台、语言、工具 2
2.1 设计思想: 2
2.1.1 Linux内核对定时器的描述 2
2.1.2 Linux 内核定时器 4
2.1.3 Linux 信号signal处理机制 7
2.1.4多线程编程 8
2.1.5内核定时器机制的实现 10
2.2 系统平台: 13
2.3 编程工具: 13
3.数据结构与模块说明(功能与流程图) 13
3.1 定时器使用: 13
3.2 多线程程序: 14
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:指定定时器到期的时间,这个时间被表示成自系统启动以
显示全部