第一范文网 - 专业文章范例文档资料分享平台

操作系统课程设计实验报告proj1

来源:用户分享 时间:2025/5/26 8:02:44 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

班级:

团队成员: 1

操作系统课程设计报告

目录

目录 .................................................................................................................................................. 2 一、 Nachos综述 .......................................................................................... 错误!未定义书签。 二、 实验要求:建立线程系统 ................................................................... 错误!未定义书签。

2.1 Task 1.1实现KThread.join() .............................................................................................. 3

2.1.1题目要求 .................................................................................................................. 3 2.1.2题目分析与实现方案 .............................................................................................. 3 2.1.3关键点与难点 .......................................................................................................... 4 2.1.4实现代码 .................................................................................................................. 4 2.2 Task 1.2实现条件变量 ....................................................................................................... 5

2.2.1题目要求 .................................................................................................................. 5 2.2.2题目分析与实现方案 .............................................................................................. 5 2.2.3关键点与难点 .......................................................................................................... 6 2.2.4实现代码 .................................................................................................................. 7 2.3 Task 1.3 完成Alarm类 ....................................................................................................... 7

2.3.1题目要求 .................................................................................................................. 7 2.3.2题目分析与实现方案 .............................................................................................. 8 2.3.3关键点与难点 .......................................................................................................... 9 2.3.4实现代码 .................................................................................................................. 9 2.4 Task 1.4条件变量实现同步消息 ..................................................................................... 10

2.4.1题目要求 ................................................................................................................ 10 2.4.2题目分析与实现方案 ............................................................................................ 10 2.4.3关键点与难点 ........................................................................................................ 11 2.4.4实现代码 ................................................................................................................ 11 2.5 Task 1.5实现优先级调度 ................................................................................................. 13

2.5.1题目要求 ................................................................................................................ 13 2.5.2题目分析与实现方案 ............................................................................................ 13 2.5.3关键点与难点 ........................................................................................................ 14 2.5.4实现代码 ................................................................................................................ 15 2.6 Task 1.6条件变量解决过河问题 ..................................................................................... 16

2.6.1题目要求 ................................................................................................................ 16 2.6.2题目分析与实现方案 ............................................................................................ 17 2.6.3关键点与难点 ........................................................................................................ 19 2.6.4实现代码 ................................................................................................................ 19

三、 测试结果 ............................................................................................ 2错误!未定义书签。

2

一、 Nachos综述

Nachos是一款教学用的操作系统平台,他的全名叫做 “Not Another Completely Heuristic Operating System”,Nachos的运行必须借助于宿主机,它通过软件模拟了各种硬件系统,包括中断系统、存储系统、磁盘文件、网络等。它的运行是可以跟踪的,因此,我们可以一步一步的观察操作系统是如何运行的。

Nachos操作系统本身只提供了一套框架,很多地方的实现都需要我们自己来完善,因此我们可以通过修改其源代码,来丰富和增强Nachos操作系统的功能.更可以在完善这些功能的同时,了解操作系统的内部运行机制。

二、实验要求:建立线程系统

2.1 Task 1.1:实现KThread.join() 2.11题目要求

实现Implement Kthread.join()函数。其它的线程不必调用join函数,但是如果join()函数被调用的话,也只能被调用一次。对join()函数第二次调用的执行结果是不被定义的,即使第二次调用的线程与第一次调用的线程不同。无论有没有被join,一个进程都能够正常结束。

2.1.2题目分析与实现方案

3

分析:join函数的作用即为等待调用此函数线程运行完毕。当前线程A调用另一个线程(处于就绪状态) B的join函数时,即A执行B.join()时 (A和B在Nachos中均为Kthread类型对象), A被挂起, 直到B运行结束后, join函数返回, A才能继续运行。如果这个线程已经结束,马上返回。且join()函数只能被调用一次,第二次调用不能保证返回,且调用join()函数的线程必须不能是当前线程。Join()函数结束时唤醒在等待队列中的所有线程,因此需要实现join()方法和修改finish()方法。

方案:

(1)Kthread的join()中的Lib.assertTrue(this != currentThread)已经实现线程只能调用一次join()方法,根据要求,在调用join()方法时,让当前运行线程休眠,并将当前运行的线程加入到一个阻塞队列中。

(2)在线程结束时,finish()函数循环唤醒所有被阻塞的线程。Finish()函数在run()函数返回时自动调用,同样可以被直接调用。但当前唯一运行的线程不能被finish()函数立即结束,只有当其他线程运行时才可结束。

2.1.3关键点与难点

由于java派生于抽象类的对象无法实例化,在运行时很可能出现空指针异常。只能直接利用抽象类的对象调用相关方法。

2.1.4实现代码

public void join() {

Lib.debug(dbgThread, “Joining to thread: “ + toString()); // 判断要调用的进程是否为当前进程(线程只能调用一次join()方法) Lib.assertTrue(this != currentThread);

4

搜索更多关于: 操作系统课程设计实验报告proj1 的文档
操作系统课程设计实验报告proj1.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c71dsf24tou570pl9t1ue_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top