还剩5页未读,继续阅读
文本内容:
西安电子科技大学操作系统课程设计2016年度实验报告实验名称Alarm-Clock班级1403018姓名张可心学号14030188030一实验内容源代码devices/timer.c中有一个timer_sleep函数定义如图1所示图1timer_sleep函数的定义该函数的功能是让调用它的线程睡眠一段时间(ticks),然后唤醒事实上,品同时已经实现该函数,只是使用的是“忙等待”的方法任务要求重新实现timer_sleep函数,避免“忙等待”的发生,设计一种策略并实现二分析及设计
1.阅读相关的源代码文件,并了解其中关键的数据结构和函数的含义在xd/os/pintos/src/threads目录下的thread.hthread.c文件,它们是有关线程初始化、阻塞、解除阻塞,线程调度等内容xd/os/pintos/src/devices/目录下的timer.htimer.c文件,本实验要修改的timer_sleep函数就在其中同时还要注意定时器中断的处理过程
2.Thread.h中定义了一个结构体structthread,这个结构体中用于存放线程的基本信息,如图2所示图2线程的基本信息
3.Pintos中线程的状态有四种,在thread.h函数中的定义如图3图3线程的状态定义
4.系统的驱动驱动力为定时器中断函数,定时器中断频率在timer.h中定义如图4所示图4定时器中断频率由此可知一个定时器中断的时长大约为10ms,这里称为一个ticks
5.中断处理过程中断处理函数的调用过程如图5所示图5中断处理函数的调用过程原线程中这个timer_sleep函数执行过程是不断地循环检测这个函数执行以及执行过后等待时长是否小于cpu的时钟周期,如果是,则重复循环等待,直至等待时间大于等于ticks,则执行线程后续代码此方法的缺点是,函数不断循环试探,占用cpu设计方案从去掉循环测试时间开始,将在thread结构体中添加一个变量block_ticks(线程阻塞时间),来标记时间的变化当线程度过了ticks,就唤醒它,进入ready状态三详细实现1改造timer_s...。