nachos系统管理与调度分析课程设计说明书_第1页
nachos系统管理与调度分析课程设计说明书_第2页
nachos系统管理与调度分析课程设计说明书_第3页
nachos系统管理与调度分析课程设计说明书_第4页
nachos系统管理与调度分析课程设计说明书_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、For personal use only in study and research; not for commercial use一Forpersonaluseonlyinstudyandresearch;notfor目录一、背景知识11、 1Nachos的介绍11、2Nachos的目录结构21、3线程基石知识3二、设计要求和目的42、 1Nachos的线程管理模块42、2Nachos的线程线程调度算法分析42、3编程语言选择对比52、4开发环境配置62、5NachOS系统和交叉编译器安装62、5、1NachOS系统安装62、5、2交叉编译器环境的安装7三、设计思路和程序结构83、1线程的

2、生成和状态转换83、1、1基于五状态模型83、1、2线程创建过程83、2线程调度机制8四、关键代码分析94、1扩充线程管理94、2扩充线程调度机制104、3扩充线程调度机制改进124、3、1信号量机制124、3、2实现用户更改进程优先级13五、测试135、1测试NachOS环境和交叉编译器135、2测试创建线程145、3测试线程优先级15六、总结15背景知识1、1Nachos的介绍Nachos的全称是NotAnotherCompletelyHeuristicOperatingSystem,是一个可修改和跟踪的操作系统教学软件。它给出了一个支持多线程和虚拟存储的操作系统骨架,可让学生在较短的时间

3、内对操作系统中的基本原理和核心算法有一个全面和完整的了解。NachOS提供了可重复的调试环境和模拟操作系统及底层硬件。目的是为学习者展示真实的操作系统运行时的环境,这个简单的操作系统软件可以让学习者在较短的时间内理解并能够用自己的想法来完善它。免费的开源开发包可通过网络下载,通常包括以下几部分:1)NachOS概述2)简单可运行的操作系统代码3)模拟器一一个人电脑或工作站4)任务样本:任务说明和现代操作系统涉及的所有项,包括线程和并发,多道程序,系统调用,虚拟内存管理,文件系统管理,网络协议,远程过程调用和分布式系统。5) C+编程索引(NachOS是C+子集编程,简单易学。这个索引将对C语言

4、程序员有所帮助)Nachos操作系统本身只提供了一套框架,很多地方的实现都需要我们自己来完善,因此我们可以通过修改其源代码,来丰富和增强Nachos操作系统的功能.更可以在完善这些功能的同时,了解操作系统的内部运行机制.Nachos模拟了MIPSR2/3000的指令集、主存、中断系统、网络以及磁盘系统等操作系统所必须的硬件系统。用软件模拟硬件的可靠性比真实硬件高得多,不会因为硬件故障而导致系统出错,便于调试。虚拟机可以在运行时报告详尽的出错信息,更重要的是采用虚拟机使Nachos的移植变得非常容易,在不同机器上移植Nachos,只需对虚拟机部分作移植即可。MIPSR2/3000的指令集的优势:

5、RISC指令集,指令书目少,Nachos模拟其中的63条。编译器:GCC可直接将C/C+源程序编译成该指令集的目标代码,而不必重写编译器。Nachos是一个在宿主机上运行的进程,采用双CPU即一个宿主CPU一个虚拟机CPU不确定性是操作系统所必须具有的特征,而Nachos采用随机因子模拟真实操作系统的不确定性,使系统运行更加真实。Nachos是一个可扩展的操作系统,可发挥自己的创造性进行扩展。Nachos限制:只有一级索引结构限制了系统中最大文件的大小。Nachos可以用面向对象的思想实现,面向对象的方法能清楚的描述操作系统的各个部分的接口,但是又没有全面的运用到面向对象的性质,例如继承性、多

6、态性,这使得代码更易读和理解。Nachos分五个功能模块:机器模拟、线程管理、文件系统管理、用户程序和虚拟存储以及网络系统。由于Nachos开发没有针对windows平台的移植,Nachos需要在虚拟机上实现,所以需要首先实现创建虚拟机,创建linux虚拟机来实现nachos代码的编译运行。具有Nachos运行时更像一个进程,但是它是完全按照操作系统思想开发的操作系统内核,完整的操作系统结构。本设计有全套小脚4:包括源程序、数据库.说明书,答辩PPT等,除QQ:1415736481获取!也可代做其它题目的毕业设计用户程序线程管理网络协设文希手统虚授内存终端设备肘伸网络磁盘中断系统指令箫拜和内存

7、模损Nachos系统结构,作为一个简单的系统编程,网络协议和文件系统只需够用即可,这里主要设计线程管理和虚拟内存,在设计时虚拟内存可以暂时不要考虑。而其他的则可以由现有系统提供,为此,线程管理为主要任务。宿主机CPU和寄存器系统线程系统线程系统线程-用户程为 系统续程 系统战程用户程序-用户程.不 系统线程 用户进程虚拟机CPU和寄存器图3.4Nachos中的系统线程和用户进程1、 2 Nachos的目录结构copyright文件Nachosreadme 文件 Nachos nachos.ps 文件Nachosc+example 目录 doc 目录Nachoscode 目录Nachos的版权信

8、息的readme信息的介绍文档(Postscript 格式)有关C+吩绍和实例各个部分介绍和原有的作业要求各个部分的源代码最主要的Nachos的源代码部分MakefileMakefile.depNachos 的 Makefile 文件,Nachos需要移植到其它系统时,可以修改Makefile.dep中的HOST参数machine目录Nachos虚拟机模拟部分源代码threads目录Nachos线程管理部分源代码filesys目录Nachos文件系统管理部分源代码userprog目录Nachos用户程序部分源代码network目录Nachos网络管理部分源代码vm目录Nachos虚拟内存管理部

9、分源代码test目录一些测试用应用程序bin目录包含有用户程序目标码变换的程序1、3线程基础知识线程基本概念:是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程状态:就绪、阻塞和运行三种基本状态。线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多

10、个线程则共享数据空间每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定.线程的运行中需要使用计算机的内存资源和CPU线程的周期新建就绪运行阻塞死亡线程调度与优先级有线程进入了就绪状态,需要有线程调度程序来决定何时执行,根据优先级来调度.线程组每个线程都是一个线程组的一个成员,线程组把多个线程集成一个对象,通过线程组可以同时对其中的多个线程进行操作.在生成线程时必须将线程放在指定的线程组,也可以放在缺省的线程组中,缺省的就是生成该线程的线程所在的线程组.一旦一个线程加入了某个线程组,不能被移出这个组.进程和线程的关系在引入线程机制后,进

11、程不再是单一的动态实体,而是由两部分组成:各线程活动的环境,包括:统一的地址控件、全局变量、打开文件和计时器等。若干个线程,它们是进程中的活动部分,也是处理机的调度单位,而进程不再是处理机的最小调度单位。一个进程中的所有线程在同一地址空间中活动,共享该地址空间中的全局变量,共享打开文件和计时器等。它们总是相互协作,各自承担一个作业中的某个部分。与传统的进程相似,线程具有状态的变化。通常,这些状态是:运行、阻塞、就绪或终止。二、设计要求和目的Nachos的运宿主机通过软件模拟了各种硬件系统,包括中断系统、存储系统、磁盘文件行必须借助于、网络等。它的运行是可以跟踪的,因此,我们可以一步一步的观察操

12、作系统是如何运彳T的.对于线程的管理,主要涉及到线程的扩充、nachos线程的调度机制和线程优先级。2、1Nachos的线程管理模块Nachos平台所使用的是非抢占式调度,线程一旦占用CPU就会一直运行到结束或者被阻塞(等待I/O事件);Nachos平台中的线程数据结构定义非常简单,并无用户ID、线程ID等数据成员,也就是说,无法基于线程的ID来实现通信、同步互斥等机制。Nachos平台中并无全局性的线程管理机制,并未限制线程的数目,也无法了解有多少线程存在。通过修改Nachos系统平台的底层源代码来实现以下目标:1 .扩充线程数据结构。增加“用户ID、线程ID”两个数据成员,同时在Nacho

13、s现有的线程管理机制中增加对这两个数据成员的维护机制。2 .扩展现有的线程状态。Nachos平台中的线程状态只有“初启态”、“就绪态”、“阻塞态”、“运行态”四种情况。请增加“挂起(suspending)”这个状态,所谓“挂起”是指当前的线程映象保存在磁盘文件而不是内存中。“挂起”状态是未来实现“虚拟内存管理”的重要基础。3 .修改线程调度算法。将Nachos平台的线程管理机制调整为“抢占式”。具体可选择“时间片轮转”、“优先级调度”、“多级队列”等不同的调度算法。4 .增加全局性的线程管理机制。扩充Nachos平台的现有操作命令,例如可以增加一个名为“ThreadView”的命令,执行该命令

14、,可以在屏幕上显示目前所有存在的线程信息,包括“用户ID“、“线程ID”、“当前状态”等。5 .实现一个同步与互斥的例子。在完成以上修改后,可编写一个实例程序,来实现某个“同步-互斥”经典问题的正确解法。例如可选择“哲学家就餐”问题,实例程序会创建5个哲学家线程,这些线程拥有同样的用户ID,可以遵循“信号量”机制来正确的运行。也可以选择“生产者消费者”问题等其他经典IPC问题。2、2Nachos的线程线程调度算法分析Nachos平台所使用的是非抢占式调度,线程一旦占用CPU就会一直运行到结束或者被阻塞(等待I/O事件);Nachos平台中的线程数据结构定义非常简单,并无用户ID、线程ID等数据

15、成员,也就是说,无法基于线程的ID来实现通信、同步互斥等机制。Nachos平台中并无全局性的线程管理机制,并未限制线程的数目,也无法了解有多少线程存在。Sysdep模块实现机制分析:sysdep.ccsysdep.h屏蔽OS间的系统调用或函数调用在形式和内容上可能有的细微差别中断处理模块实现机制分析:interrupt.cc.h模拟底层中断机制一一时钟中断、磁盘中断、终端读/写中断、网络接收/发送中断时钟中断模块实现机制分析:timer.cc.h模拟时钟中断,在nachos指定线程随机切换时启动时钟中断,在每次的时钟中断处理的最后加入线程的切换终端设备模块实现机制分析:console.cc.h

16、模拟终端输入和输出,键盘的输入和显示输出,异步,当发出终端的输入输出请求后系统即返回,需要等待中断发生后才是真正完成了整个过程。磁盘设备模块实现机制分析:disk.cc.h模拟物理磁盘,nachos用宿主机种的一个文件模拟单面物理磁盘,异步工具模块:list.cc.hutility.cc.h定义链表结构及操作线程启动和调度模块:switch.sswitch.h线程定义模块:thread.cc.h线程调度算法模块:scheduler.cc.hnachos主控模块:main.ccsystem.ccsystem.hnachos系统入口,分析nachos命令行参数,根据不同的选项进行不同功能的初始化设

17、置同步磁盘:文件synchdisk.cc.h文件系统模块:filesys.cc.h模拟创建文件、删除文件、打开文件操作文件头模块:文件filehdr.cc.h打开文件结构:文件openfile.cc.h目录模块:directory.cc.hmachine.h:包含了内存的相关定义machine.cc:包含了对内存和页表的初始化translate.h:定义了页表结构translate.cc:包含了地址转换的实现以及读、写内存的操作address.cc:包含了用户程序页表的操作2、3编程语言选择对比2.Java编程的优势:1.简单,面向对象,稳定,跨平台,多线程,动态面向对象基于对象的编程更符合人

18、的思维模式,更容易编写程序3.类运行时动态加载,使得Java可以在分布式环境下动态的维护程序及类库,当类库升级时也不必重新修改、编译。缺点:程序速度较慢,不适合做实时性很强的开发C+副程的优势:1.增加了面向对象的思想,但是又兼具面向过程的方法2.兼容C缺点:指针调用完成后需要手工释放内存,容易造成内存泄露而程序崩溃2、4开发环境配置开发环境配置:标准配置计算机硬件内存1G;CPUCorei332位软件Windows7;ubuntu10.04交叉编译器GCC2.95.4运行环境配置:标准配置计算机硬件内存1G;CPUCorei332位软件Windows7;ubuntu10.04交叉编译器GCC

19、2.95.42、5NachOS系统和交叉编译器安装2、5、1NachOS系统安装ubuntu10.04gcc-vReadingspecsfrom/usr/lib/gcc-lib/i486-linux-gnu/gccversion2.95.4(Debianprerelease)1、解压NachOS-rootubuntu:-$tar-zxvfNachOS-2、运行makedependrootubuntu:/桌面/NachOS-4.1/code/build.linux#makedepend3、运行makerootubuntu:/桌面/NachOS-4.1/code/build.linux#make4

20、、运行nachosrootubuntu:/桌面/NachOS-4.1/code/build.linux#./nachostestssummary:ok:0Machinehalting!Ticks:total10,idle0,system10,user0DiskI/O:reads0,writes0ConsoleI/O:reads0,writes0Paging:faults0NetworkI/O:packetsreceived0,sent02、5、2交叉编译器环境的安装在编译前直接解压到local根目录下1、编译生成coff2noff工具:运行configre2 .运行make生成coff2nof

21、f3 .编译test目录下文件修改test/Makefile.dep中变量cpp和GCCDIR为正确的交叉编译器路径rootubuntu:/NachOS-4.1/code/test#vimMakefile.dep4 .编译test目录中的程序rootubuntu:/NachOS-4.1/code/test#makerootubuntu:/NachOS-4.1/code/test#ls*.noffadd.noffhalt.noffopen.noffshell.noffwrite.noffexec.noffmatmult.noffread.noffsort.noff5、执行NachOS格式文件ro

22、otubuntu:/NachOS-4.1/code/build.linux#./nachos-x./test/halt.nofftestssummary:ok:0Machinehalting!Ticks:total21,idle0,system10,user11DiskI/O:reads0,writes0ConsoleI/O:reads0,writes0Paging:faults0NetworkI/O:packetsreceived0,sent0三、设计思路和程序结构3、1线程的生成和状态转换3、1、1基于五状态模型本设计有全套完整白蟒料:包括源程序.数据库(说明书,答辩PPT等,麻素QQ:1

23、415736481获取!也可代做其它题目的毕业设计3、1、2线程创建过程扩充线程管理,使其最多同时存在128个线程,测试创建线程1) 在Thread类中增加静态成员变量threadNum表示当前线程的总数量2) Fork()创建一个线程时,threadNum加1,当线程总数超过128个线程时,程序终止。并打印终止信息3) 当一个线程终止时threadNum减14)当系统关闭时,所有线程都结束3、2线程调度机制当前的NachOS系统中,线程没有优先级,每次将线程放入到就绪队列时即是将线程放到队尾,因此若要改变系统调用的线程顺序则需要确定各线程的优先级。扩充线程调度机制,测试线程数为3个1)在Sc

24、heduler类中增加一个成员函数,表示线程的优先级,增加静态的优先级调度2)在Thread类中增加一个函数来对就绪队列中的线程根据优先级进行排序,将优先级最高的放到队首3)先将线程放入就绪队列,然后排序,最后从中选择下一条要执行的线程4)具有优先级的线程将不再按照顺序执行而是根据线程的优先级执行四、关键代码分析4、1扩充线程管理code/threads仆白thread.cc和thread.h是线程管理部分的文件代码修改:Thread.h定义静态成员变量threadNum表示线程数量93 1Iu1.人.日-ions94 staticintthreadNurnT?)95 -96 voidFork

25、(VoidFunctionPtrfunc,void*arg);Thread.ccJd24Sincludemachine.hn25i/duheooo,heexecuLon26 constintSTACK_FENCEPOST-Oxdedbeef;3t3 73839404142434427 intThread:】th匚eadNuiu二;Thread:Thread(charthreadName).3rO二128)Bcout*mostnumberis128nendlp)XASSRTJthreadNum=coutfrcreatethread,TthreadNuinGurrentThread);44&4“4

26、47448449450451staticvoidSimpleTnreadintwmch)Xintnux;for(num-:;Qium3;num+)cout-,*tKrtaJ-_-_MhhhrW?MloopednumcurrentThread-setPriority(kernel-currentThread-geiSelfTest()测试创建线程43464465466467468469470471472473474475476voidThread:SelfTest()S(DEBUG(dbgThread,EnteringThread::SelfTestH);kernel-currentThread

27、-Yield();SimpieThread(0);4、2扩充线程调度机制代码修改:Scheduler类中添加全局静态优先级Thread.h858c87888990public:Thread(char*debugName);ifJr/haJ.UmfThread(char*debugName,intprio);Thread();/deallocc/NOTEthreadk136priority;137138139140141142143144145146147148Thread.cc9 0 12 3 4 5 6 7 8 9 0 125 6 666666 6 667776 9 0 12 3 43 3

28、4 4 4 4 42 2 2 2 2 2 2retxirn priority;1;du 丫 T c 丁 i tO;/ void. setPriority (int prio) if(prio MAXF) priority = 7;else if (prio MINP)riThread:Thread(char*threadName /int prio) EH name = threadName; stackTop = NULL; stack = NULL;status = JUST_CREATED;3一三Priority (prio); for (int i = i interrupt-SetL

29、evel(intoffi;ASSERTthis kernel- -currentThr&ad:;DEBUG : dbgThreadj ,fYielding thread : ” name );ifnextThread = kernel scheduler :FindNextToRun();extThread- .-getPriority :scheduler - *ReadyToRun : nextThreadkernel -;-scheduier-ReadyroRun this);kernel-, scheduler-Run:nextThread, FALSE);q3;staticvoid4

30、38SimpleThread(intwhich)439440intnum;441442日for(num=0;num3;num+)443tout”*threadnwhichloopednumcurrentThread-setPriority(kernel-currentThread-get456void457Thread:SelfTest()4584594 60DEBUG:dbgThread, Entering Thread:SelfTeat473474475476477Threnew new nawThread” forked Thread iforked Threadi” forked13-

31、 Fd ( (VoidFunct icnPtr)SistipleThread ();4、3扩充线程调度机制改进4、3、1信号量机制classSemaphorepublic:voidP();核心操作:/禁止中断,并保存初始中断状态。因为开始时中断也可能处于被禁止状态,所以操作结束后要恢复到初始状态而不是使能中断。IntStatusoldLevel=interrupt-SetLevel(IntOff);/当信号量为0时,将当前进程放到等待队列里面,并设置为睡眠模式,/参数值为FALS耒示,进程没有正常结束而要被挂起。voidV();核心操作:/禁止中断IntStatusoldLevel=inter

32、rupt-SetLevel(IntOff);/如果队列不为空说明有当前进程因为要临界资源被别的进程访问而挂起,所以V操作首先应将当前进程设置为READY犬态,以继续运行并访问临界资源private:intvalue;/信号量值(=0)List *queue; 线程等待队列;信号量的私有属性有信号量的值,它是一个阀门。线程等待队列中存放所有等待该信号量的线程。信号量有两个操作:P操作和V操作,这两个操作都是原子操作。P操作1. 当value等于0时,1.1. 将当前运行线程放入线程等待队列。1.2. 当前运行线程进入睡眠状态,并切换到其它线程运行。2. 当value大于0时,value-。V操作

33、1 .如果线程等待队列中有等待该信号量的线程,取出其中一个将其设置成就绪态,准备运行。2 .value+;4、3、2实现用户更改进程优先级intSysWrite(char*buffer,intsize,OpenFileIdid);intSysRead(char*buffer,intsize,OpenFileIdid);SpaceIdSysExec(char*exec_name);intSysJoin(SpaceIdid);intSysStrncmp(char*buffer,char*str,intn)除此外添加一个处理异常的类Exception.cc相应的需要修改shell类中的代码,进行测试

34、rootubuntu:/桌面/NachOS-4.1/code/build.linux#./nachos-x./test/shell.noff五、测试5、1测试NachOS环境和交叉编译器rootubuntu:/桌面/18新/a测试创建线程/NachOS-4.1/code/build.linux#makeg+-ftemplate-depth-100-Wno-deprecated-g-Wall-I./network-I./filesys-I./userprog-I./threads-I./machine-I./lib-DFILESYS_STUB-DRDATA-DSIM_FIX-DTUT-Dx86-

35、DLINUX-DCHANGED-c./threads/thread.cc./threads/thread.cc:InmemberfunctionvoidThread:SelfTest():./threads/thread.cc:471:warning:deprecatedconversionfromstringconstanttochar*g+bitmap.odebug.olibtest.osysdep.ointerrupt.ostats.otimer.oconsole.omachine.omipssim.otranslate.onetwork.odisk.oalarm.okernel.oma

36、in.oscheduler.osynch.othread.oaddrspace.oexception.osynchconsole.odirectory.ofilehdr.ofilesys.opbitmap.oopenfile.osynchdisk.opost.oswitch.o-onachosrootubuntu:/桌面/18新/a测试创建线程/NachOS-4.1/code/build.linux#./nachostestssummary:ok:flcreate*?ireadlcreatethread2Machinehaltirvg!Ticks:total1BfidleG.system1孰u

37、serDiskI/O:reads孰writes8ConsoleI/O?reads电wn:esePaging:faulTs0WtuorkI/O:packetsreceivedet方ent6rootubuntu:/桌面/18新/a测试创建线程/NachOS-4.1/code/build.linux#./nachos-x./test/halt.nofftestssusury:createthread1createthreadZMachinehalting?Ticks:total21(idle孰systew16,user11Diskt/0;readse,writeseConsoleI/O:readse

38、,writesGPaqin|:taulrs6Setwor.I/O:packetsreceivedBr2nitO5、2测试创建线程rootubuntu:/桌面/18新/a测试创建线程/NachOS-4.1/code/build.linux#./nachos-Ktestswumary:ak:6createthreadlcreatethread?createthread3createthread4createthreadscreatethreadCcreatethread7cr-d:tlh-edd8CreHethread121createthread122createthread123createt

39、hread134createthread125Crealethreadl26crcatcthread127crMtethreadl2Hmostnumberis128Assertionfailedl:line41file.threads/threidl.ee5、3测试线程优先级rootubuntu:/NachOS-4.1/code/build.linux#./nachos-Ktestssuwary:ok:ethread9looped6tl配5thread2loopedetiMesthread2loopeditunes*-*ttiread2looped2threadeloopediBthread3

40、loopedetl=5thread3loopeditiMesthread3looped2tiesthread6looped2tiaesA*Thread1loopedeUses-thread1loopedI,thread1looped2tiaesMdehaltingTicks:Total24W,idle8.system2416,user8th5kI/O:readsg,writes6ConsoleI/O:readsefwrites6Paging:faultsBnetwork1,。:packet%reEivedB.sent8六、总结通过这次对nachos线程机制的扩充,较深入理解了操作系统的内核中对

41、线程的管理和基本调度,对线程的4种状态也有了较好的了解和运用。只是这个是线程的基于优先级的抢占式调度是静态的,动态的抢占式线程调度还没有很好的实现。本次课程设计主要围绕nachos线程模块做了分析,觉得nachos虽小但是它是一个完整的基本的操作系统,各个模块的实现虽然简单,但是它们之间相互协作能够形成一个系统,我觉得这就是操作系统的精髓,正如积小流以成江河的道理一样。真正的做一个操作系统,我认为不在于其算法有多优秀,而在于其算法有多适用,算法的适用都是因不同的环境而定的。这次课程设计,我阅读了不少的代码,从实践的角度了解了操作系统,我觉得我的收获很大。操作系统不仅仅是一门理论性很强的课程,我

42、觉得应该更看重它的实用性。有些东西本来是很通俗易理的,拿到理论的层面上,便变得很枯燥、很难懂。Nachos利用其简单易懂的设计使我们对课本上的概念有了更深刻的理解。在这次作业的过程中遇到一些困难,因为自己的电脑是64位的,而能找到的交叉编译器只有32位的,这对作业的进度造成很大的影响,因为这只能用同学的电脑做,但是尤其同学也有自己的课程设计要做,因此时间上就显得少了,最后只实现了少部分的功能。庆幸的是,Code:blocks10.05在代码阅读和调试中起到了很大的作用,因为其支持代码的编译,可以测试NachOS各部分的实现情况,虽然不能将测试结果直接输出,但是间接地给出了各部分是否能实现。这次课程设计应该很大一部分得益于此。对于操作系统的学习,对于我们而言其实是很抽象的,它不像其他课程的学习,虽然在专业学习的过程中,经常与之打交道,但是并不知道它是怎样实现进程的调度的,再有一点是我们对硬件也不是很熟悉它们的构造。尽管在学习电子技术时接触到一些,但是毕竟没有亲手动手去做

温馨提示

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

评论

0/150

提交评论