操作系统课程设计报告21382

上传人:xmg****18 文档编号:145918392 上传时间:2020-09-24 格式:DOC 页数:44 大小:4.77MB
返回 下载 相关 举报
操作系统课程设计报告21382_第1页
第1页 / 共44页
操作系统课程设计报告21382_第2页
第2页 / 共44页
操作系统课程设计报告21382_第3页
第3页 / 共44页
操作系统课程设计报告21382_第4页
第4页 / 共44页
操作系统课程设计报告21382_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《操作系统课程设计报告21382》由会员分享,可在线阅读,更多相关《操作系统课程设计报告21382(44页珍藏版)》请在金锄头文库上搜索。

1、华 南 农 业 大 学 数 学 与 信 息(软 件) 学 院操作系统分析与设计实习成绩单开设时间:2015学年第一学期小组成员、组分工、工作量比例、各成员个人成绩学号8林督翔分工需求分析文档、设计报告、UML图设计、代码整合工作量比例23成绩学号0卢洪俊分工文件管理模块代码编写工作量比例17成绩学号9林明健分工UML图设计,存管理模块代码编写工作量比例17成绩学号7郭紫航分工界面设计与协助代码整合工作量比例17成绩学号9翟志伟分工进程管理模块代码编写工作量比例13成绩学号1周灼彬分工设备管理模块代码编写工作量比例13成绩实 验 题 目 模拟操作系统自 我 评 价林督翔:我是整个项目的组长。在这

2、次完成项目的过程中,我学会了很多东西。既有技术方面的提高,也有对人员管理方面的感悟。技术方面:在项目的初期规划里面,我需要对整个项目的目的和最终的成果有了解,对项目的架构、层次有了解,甚至要写需求分析和概要设计。我根据老师给的实习指导撰写了需求分析,然后再根据需求分析撰写了项目流程图,然后再和另一位成员林明健共同完成了UML类图的设计。然后再根据UML类图将整个项目分成了5个模块,然后由成员各选一个模块,然后等各个成员的代码完成后,作为组长的我再一起整合各个模块代码,排除bug,完成预期目标。这个过程,让我对软件工程的设计有了更加深入的了解。人员管理方面:在项目完成的过程中,对于作为组长的我来

3、说,人员的工作安排和进度督促都是一个较为严峻的要求。各个成员的水平不同,虽然划分了5个模块,各个模块的难易程度不同,但是最简单的模块对于最弱的成员来说,都是一个挑战。这个时候就考验成员自己的努力和团队合作。作为组长的我,需要时刻地督促成员完成代码的进度,还要和成员讨论解决的方案,甚至是替成员完成他工作的一部分,以避免进度的拖延。在不断地磨合中,成员才能学到东西,才能如期地将任务完成。在完成又一次课程设计,让我知道了如何做才能使整个团队走向正规,才能高效地完成既定任务。团队里面的人能力不同,有所高低,就要按照他们的能力给予他们相应的任务,避免他们无所事事。林明健:写代码之前组长先是让我根据需求分

4、析作整个项目的类图,由于要先理解整个模拟系统的过程,所以花了好几天的时间才弄清楚各个类之间的关系,例如随机进程和手动创建的进程,还有文件管理与存分配之间的关系。之后写代码我负责的是存管理模块,首要解决的就是存分配与回收合并两个算法了,存分配我综合了整个模拟系统决定使用最快适配法,毕竟模拟进程没有实际那么多,这样能提高效率;而存回收与合并方面,由于我是使用双链表的方法模拟存,并且回收与合并同时进行,所以回收的操作很简单,主要是合并碎片,需要考虑几种情况:插在表头,判断能否与第二块合并;插在表中,分别判断能否与前一块或后一块,或者前中后三块都合并;插在最后,判断能否与前一块合并。整个过程下来,最深

5、刻的体会就是遇到复杂的东西要理解时,一定要保持住耐心与专注,从表层开始,一步步的深入理解,然后在写代码时要细心,不然会产生很多没必要的错误。郭紫航:这次操作系统我负责的工作实际上是整个程序界面的制作以及协助整合代码,包括启动画面、整个界面所有可见组件的制作与美化,还有接收其他组员的信号从而给各个组件添加监听器。整个制作过程遇到过一些难题,比如说:JWindow如何使用、界面布局方式、如何与其他组员的代码衔接通过上网以及了解其他组员的代码,我了解到了更多的java和操作系统的运作知识。在功能方面,我觉得作为模拟操作系统,做出来的界面应该具有的功能都已经具备了,而且界面之间衔接还挺自然的,而且最值

6、得提到的就是显示存占用的环形图,用环状的方式表现四条“存”占用的情况,这样既能直观看出进程分配,又能看出。在美化方面,因为这是一个模拟操作系统,属于欣赏类的程序作品,所以我选择了巧克力风格,从启动画面到各个界面都是以巧克力色为主。给用户一个欣赏的空间。总的来说这次实验我的部分功能和美化还是挺不错的,整个过程使我能够了解到整个操作系统的具体运作,获益良多。翟志伟:在组长的帮助和指导下,最终还是完成了自己负责的那部分;因为很久没去敲java代码了,刚写代码时有点生疏。进程管理这块还是挺不好弄的,需要调用很多其他模块的函数,只是有点麻烦而已,不过还是很容易实现的,用队列就能把大部分工作完成了;而且组

7、长分工分的很好,MUL图很早就搞定了,并在git上制作的总的项目,我们只需要从那里git下来,完成自己那部分就可以了;合作真的很重要,每次做课程设计都有这样的体会,比如说这次的工作,就需要经常和其他模块的人商量,因为我要用到他们的东西,还有他们也需要用到我的东西,所以我们就需要经常讨论讨论,商量着怎样完成好这个项目。还有让我意识到,有空要多敲敲代码,不然真的会忘记java代码该怎么写了。最后感组长还有各个组员的帮助,才让我顺利完成了我这部分的工作,特别是组长。你指导和帮助!周灼彬:在这次分工中,我负责的是设备管理,主要的工作是分配和回收设备。先存储设备名和设备的数目,建立一个设备表和设备分配表

8、来分配设备,建立一个队列来保存正在使用的设备和等待的设备,设备使用完之后要回收,通过设备名来返回未使用的设备。这部分的难点就是解决死锁问题,我自己尝试了几次都没办法很好的解决,经过和组长讨论和组员的帮助,最终完成了这容。我也查了许多的资料,学习了不同的方法。通过这次课程设计,我对操作系统的认识和了解更加深入了。加深对操作系统工作原理和操作系统实现方法的理解;同时这次在做操作系统模拟的过程中,也大大提升了我的编程能力。要有个人的独立思考,不要依赖组长,团队合作也是十分重要的环节,组员的明确分工,组长合理的安排,团队的相互合作。之前接触JAVA语言不多,系统实现过程中遇到很多困难,经过自学和与其他

9、人的讨论,掌握了一些JAVA的使用方法和技巧,问题一个个得以解决。卢洪俊:在整个的操作系统的设计中,我负责的是文件管理部分。文件管理这部分算是工作量比较大,而且其难度在于如何设计出一种较为合理的数据结构来表现文件的结构树形结构。于是模仿树形的数据结构来记录所有文件,首先创建Disk类,里面包含文件分配表和子目录Folder,在每个子目录Folder中又设置MyFile的链表,保存目录下的所有文件和目录。然而随着不断的设计深入,发现当在Disk的第一个目录下创建一个txt文件并没有在树形结构上定义,后来采取了一种折中的办法:若在根目录链表中创建txt文件,可看作是在根目录链表中先创建一个根目录,

10、添加到ArrayList中,但是大小设置为0,然后在该根目录下的ArrayList中添加 一个文件类型的MyFile,大小才设置为1(表示占用磁盘块数为1)。这样的话,每次遍历某个文件的时候都要先找到根目录的链表,然后必须判断每个链表元素中的size属性是否为0,0则是表示是文件;而1才是表示目录。然后其次难度就在于与界面的交互问题了,无论是做本次的课程实验还是做网页,前后台交互都是麻烦事,当然本次实验相对较简单,可以不需要用到框架来搭建。但是以小见大,才能把问题理解得透彻。做每个项目,前期的规划越是合理,有条理,后期的整合、修改的话才越简便,才不致于到牵一发而动全身的境地了。本人java的基

11、础比较差,通过这次的实验设计,能够不断地跟组员交流和合作,共同进步,遇到困难时上网需求大神解决的方法,也学到了挺多的。有些东西到了真正做的时候才知道它在细节上的难度有多大,就是把计划付之于行动的时候。这次课程使我设计获益匪浅。教 师 评 语评价指标:l 题目容和要求完成情况 优 良 中 差 l 对算法原理的理解程度 优 良 中 差 l 程序设计水平 优 良 中 差 l 程序运行效果及正确性 优 良 中 差 l 课程设计报告结构清晰 优 良 中 差 l 报告中总结和分析详尽 优 良 中 差 教师签名一、 需求分析1、 课程目的通过模拟操作系统的实现, 加深对操作系统工作原理理解, 进一步了解操作

12、系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。2、 编程语言与编程工具使用Java与NetBeans完成3、 设计容模拟一个采用多道程序设计方法的单用户操作系统, 该操作系统包括进程管理、 存储管理、设备管理、文件管理和用户接口四部分。二、 概要设计1、 模块划分:(1)、文件管理模块(2)、进程管理模块(3)、设备管理模块(4)、存管理模块(5)、界面管理模块2、 程序流程图:3、 程序UML类图:4、 项目目录:其中:DeviceManager包:设备管理模块代码文件; FileManager包:文件管理模块代码文件;MemoryManager包:存管理模块代码文件;

13、ProcessManager包:进程管理模块代码文件; UI包:界面管理模块代码文件; Osim包:程序主入口 ;Photo包:项目资源文件 Util包:工具类三、 详细设计存管理:(林明键)这个模块中我分成三个类:1用两个静态链表模拟进程在存中的占用情况,分别为ProcessList(进程表)和emptyList(空闲表);还提供计算存剩余空间的函数:public class MemList public static ArrayList processList;public static ArrayList emptyList;public static int sumOfEmptySiz

14、e() int sum = 0; for (int i = 0; i MemList.processList.size(); i+) sum += MemList.processList.get(i).getSize(); return 512 - sum; 2.每个存块则包含id和size两个属性,表示存地址和大小:public class MemBlock private int id; private int size; public MemBlock(int id, int size) this.id = id; this.size = size; id,size的setter和getter;3. 所以在存管理的类,就只需要提供有关存分配和回收的方法了:public class MemoryManager public MemoryManager() initList(); /* * 获取存占用百分比 * * return */ public static double getPe

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号