Java语言模拟操作系统

上传人:1888****888 文档编号:39660969 上传时间:2021-11-11 格式:DOC 页数:27 大小:1.08MB
收藏 版权申诉 举报 下载
Java语言模拟操作系统_第1页
第1页 / 共27页
Java语言模拟操作系统_第2页
第2页 / 共27页
Java语言模拟操作系统_第3页
第3页 / 共27页
资源描述:

《Java语言模拟操作系统》由会员分享,可在线阅读,更多相关《Java语言模拟操作系统(27页珍藏版)》请在装配图网上搜索。

1、河北大学2010级操作系统课程设计论文装订线河北大学学年论文(课程设计)任务书(指导教师用表)学 生 姓 名指 导 教 师论文(设计)题目Java语言模拟操作系统主要研究(设计)内容使用java语言,采用多到程序设计方法基本上实现并模拟了单用户操作系统。该操作系统包括四部分内容:文件管理和用户接口;存储管理;设备管理;进程管理。研究方法根据操作系统理论课上学习的操作系统中关于文件管理、进程管理、存储管理和设备管理实现方法,实现了文件的新建,复制,剪切,粘贴,以及主存分配与回收、设备的分配与回收、进程的创建、撤销、阻塞唤醒和进程调度等基本功能主要任务及目标主要任务:实现并模拟单用户操作系统的四部

2、分内容:文件管理和用户接口;存储管理;设备管理;进程管理。目标:通过模拟操作系统原理的实现,加深对操作系统工作原理和操作系统实现方法的理解;通过模拟操作系统原理的实现练习java编程。主要参考文献1操作系统习题解答与实验指导. 王煜,张明,刘振鹏. 中国铁道出版社. 20072java核心技术3java编程思想进度安排论文(设计)各阶段名称日期布置任务2012年6月25日整体设计2012年6月25日2012年6月27日编写程序2012年6月27日2012年7月6日撰写论文2012年7月7日-2012年7月8日 指导教师签字:系主任签字:主管教学院长签字:装订线河北大学学年论文(课程设计)成绩评

3、定表学院: 数学与计算机学院 学生姓名专业 年级论文(设计)题目Java语言模拟操作系统论文(设计)内容提要此系统使用java语言,实现了单用户多进程的存储管理、设备管理、进程管理和文件管理部分。存储管理包括主存分配与回收。设备管理包括设备的分配与回收。设备分配时采用采用先来先服务策略,设备回收时唤醒等待设备的进程。进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。文件管理包括了文件的新建,复制,剪切,粘贴等主要功能。指导教师评语成绩: 指导教师(签名): 年 月 日摘要本系统根据操作系统理论课上学习的操作系统的知识,在采用混合索引文件结构、成组链接法的基础上实现单

4、用户的磁盘文件管理部分,包括:文件的逻辑结构、文件的物理结构、目录结构、磁盘分配回收等操作。同时模拟实现了操作系统的进程管理,内存管理和设备管理。本论文主要阐述四部分内容,引言部分,主要说明本次操作系统课程设计的性质、教学目的、教学任务与要求、意义以及论文的结构安排;系统分析与设计部分,主要阐述系统的主要功能模块以及每个模块计划采用的实现方法和原理;系统实现部分,主要通过流程图等工具描述主要模块的实现流程;最后一部分,结束语部分,主要书写已经实现的本系统存在的不足、改进方案和在课程设计中的实际感受。关键词:java语言 模拟操作系统 ABSTRACTThe system based on op

5、erating system course learning operating system knowledge, the hybrid indexing file structure, group link method based on single user disk file management part, including : the logical structure of the document, the physical structure of the document, the directory structure, magnetic disk allocatio

6、n recovery operation. At the same time to achieve a simulated operating system process management, memory management and equipment management. This paper on a four-part, the introductory remarks, the main operating system that the nature of the curriculum design, the purpose of teaching, teaching an

7、d mission requirements, as well as the significance of the paper structure; part of the analysis and design, mainly on core functions of the system modules Each module, as well as the realization of the plan to adopt the methods and principles; part of the system, mainly through the flow chart, and

8、other tools to describe the main module of the process to achieve; the last part of the concluding part of the writing has been the main achievement of the shortcomings of the system to improve the program and Curriculum design in the real feelings.key words: Java Language Operating system 一 引言ABSTR

9、ACT5一 引言61.1性质72.2 教学目的72.3 任务和要求72.4意义72.5 论文结构安排7二 系统分析与设计82.1系统要求82.2 实现方法和原理(文件部分)82.2.1文件的逻辑结构82.2.2文件的物理结构82.2.3目录结构92.2.4磁盘状态102.2.5用户接口10三 系统实现113.1磁盘管理113.1.1磁盘的创建113.1.2磁盘的分配123.1.3磁盘的归还133.1.4磁盘状态的显示133.2目录结构的实现143.2.1创建目录143.2.2删除空目录163.2.3删除目录163.3文件173.3.1建立文件173.3.2删除文件193.3.4复制文件203.

10、3.5移动文件213.4用户接口213.5内存管理213.5.1 内存分配213.5.2移动文件223.6进程管理233.7硬件工作的模拟253.8整体布局26四 结束语271.1性质操作系统是计算机科学与技术专业的主要专业基础课和主干课。操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。2.2 教学目的通过模拟操作系统的全部或者部分功能的实现,加深对操作系统工作原理和操作系统实现方法的理解,达到联系编程的目的,提高学生运用理论知识分析问题、解决问题的能力,为学生从事科学研究和独立负担计算机及其应用方面的工作打好扎实的基础

11、。2.3 任务和要求模拟采用多道程序设计方法的单用户操作系统,本系统要求实现并模拟单用户操作系统的四部分内容:文件管理和用户接口;存储管理;设备管理;进程管理。2.4意义通过模拟操作系统原理的实现,熟悉加强用java语言的编程能力,加深对操作系统工作原理和操作系统实现方法的理解,掌握了初步分析实际问题的能力,为其今后在相关领域开展工作打下坚实的基础。同时使学生系统科学地受到分析问题和解决问题的训练,提高运用理论知识解决实际问题的能力。2.5 论文结构安排本论文主要阐述四部分内容,引言部分,主要说明本次操作系统课程设计的性质、教学目的、教学任务与要求、意义以及论文的结构安排;系统分析与设计部分,

12、主要阐述系统的主要功能模块以及每个模块计划采用的实现方法和原理;系统实现部分,主要通过流程图等工具描述主要模块的实现流程;最后一部分,结束语部分,主要书写已经实现的本系统存在的不足、改进方案和在课程设计中的实际感受。二 系统分析与设计2.1系统要求本系统要求实现实现并模拟单用户操作系统的四部分内容:文件管理和用户接口;存储管理;设备管理;进程管理。2.2 实现方法和原理(文件部分)2.2.1文件的逻辑结构文件的逻辑结构采用流式结构,文件的内容均采用文本文件,系统中有两种文件,一种是存放任意字符的文件,一种是可执行文件,可执行文件的内容就是系统内进程的程序体。可执行文件要包括如下命令:X=?;

13、给i赋值一位数X+; i加1X-; i减1!?; 第一个?为A,B,C中某个设备,第二个?为一位数,表示使用设备的时间end; 表示文件结束2.2.2文件的物理结构文件的物理结构采用索引文件,每个文件分配一个索引块(存放索引的盘块)把分配给该文件的所有盘块号都记录在该索引块中,按照这种分派方式存储的文件就是索引文件。由于索引块就是一个存放许多盘块号的盘块,因此,为使系统能找到文件存放的地址,文件目录项记录该文件索引块的盘块号和文件长度。为一个大文件分配磁盘空间时,如果所分配除去盘块的盘块号,已经装满一索引块时,便需再为该文件分配另一个索引块,用于将以后继续分配给该文件的盘块号记录其中,以此类推

14、。同时,应为这些索引块再建立一级索引,即系统再分配一索引块,作为一级索引块的索引块,将第一块、第二块、第三块、索引块的盘块号写入此索引块中,这样便形成了二级索引的分配方式,如果文件非常大的时候,还可以用三级、四级索引分配方式。本系统实现二级索引,如图2-1所示:图2-1 文件索引分配方式2.2.3目录结构目录结构采用树形目录结构,根目录项既可以表示一个普通文件,也可以是下一级目录的目录文件的一个说明项,如此层层类推,形成一个树形层次结构,如图2-2所示:图2-2 树形目录结构uSuSbcElilanxiaabcu2uSabcHHTabcJ2Y根目录文件目录2.2.4磁盘状态磁盘使用情况用空闲块

15、成组链接法来记录:把空闲块分成若干组,把指向一组中各空闲块的指针集中在一起,每一组的第一个空闲块中登记下一组空闲块的块号和空闲块数,余下不足一组块数的空闲块的块号级快数登记在一个专用块中,这样既可方便查找,又可减少为修改指针而启动的磁盘的次数,在本系统中将第0块作为专用块,如图2-3是空闲块成组链接示意图:图2-3 空闲块成组链接示意图2.2.5用户接口用户接口提供用户命令接口,具体只实现以下命令,其余都可在操作中实现:1.退出系统指令 quit2.磁盘格式化命令:format三 系统实现3.1磁盘管理3.1.1磁盘的创建磁盘的创建主要采用的文件流的方式,采用了二位byte数组进行储存。pub

16、lic class Disk private static Disk d=new Disk();private static byte block;private static File dataFile;private Disk()public static Disk getDisk()dataFile = new File(Params.HARD_DISK_PATH);if (dataFile.exists() try init(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); el

17、se throw new IllegalAccessError(文件不村在);return d;/* * throws IOException */private static void init() throws IOExceptionblock = new byte256128;FileInputStream input = new FileInputStream(dataFile);for(int i=0;i1是否查询L单元内容,即专用块的内容把该块分配给申请者空闲块数减1其值=0否将该块内容复制到专用块是申请失败把该块分配给申请者结束图3-1 分配一个磁盘块的流程图3.1.3磁盘的归还

18、当归还一块时,只要把归还块的块号登记到专用块的当前组中且将空闲块数加1,如果当前组已经满10块,则把专用块中的内容写到归还的那块中,该归还块作为新组的第一块,如图3-2所示:图3-1-3 归还一个磁盘块的流程图开始查询L单元的空闲块数,即专用块中记录的空闲块数把专用块内容写入归还块中将归还块号填入专用块的1单元将专用块的0单元置成1结束空闲块数1) /申请索引块 int index=bs.getFreeBlock(); int position=bs.getDirEntryPosition(de, Explorer.getCDB(); de.setIndexAddress(short) ind

19、ex); de.setDirAddress(short) 0); ds.writeTODisk(de, position0, position1); for(int i=0;inum-1;i+) int blockNum=bs.getFreeBlock(); bs.addBlockToIndex(blockNum, index); byte block=Disk.getDisk().getBlock(); for(int j=0;j128;j+) blockblockNumj=bi*128+j; ds.writeTODisk(block); int blockNum=bs.getFreeBlo

20、ck(); bs.addBlockToIndex(blockNum, index); byte block=Disk.getDisk().getBlock(); for(int i=0;i(b.length)%128;i+) blockblockNumi=bi+(num-1)*128; ds.writeTODisk(block); else int blockNum=bs.getFreeBlock(); int position=bs.getDirEntryPosition(de, Explorer.getCDB(); de.setDirAddress(short) blockNum); de

21、.setIndexAddress(short) 0); ds.writeTODisk(de, position0, position1); byte block=Disk.getDisk().getBlock(); for(int i=0;ib.length;i+) blockblockNumi=bi; ds.writeTODisk(block); 3.3.4复制文件复制文件是建立在建立文件和保存文件的基础之上的基础之上的,首先,根据文件名建立文件,然后将内容写到新建立的文件里,就完成了复制文件的功能。3.3.5移动文件 文件的移动,此操作系统中设定的为剪切,粘贴操作。可以对已经建立好的文件进

22、行剪切和粘贴操作,通过此操作实现文件的移动。3.4用户接口此操作系统对用户接口方面做的不够完善,只实现了quit退出操作和format 格式化操作。Quit:退出操作系统; Format:格式化3.5 内存管理3.5.1 内存分配内存分配后,内存区颜色有改变。如图3-5-1所示。图3-5-1 内存分配后的界面显示3.5.2移动文件内存回收后颜色恢复。如图3-5-2所示。图3-5-2 内存回收后的界面显示3.6 进程管理3.6.1进程管理的要求进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。3.6.2进程控制块进程控制块内容包括进程标识符、主要寄存器内容、进程状态、

23、阻塞原因等等。本模拟系统最多容纳10个进程块。pcb区域用数组模拟。进程控制块根据内容的不同组成不同的队列,空白进程控制块链、就绪队列和阻塞队列,正在运行的进程只有一个,系统初始时只有空白进程控制块链。3.6.3进程调度采用时间片轮转调度算法,时间片为5。 进程调度函数的主要工作是:第一步,将正在运行的进程保存在该进程对应进程控制块中;第二步,从就绪队列中选择一个进程;第三步,将这个进程中进程控制块中记录的各寄存器内容恢复到CPU各个寄存器内。3.6.4进程创建进程创建creat的主要工作是:第一步,申请空白进程控制块;第二步,申请主存空间,申请成功,装入主存;第三步,初始化进程控制块;第四步

24、,将进程链入就绪队列,根据情况决定是否转向进程调度。3.6.5进程撤销进程撤销destory的主要工作是:第一步,回收进程所占内存资源;第二步,回收进程控制块;第三步,在屏幕上显示进程执行结果,进程撤销3.6.6进程阻塞进程阻塞block的主要工作是:第一步,保存运行进程的CPU现场;第二步,修改进程状态;第三步,将进程链入对应的阻塞队列,然后转向进程调度。3.6.7进程的唤醒进程唤醒的主要工作是第一步,将进程由阻塞队列中摘下;第二步,修改进程状态为就绪;第三步,链入就绪队列,根据情况决定是否转向进程调度。3.7 硬件工作的模拟硬件工作的模拟包括中央处理器的模拟、主要寄存器的模拟、中断的模拟和

25、时钟的模拟四方面。中央处理器的模拟。用函数CPU( )(该函数不能有参数)模拟中央处理器。该函数主要负责解释“可执行文件”中的命令。如:给x赋值x=?;x自加x+;x自减x-;申请设备和时间!?;程序结束end;CPU只能解释指令寄存器IR中的指令。一个进程的运行时要根据进程执行的位置,将对应的指令存放到指令寄存器中。主要寄存器的模拟用全局变量模拟重要寄存器,如cpu重要寄存器,程序状态寄存器PSW、指令寄存器IR,程序计数器PC,数据缓冲寄存器DR等。中断的模拟。中断的发现应该是硬件的工作,这里在函数CPU中加检测PSW的方式来模拟。在CPU()函数中,每执行一条指令之前,先检查PSW,判断

26、有无中断,若有进行中断处理,然后再运行解释指令。CPU函数应该不断循环执行的。模拟中断的种类有如下几种:程序结束、时间片到、I/O中断。程序结束(执行指令end形成的中断,软中断):将结果写入文件out,其中包括文件路径名和x的值,调用进程撤销原语撤销进程,然后进行进程调度;I/O中断(设备完成输入输出):将输入输出完成的进程唤醒,将等待该设备的一个进程同时唤醒。时钟中断:进程时间片用完,转为就绪,重新进程调度。时钟的模拟。系统中的绝对时钟和相对时钟用全局变量模拟。系统时钟用来记录开机以后的时间。 这里的系统时钟并不是计算机的真正的时钟,这里所说的时间只是一个单位,例如使用vb中的时钟控件实现

27、,每触发一次timer事件,绝对时钟增1,表示增加一个时间单位,绝对时钟减1。 模拟系统的相对时钟3.8 整体布局此模拟操作系统的整体布局模仿了win7的布局。文件的管理可以进入桌面的“计算机”进行操作实现;而磁盘管理,内存管理,命令接口和显示外部系统时间,关闭系统操作在左下角的“开始”菜单实现。四 结束语此系统我主要模拟的是文件部分。通过编写此系统,采用了java语言。但是,在实现此系统中,一方面因为我对java这门语言掌握的不是很熟练,另外一方面,对操作系统理解的不够深入以至于部分功能没有实现 。 经过了两周的编程,使得我对java编程和操作系统的知识有了更深一步了理解。熟练了java的各个组件和操作系统内部的工作原理。同时,在编写过程中遇到解决的种种困难也让我学会了自己解决困难的方法。 小组成员:张恒茂,杨铭芳27

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!