操作系统课程设计报告Alarm-Clock.doc

操作系统课程设计报告Alarm-Clock.doc

ID:51254227

大小:428.00 KB

页数:7页

时间:2020-03-20

操作系统课程设计报告Alarm-Clock.doc_第1页
操作系统课程设计报告Alarm-Clock.doc_第2页
操作系统课程设计报告Alarm-Clock.doc_第3页
操作系统课程设计报告Alarm-Clock.doc_第4页
操作系统课程设计报告Alarm-Clock.doc_第5页
资源描述:

《操作系统课程设计报告Alarm-Clock.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、西安电子科技大学操作系统课程设计(2016年度)实验报告实验名称:Alarm-Clock班级:1403018姓名:张可心学号:14030188030一实验内容源代码devices/timer.c中有一个timer_sleep()函数。定义如图1所示图1timer_sleep()函数的定义该函数的功能是让调用它的线程睡眠一段时间(ticks),然后唤醒。事实上,品同时已经实现该函数,只是使用的是“忙等待”的方法。任务要求:重新实现timer_sleep()函数,避免“忙等待”的发生,设计一种策略并实现。二分析及设计1.阅读相关的源代码文件,并了解其中关键的数据结构和函数的含义:在xd/o

2、s/pintos/src/threads目录下的thread.h,thread.c文件,它们是有关线程初始化、阻塞、解除阻塞,线程调度等内容。xd/os/pintos/src/devices/目录下的timer.h,timer.c文件,本实验要修改的timer_sleep()函数就在其中。同时还要注意定时器中断的处理过程。2.Thread.h中定义了一个结构体structthread,这个结构体中用于存放线程的基本信息,如图2所示图2线程的基本信息3.Pintos中线程的状态有四种,在thread.h函数中的定义如图3图3线程的状态定义4.系统的驱动:驱动力为定时器中断函数,定时器中断

3、频率在timer.h中定义如图4所示图4定时器中断频率由此可知一个定时器中断的时长大约为10ms,这里称为一个ticks。5.中断处理过程中断处理函数的调用过程如图5所示图5中断处理函数的调用过程原线程中这个timer_sleep函数执行过程是不断地循环检测这个函数执行以及执行过后等待时长是否小于cpu的时钟周期,如果是,则重复循环等待,直至等待时间大于等于ticks,则执行线程后续代码。此方法的缺点是,函数不断循环试探,占用cpu。设计方案从去掉循环测试时间开始,将在thread结构体中添加一个变量block_ticks(线程阻塞时间),来标记时间的变化。当线程度过了ticks,就唤

4、醒它,进入ready状态。三详细实现1改造timer_sleep,如图6所示图6改造后的timer_sleep函数2改造thread结构体(thread.h),如图7所示图7改造后的thread.h3定义block_check函数并调用,如图8所示图8定义的block_check函数四实验结果图9测试结果五心得体会本次实验是操作系统课程设计的第一次实验,通过这次实验,我学习了Linux操作系统的一些基本操作,了解了Pintos的部分相关知识,学会了如何更加高效的阅读代码,感觉收获很大。参考文献[1]黄伯虎,Alarm-Clock指导手册。[2]网上相关代码资料等。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。