操作系统课程设计报告alarmclock.doc_第1页
操作系统课程设计报告alarmclock.doc_第2页
操作系统课程设计报告alarmclock.doc_第3页
操作系统课程设计报告alarmclock.doc_第4页
操作系统课程设计报告alarmclock.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安电子科技大学操作系统课程设计(2016年度)实验报告实验名称:Alarm-Clock班 级: 1403018 姓 名: 张可心 学 号:一 实验内容源代码devices/timer.c中有一个timer_sleep()函数。定义如图1所示图1 timer_sleep()函数的定义 该函数的功能是让调用它的线程睡眠一段时间(ticks),然后唤醒。事实上,品同时已经实现该函数,只是使用的是“忙等待”的方法。任务要求:重新实现timer_sleep()函数,避免“忙等待”的发生,设计一种策略并实现。 二 分析及设计 1. 阅读相关的源代码文件,并了解其中关键的数据结构和函数的含义:在xd/os/pintos/src/threads目录下的thread.h,thread.c文件,它们是有关线程初始化、阻塞、解除阻塞,线程调度等内容。xd/os/pintos/src/devices/目录下的timer.h,timer.c文件,本实验要修改的timer_sleep()函数就在其中。同时还要注意定时器中断的处理过程。 2. Thread.h中定义了一个结构体struct thread,这个结构体中用于存放线程的基本信息,如图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_sleep,如图6所示图6 改造后的timer_sleep函数2改造thread结构体(thread.h),如图7所示图7 改造后的thread.h3定义block_check函数并调用,如图8所示图8 定义的block_check函数四 实验结果图9 测试结果五 心得体会本次实验是操作系统课程设计的第一次实验,通过这次实验,我学习了Linux操作系统的一些基本操作,了解了Pintos的部分相关知

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论