- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2014操作系统上机报告
西安电子科技大学
实
验
报
告
:班级:姓名:学号:
一、实验内容
改写time Alarm-clock代码 使其能够提供进程唤醒与阻塞功能
分析与设计
如何利用timer_sleep()函数在CPU的定时器中断处理时候将在队列中,满足解除阻塞条件的线程进行解除阻塞——即满足怎样的条件唤醒在阻塞队列中的线程,并且设定一个判断值,将不能运行的线程加入阻塞队列中。
实现的目标是 将all-list中的满足条件的线程转移到ready-list。
这一条件我们可以在线程的定义中加入一个参照量block-ticks,当阻塞tick减少到零的时候,我们将进程唤醒。
详细实现
定义了一个时间段ticks,利用这个我们可以在定时器中断处理程序时候 进行一次在阻塞队列中阻塞进程进行一次检查,从而确定出哪里进程以及可以解除阻塞状态进入ready-list队列中。
我们在线程结构体中加入了一个新定义量
有了这个阻塞时间作为参照量。我们可以在sleep();
对阻塞时间进行赋值 并作为参考量。并且将线程加入到阻塞队列中。
参考量在CPU进行阻塞队列的函数block_check中用到
再每一次中断检查中,将阻塞时间减少,并且在阻塞时间为0的情况下,将阻塞线程唤醒。
而函数block_check的调用时间应该是在
Cpu定时中断到来的时候,硬件调用时,这时候来检查阻塞队列,是否满足唤醒要求。
在中断前,应该记录下中断之前的状态。并且 将时间提高一。
然后执行thread_foreach()前应该关中断
Thread_foreach函数
可以知道 当判断为关中断状态下,利用线程循环检查,调用block_check函数,将阻塞队里满足唤醒条件的线程进行唤醒。
实验结果
心得体会
遇到问题需要分析 原因,并理出线索。 从原因中找出需要的问题解决方案。
例如何时阻塞线程,何时唤醒。这些在哪些函数中进行实现,需要找到处理地点才会有着手点。还有如何改动已存在的sleep函数和增加阻塞时间的定义来确定唤醒队列中的线程。
在没有参考量时候 应该加入合理的参考量来判断线程的唤醒条件。
参考文献
Pdf课件 ,文档
西安电子科技大学《操作系统课程设计》实验报告 2013年度
文档评论(0)