设备的分配与回收操作系统课程设计.docx
《设备的分配与回收操作系统课程设计.docx》由会员分享,可在线阅读,更多相关《设备的分配与回收操作系统课程设计.docx(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、哈尔滨理工大学课程设计(操作系统)题目: 设备的分配与回收班级: 计算机科学与技术学院 计算机系10-8班姓名:陈俊鸣 1004010820指导教师:高雪瑶系主任: 林克正 2013年03月01日 目 录1生产者消费者问题课程设计11.1 题目分析11.2 数据结构11.3 流程图11.4 实现技术21.5 设计结论和心得22 Linux代码分析42.1 功能说明42.2 接口说明42.3 局部数据结构42.4 流程图42.5 以实例说明运行过程5第1章- 9-哈尔滨理工大学课程设计报告1设备的分配与回收课程设计1.1 题目分析在多到程序环境下,系统中的设备供所有进程共享。为防止进程对系统资源
2、的无序竞争,特规定系统设备不允许用户自行使用,必须由系统统一分配。每当进程项系统提出I/O请求时,只要是可能和安全带,设备分配程序编按照一定的策略,吧设备分配给请求用户。在有的系统中,为了确保在CPU与设备之间能进行通信,还应分配相应的控制器和通道。为了实现设备分配,必须在系统中设置相应的数据结构。1.2数据结构设计中用到了Map(映射)的数据结构,Map结构包括了key和value两部分,通过key的匹配来查询value的值,符合次涉及到的要求,解决了四张表之间的关系public static Map mapD = new HashMap(); /对应DCT表的映射,key值为设备类型pub
3、lic static Map mapS = new HashMap(); /对用SDT的映射,key值为设备类型public static Map mapCO = new HashMap(); /对应COCT的映射,key值为控制器标识符public static Map mapCH = new HashMap();/对应CHCT的映射,key值为通道标识符public static Mythread mt = new Mythread3;/允许申请3个进程,可根据需要做相应更改以上4个映射用于存放对应表的信息,设计为全局静态是为了能存储文件和添加的设备、控制器、通道信息。1.3流程图实现设计
4、中主程序和其他子模块的算法,以流程图的形式表示,需画出函数和过程的调用关系图。开始输入初始化文件地址按行读文件,读一行文件是否结束将相应信息保存到相应的Map中结束否是 文件读取Fileread(初始化)类开始将界面的信息读入并赋给字符串变量新建4张表分别将对应信息添加到4张表中将4张表分别保存到各自的映射中(Map)结束 添加设备increase类开始将界面信息读入并赋给字符串变量变量新建用户定义的进程类Mythread类分别将对应信息赋给进程类中的属性,产生新的进程将新的进程类保存到用户定义的进程类数组中并记录当前进程数目结束 申请新进程increaseP类开始遍历设备表的Map该进程申请
5、的设备是否存在进程调用sleep()方法睡眠并在jTextArea显示不存在该设备否进程调用sleep方法睡眠一个进程开始时间判断暂停标识是否为1(暂停30S)进程调用sleep方法睡眠30s是在主界面的jTextArea显示:进程阻塞调用sleep方法睡眠一个阻塞时间判断暂停标识是否为1进程调用sleep方法睡眠30s是向主界面jTextArea中显示进程开始分配的信息否进程调用sleep方法睡眠一个执行时间判断暂停标识是否为1进程调用sleep方法睡眠30s是向主界面jTextArea中显示进程释放资源信息结束否Mythread类:进程执行的方法开始定义4个全局静态类型的Map定义全局静态
6、的进程类型数组定义全局静态变量ii,signal分别记录进程个数和暂停标记是否点击按钮“初始化”调用Fileread类的构造方法并将文件信息显示是是否点击“申请新进程”否调用increaseP类中方法申请是是否点击“添加设备”否调用increase类方法添加是是否点击“开始”否通过冒泡法将进程数组中的进程按开始时间升序排好否是当进程数在2个或2个以上时 判断进程申请的设备是否为同一类同一类的进程是否阻塞决定阻塞进程的阻塞时间调用Mythread类start方法是是否否结束是否点击“暂停”重新判断选择按钮否是将暂停信号signal置1 MainF类1.4实现技术在这次编程中,选择使用的是java
7、是MyEclipse8.6拥有窗口的框架,但同时,由于java中没有指针的概念,使得SDT、DCT、COCT、CHCT之间的练习让我很头疼,所以我选择了使用映射map,映射中包含key和value,而key就好像C+中的指针的next,能将4张表练习到一起。随后,在对进程的void方法中的设计令我认识到自己对java进程知识的掌握还很匮乏,现在还不能很好的运用sleep(),wait(),yield()等方法,也不清楚其之间的区别,因此设计要求中的暂停无法很好的实现。1.5设计结论和心得这次编程,是我对设备的分配有了更进一步的了解,也是我的编译能力得到了锻炼。通过本次课程设计,加深了对所学的操
8、作系统的知识的理解,并且提高了自已的编程水平,也让自已认识到了自已编程中存在的问题,例如:没有对系统做全面分析的习惯,以致于自已的程序没有把全部可能出现的情况考虑进内,以致于对于某一些特别的值,不能给出正确的运行结果,本次课程序设计认自已体会到了全面系统的分析问题的重要性和必要性。多实践,多进行一些编程锻炼,这将成为我今后的一项课程,自己的编程水平还是太水,今后必须更加努力才行。编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第26页 共28页2 .1Linux代码分析为了进一步了解操作系统内核,学习了Linux操作系统的进程同步程序,主要程序源代码如下:package jf
9、rame;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import map.CHCTmap;import map.COCTmap;import map.DCTmap;import map.SDTmap;import table.CHCT;import table.COCT;i
10、mport table.DCT;import table.SDT;/*文件读取代码* */public class Fileread String file=f:/aa.txt; /文件的地址 String next=null;/用来存放文件每行的信息 String s=new String7;/将next值按空格分开后存到S数组中 SDTmap sm=new SDTmap(); DCTmap dm=new DCTmap(); COCTmap com=new COCTmap(); CHCTmap chm=new CHCTmap();MainF mf=new MainF();public Fil
11、eread()public Fileread(int i) throws NumberFormatException, IOExceptiontry BufferedReader input =new BufferedReader(new InputStreamReader(new FileInputStream(file);/读文件while(next=input.readLine()!=null)Mythread myt=new Mythread(); SDT sdt=new SDT(); DCT dct=new DCT(); COCT coct=new COCT(); CHCT chct
12、=new CHCT();s=next.split( );sdt.settypeS(s0);sdt.setdeS(s1);dct.set(s0, s1, s2);coct.set(s2, s3);chct.set(s3, s2);myt.set(s4, s0, s1, Double.valueOf(s5), Double.valueOf(s6);mf.mtmf.ii+=myt;sm.setmapS(s0, sdt);dm.setmapD(s0, dct);com.setmapCO(s2, coct);chm.setmapCH(s3, chct);/将读到的信息写入4张表对应的映射和进程数组中 c
13、atch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();/添加设备的代码String str1=jTextField1.getText();/获得jTextField1中的信息String str2=jTextField2.getText();String str3=jTextField3.getText();String str4=jTextField4.getText();SDT sdt=new SDT();DCT dct=new DCT();COCT coct=new COCT
14、();CHCT chct=new CHCT();sdt.settypeS(str1);sdt.setdeS(str2);dct.set(str1, str2, str3);coct.set(str3, str4);chct.set(str4, str3);MainF.mapS.put(str1, sdt);MainF.mapD.put(str1, dct);MainF.mapCO.put(str3, coct);MainF.mapCH.put(str4, chct);this.dispose();/当前的窗口关闭/申请新进程代码String str1=jTextField1.getText()
15、;String str2=jTextField2.getText();String str3=jTextField3.getText();String str4=jTextField4.getText();String str5=jTextField5.getText();double d1=Double.valueOf(str4);double d2=Double.valueOf(str5);Mythread mtt=new Mythread();mtt.set(str1, str2, str3, d1, d2);MainF.mtMainF.ii+=mtt;this.dispose();/进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设备 分配 回收 操作系统 课程设计
限制150内