您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 房地产 > 基于nachos的线程工作机制设计与实现课程设计说明书
课程设计报告基于nachos的线程工作机制设计与实现1.准备工作..................................................................31.1阅读英文版向导.......................................................31.1.1Nachos和Java端口............................................31.1.2Nachos虚拟机..................................................41.2jdb的使用...........................................................41.3代码分析过程.........................................................51.3.1编译...........................................................51.3.2分析执行流程...................................................51.3.3解读代码.......................................................52.Project0:阅读代码和说明,理解Nachos的工作方式...........................72.1Nachos模拟的物理机的运行机制........................................72.1.1模拟物理机的boot过程..........................................72.1.2模拟的硬件设备的工作原理.......................................82.2Nachos中线程运行机制................................................82.2.1线程包--与machine包中的TCB的关系...........................82.2.2线程调度.......................................................92.2.3创建线程的过程,创建多个线程的过程............................102.3Nachos中支持用户进程的机制.........................................113.Project1:线程工作机制..................................................113.1需求分析............................................................113.1.1开发背景......................................................113.1.2系统开发环境需求..............................................113.1.3系统目标......................................................113.2系统总体设计........................................................113.3系统详细设计........................................................123.3.1A部分........................................................123.3.2B部分........................................................133.3.3C部分........................................................143.3.4D部分........................................................143.4系统实现(主要代码)................................................143.4.1条件变量的实现................................................153.4.2时钟定时功能..................................................153.4.3进程同步收发字的实现..........................................163.5系统测试............................................................163.5.1同步链表及Alarm的测试........................................163.5.2Communicator测试.............................................194.实现项目的过程与步骤.....................................................215.遇到的困难与获得的主要成果...............................................221.准备工作1.1阅读英文版向导首先,我阅读了UniversityofCaliforniaBerkeley·ComputerScience162·OperatingSystemsandSystemsProgramming·CourseReaderforSpring2008并做了翻译,部分翻译如下,在做了这些大致了解之后,我才开始解读代码工作。Nachos-5.0j向导:1.NachosandtheJavaPortNachos和Java端口2.NachosMachineNachos虚拟机3.ThreadsandScheduling线程和调度4.TheNachosSimulatedMIPSMachineNachos模拟MIPS虚拟机5.User-LevelProcesses用户级的程序1.1.1Nachos和Java端口1)为什么实用Java语言?先不管Nachos的成功,有好多原因让我们相信Java更加有用:·Java比C++更加简单。没有必要把Nachos限制在一部分语言上,学生不用理解所有的语言·Java是一种安全类型,C++不是。C++程序编写者可以写溢出数组,但是这其实是一个很大的问题,导致一些项目组无法在限定的时间内找出工程中的错误,主要是因为这些错误与操作系统本身无关。·用Java做一个虚拟机层次的工程比C++工程更加合理。·现在很多本科数据结构课,包括伯克利大学,现在都是用Java,而不是C++,学生们了解Java更多。·Java是相对便携的。Nachos4.0用不便携的集合来支持多线程。在Nachos4.0中添加一个新的目标需要为端口编写更多的代码。2)Java好用吗?大家最关心的问题就是Java的速度问题了。这是一个无可争议的事实就是Java程序的运行速度比C++设备慢。这个结论令人迷惑,虽然:·在Nachos4.0的调试周期中编译时最重要的部分。因为Javac每次调用时都尽可能多的编译,Nachos5.0j实际上编译的比Nachos4.0快的多。·在网络上产生大文件更加减缓编译的周期。Nachos5.0j的.class文件比Nachos4.0的.o文件小的多,甚至是用-O编译时也是。这是因为C++的模板,模板是一种没有精巧的编译器或者管理器就是变得非常大。·安全类型的语言是广为人知的让调试周期更加高效的语言。另一个普遍的担忧是用安全类型的语言写一个操作系统是不现实的。这里所说的不现实的并不是你想象中的那样。真正的错做系统的两方面已经不使用Java了,但是没有一个是严格的:·自从JVM为Nachos5.0j提供了线程机制,上下文转换的代码就隐藏起来了。在Nachos4.0中,学生可以读分块的用来在线程之间转换的代码。但是,就像前面提到的,这会产生一个适用性的问题。·内核可以指定内核空间而不释放它们,垃圾回收装置会自动释放它们。子啊Linux中,这与把所用调用移到kfree中类似。但是,这是一种在概念上最简单的内核资源分配方式,Nachos的内核一定要直接管理进程之间物理页的分配,例如,当进程结束时必须关闭文件。1.1.2Nachos虚拟机Nachos模拟一个真实的CPU和硬件设备,包括中断和内存管理。Java中的包nachos.machine提供了这个模拟器。1)安装NachosNachos模拟器用nachos.conf文件安装在不同的工程上。它详细描述了模拟器中包含哪些硬件设备和Nachos内核如何使用硬件。工程的说明书包括适当的配置文件,如果必要的话,可以改动工程的宣传册文件需要完成这个工程。2)启动进程Nachos的启动进程类似于真实的虚拟机。nachos.machine.Machine.class的一个实例用来启动Nachos。计算机硬件(虚拟机类)首先初始化设备包括中断控制器,定时器,电梯控制器,MIPS进程,和文件系统。虚拟机类对象把控制权交给特定的自动分级AutoGrader装置,相当于从硬盘上载入启动引导程序的代码。是AutoGrader产生了Nachos内核,并开始运行系统。学生们不必关心这一步启动工作,真正有趣的部分从内核开始。Nachos的内核仅仅是nachos.machine.Kernal的一个子类。比如说,线程项目用的是nachos.threads.ThreadedKernel。3)Nachos的硬件配置Nachos虚拟机包括很多硬件设备。有一些在现代计算机中普遍存在(如:网络接口),但有些(比如说电梯控制)是Nachos特有的。Machine文件中的大多数类是硬件模拟的一部分,而在machine文件之外的类是Nachos操作系统的。4)中断管理nachos.machine.Interrupt类通过维持一个事件队列来模拟1.2jdb的使用在跟踪程序分析执行流程时仅仅使用System.out输出信息只能进行一些简单的验证,很难完成庞大工程的调试分析,而这时候jdb就显得很威武了。jdb提供了强大的调试功能,这里我只使用了一些常用命令。run--开始运行程序stopin包.类.函数名--设置在对应函数进入时触发的断点stopat包.类:行号--设置在指定文件特定行的断点print变量名或者表达式--输出变量或者经过运算的值cont--在断点处理后继续执行threads--显示正在运行的线程suspend/resumeid--挂起/恢复一个线程threadtid--切换到特定线程在我的分析过程中最复杂的就是对于多个线程同时执行时的分析,为了跟踪一个线程如何等待另一个线程的唤醒信号,不得不不断地在线程间切换,切换前又要挂起当前的线程,这时一个很复杂的过程。1.3代码分析过程1.3.1编译从README开始加入环境变量:nachos/binexportPATH=/home/minda/Desktop/课件OS-2011/nachos/bin:$PATHmakenachos运行1.3.2分析执行流程分析nachos脚本,发现脚本中有javanachos.machine.Machine找到machine.java开始从main函数分析源代码进入autoGr
本文标题:基于nachos的线程工作机制设计与实现课程设计说明书
链接地址:https://www.777doc.com/doc-5020035 .html