山东大学计算机学院操作系统实验报告

山东大学计算机学院操作系统实验报告

ID:46962473

大小:73.19 KB

页数:56页

时间:2019-12-01

山东大学计算机学院操作系统实验报告_第1页
山东大学计算机学院操作系统实验报告_第2页
山东大学计算机学院操作系统实验报告_第3页
山东大学计算机学院操作系统实验报告_第4页
山东大学计算机学院操作系统实验报告_第5页
资源描述:

《山东大学计算机学院操作系统实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、....操作系统课程设计报告学院:计算机科学与技术学院专业:计算机科学与技术班级:20**级*班姓名:***学习参考....学号:20**********目录一实验平台3二Project1建立线程系统3Task1.1实现KThread.join()31.要求32.分析33.方案44.实现代码4Task1.2利用中断提供原子性,直接实现条件变量51.要求52.分析53.方案64.实现代码6Task1.3实现waitUntil81.要求82.分析83.方案94.实现代码9Task1.4用条件变量,不使用信号量,实现

2、同步发送接收消息,speak,listen111.要求112.分析123.方案124.实现代码12Task1.5完成PriorityScheduler实现优先级调度151.要求152.分析153.方案164.实现代码16Task1.6201.要求202.分析203.方案214.实现代码21三Project2多道程序设计30Task2.1311.要求312.分析313.方案324.实现代码34Task2.2391.要求392.分析403.方案404.实现代码41Task2.348学习参考....1.要求482.分

3、析483.方案484.实现代码50Task2.4531.要求532.分析533.方案534.实现代码53学习参考....一实验平台开发语言:Java开发工具:EclipseLuna操作系统:Ubuntu14.04二Project1建立线程系统Task1.1实现KThread.join()1.要求实现ImplementKThread.join()函数。注意:其它的线程不必调用join函数,但是如果它被调用的话,也只能被调用一次。对join函数第二次调用的执行结果是不被定义的(即使第二次调用的线程与第一次调用的线程

4、不同)。2.分析Join函数的作用即为等待某线程运行完毕.当前线程(唯一一个正在运行的线程)A调用另一个线程(处于就绪状态)B的join函数时(A和B在Nachos中均为KThread类型对象),A被挂起,直到B运行结束后,join函数返回,A才能继续运行。3.方案原KThread的join()中的Lib.assertTrue(this!=currentThread)已经实现线程只能调用一次join()方法,根据要求,在调用join()方法时,让当前运行线程休眠,并将当前运行的线程加入到一个阻塞队列中。在线程结

5、束时,finish()函数循环唤醒所有被阻塞的线程。学习参考....1.实现代码publicvoidjoin(){Lib.debug(dbgThread,"Joiningtothread:"+toString());Lib.assertTrue(this!=currentThread);booleanintStatus=Machine.interrupt().disable();if(status!=statusFinished){waitForJoin.waitForAccess(currentThread)

6、;KThread.sleep();}}publicstaticvoidfinish(){Lib.debug(dbgThread,"Finishingthread:"+currentThread.toString());Machine.interrupt().disable();Machine.autoGrader().finishingCurrentThread();Lib.assertTrue(toBeDestroyed==null);toBeDestroyed=currentThread;currentTh

7、read.status=statusFinished;学习参考....KThreadwaitThread;while((waitThread=currentThread.waitForJoin.nextThread())!=null){waitThread.ready();}sleep();}Task1.2利用中断提供原子性,直接实现条件变量1.要求通过利用中断有效和无效所提供的原子性实现条件变量。我们已经提供类似的例子用例实现信号量。你要按此提供类似的条件变量的实现,不能直接利用信号量来实现(你可以使用loc

8、k,虽然它间接地调用了信号量)。在你完成时要提供条件变量的两种实现方法。你的第二种条件变量实现要放在nachos.threads.Condition2中。2.分析threads.Lock类提供了锁以保证互斥.在临界代码区的两端执行Lock.acquire()和Lock.release()即可保证同时只有一个线程访问临界代码区.条件变量建立在锁之上,由threads.Condition实

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

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

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