ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:213.29KB ,
资源ID:4990300      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4990300.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统进程调度模拟课程设计JAVA.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统进程调度模拟课程设计JAVA.docx

1、操作系统进程调度模拟课程设计JAVA计算机操作系统课程设计实验报告题目名称进程调度模拟系统院系 班级 完成时间2013.1.8指导老师 本次实验成绩组长联系电话 邮件地址 组长(姓名、学号) 主要任务需求分析,模块设计与代码编写,组织任务分配,PPT制作,实验报告审定,材料汇总等成员(姓名、学号) 主要任务代码的编写实验报告的编写、材料查找等题目进程调度:模拟FCFS和SJF进程调度过程实验介绍原理现在的处理机任务量大,多个进程会不同时先后到达,并且各个进程的工作时间也不一定相同,为了使各个进程间不发生冲突,有条不紊的先后运行,并以最短的时间占用处理机, 面对这种发展状况,有必要使用进程调度算

2、法来提高处理机的工作效率。去选择合适的一种进程调度算法达到理想的效果,可以做到信息的规范管理、科学统计和快速运作,从而减少时间上的浪费。用Java语句设计实现登陆界面,直观显示各种算法和调度结果,直观地显示运行结果,设计进程调度算法实现用不同算法(先来先服务,短作业优先,高响应比优先调度算法,时间片轮转算法)进行进程调度,算出最短周转时间,实现高效率调度算法。参考资料1 黄祥喜,计算机操作系统实验教程。广州:中山大学出版社,1994.2 汤子瀛,计算机操作系统(修订版)西安电子科技大学出版社3 Andrew S.Tanenbaum,现代操作系统,机械工业出版社。4 (美)Bruce Eckel

3、. Java编程思想. 陈昊鹏译. 北京:机械工业出版社,2007 5 王路群.Java高级程序设计.北京:中国水利水电出版社,20066 孙卫琴. 精通Struts:基于MVC的Java Web设计与开发.北京:电子工业出版社,2004.08实验环境(软件和硬件):(1)硬件要求EGA或VGA卡彩显或单显(640350以上),单机内存2M以上,硬盘40M以上。客户端计算机采用586以上机型,客户端应用程序可以稳定的运行在 Windows07 xp操作系统之上。(2)软件要求 实现前台登陆界面,需用到JAVA语句,需要安装MyEclipse软件。实验实现数据结构的定义(1)进程个数 N(2)进

4、程号 bi0 (3)提交时间 bi1(4)运行时间 bi2(5)开始时间 bi3(6)结束时间 bi4(7)周转时间 bi5(8)带权周转时间 bi6算法介绍(可以是流程图、可以是类C代码、可以是文字算法描述。) 1. FCFS算法FCFS算法是最简单的算法,每次调度是从就绪的进程队列中,选择一个最先进入该队列的进程,为之位置分配处理机,使之运行。(1)先对各进程的提交顺序进行升序排列,选择最先提交的进程开始运行。(2)对已运行结束的进程结束时间与下一个提交的进程时间比较,若大于下一个进程的提交时间,则下一个进程的开始运行时间就是上一个进程的结束时间,否则,下一个进程的开始运行时间就是自己的提

5、交时间。(3)依次向后运行。2. SJF算法SJF算法是以作业的长短来计算优先级,作业越短优先级越高。作业长短用所要求的运行时间来衡量。(1)先对各进程的提交顺序进行升序排列,选择最先提交的进程开始运行。(2)对已运行结束的进程结束时间与下一个提交的进程时间比较,若大于下一个进程的提交时间,则下一个进程的开始运行时间就是上一个进程的结束时间,再次对刚运行结束的进程的结束时间与下一个提交的进程时间进行比较; 若已运行结束的进程结束时间小于下一个提交的进程时间,则再找到刚刚运行结束的进程结束时间大于余下的的进程提交时间,在这两个进程之间对运行时间升序排列,找到运行时间最短的,开始投入运行。然后对余

6、下的进程的提交时间排序,按此操作循环进行。(3)依次向后运行。3. 时间片轮转调度算法时间片轮转法表示的是系统在给定的时间内,响应所有用户的要求。(1)将所有进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。(2)执行时间片用完时,由一个计时器发出时钟中断请求,调度程序据此信号来停止该进程的执行,并把他送往就绪队列的末尾。(3)把处理机分配给就绪队列中新的队首进程,同时也让他执行一个时间片。这样就可以保证就绪队列中的所有进程在给定的时间内,均获得一时间片的处理执行时间。4.高响应比优先调度算法该算法综合考虑到先来先服务和短作业优先算法的优缺点,改善

7、了处理机调度的性能。从而引入了优先权,优先权越高,先运行。优先权=(当前时间-提交时间)/运行时间+1当前时间是刚刚运行的进程的结束时间,提交时间是准备运行的进程的提交时间。(1)先对各进程的提交顺序进行升序排列,选择最先提交的进程开始运行。(2)对已运行结束的进程结束时间与下一个提交的进程时间比较,若大于下一个进程的提交时间,则比较剩下的进程的优先权,优先权越大则先运行。下一个进程的开始运行时间就是上一个进程的结束时间,再次对刚运行结束的进程的结束时间与下一个提交的进程时间进行比较;然后对余下的进程的提交时间排序,按此操作循环进行。 若已运行结束的进程结束时间小于下一个提交的进程时间,则找到

8、最先提交的进程投入运行, 再次比较优先权。(3)依次向后运行。5.Java运行界面的实现使用Java中GUI界面设计,实现各个按钮,文本和标签,再附上一个面板,把表格放到面板上,对于各个按钮实现监听便可对其产生作用。6.系统模块设计及调试1.开始界面任意设置进程个数 2.先来先服务算法运行结果 3.短作业优先算法运行结果4.时间片轮转调度算法运行结果5.高响应比优先调度算法运行结果本次实践计划、进度安排及完成情况实践计划1资料收集和总结2需求分析和算法设计,界面设计3编程实现及调试,小组讨论及改进4实验报告及PPT汇报进度安排12.1012.13任务分配,资料收集和汇总12.1412.18需求

9、分析,组员讨论12.1912.23算法设计,界面设计,组员讨论12.241.3编程实现及调试,组员讨论1.41.8实验报告及PPT汇报完成情况填写人完成情况 组织任务分配, 材料汇总,需求分析,模块设计与代码编写,实验报告审定,PPT制作 收集资料,需求分析,编写部分程序代码 资料查找,需求分析,实验报告编写 资料查找,实验报告整理 收集资料,需求分析,材料总结,PPT整理实验心得*:此次操作系统课程设计,作为组长,主要任务为组织任务分配,在技术方面负责需求分析,模块设计与代码编写, PPT制作,实验报告审定,材料汇总等。我们采用JAVA语言设计进程调度模拟系统,在给定题目的基础上,增加了两个

10、调度算法,在此模拟系统中实现了四种基本进程调度,并利用GUI设计的优势设计出良好的界面风格。从课题确定到正式成稿的一个月过程中,我们进行了合理的计划安排和任务分配,组员合作十分融洽,并每周进行一次集中讨论交流,最终较好地完成了预定目标。在编程实践中,我对JAVA语言有了进一步的深入,对进程调度有了更深入的认识。此次团队合作也使我更加明确集体合作的重要性,大家共同讨论,共同搜集资料,集思广益,项目才能圆满完成。相信每一位组员也都收获颇多,很感谢有这么一次机会和大家合作,这会是一次难忘的经历。*:在这次操作系统课程设计中,我的主要任务是编写部分代码。另外,我也协助编写了实验报告以及资料的收集。编写

11、代码过程中,我认真回顾了上学期操作系统的知识及JAVA和C语言的知识,并仔细编写研究了代码,进行了多次的修改。通过此次课程设计,我对四个进程调度有了更深入的理解(特别是时间片轮转算法),同时我的编程能力也得到了提高,综合运用各种编程语言的能力得到了很好的锻炼,很庆幸有这次锻炼的机会。这次小组分工干活更体现出了合作的优越性,相信对我今后的学习和工作会有很大帮助。*:此次课程设计,我参与了实验报告的编写以及资料的查找。在实验报告编写前,我需要对所描述的四个进程有充分的了解,明白他们各自的流程,以及多具有的优缺点;并明白所编写的代码的原理及具体的操作。这些要求也让我对操作系统的调度进程有了进一步的了

12、解与认识,并掌握了对于进程代码的编写与具体操作。小组成员各有分工,也让我明白了分工合作的重要性。*:在这次课程设计中,我担任了查找资料和编写实验报告的任务。在这一过程中,我更深入的了解了四个进程调度的流程、运行及优缺点,并且对进程代码的编写有了一定的了解。对于自己的一些不足,小组成员能够耐心帮助,更让我体会到合作的重要性。*:经过这次操作系统课程设计的项目,我对操作系统中学到的知识认识的更清晰,更透彻。我也明白了个人的能力有限,而集体的能力无限,我们小组共同思考,共同讨论,共同搜集资料,集思广益,项目才能完成的圆满。在此次项目中,我参与了查找资料,需求分析,整理ppt等任务。项目的完成与每一个

13、成员的付出和努力分不开关系,我很感谢这次课设项目提供给我们的机会。备注(包括源程序清单及其它说明)源程序清单package NEW2;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class OS extends JFrame implements ActionListener JButton b1, b2, b3, b4; JTable table; JTextField j2, j3; String str = JOptionPane.showInputDialog(请输入进程数:); int N

14、 = Integer.parseInt(str); String process_num = null; String arrive_time = null; String service_time = null; String start_time = null, end_time = null, total_time = null, weightotal_time = null; String a = new StringN7; String name = 进程号, 提交时间, 运行时间, 开始时间, 结束时间, 周转时间, 带权周转时间 ; double avgtotal_time, a

15、vgweightotal_time; public OS() super(进程调度算法演示系统_2012_OS课程设计); Container c = getContentPane(); GridBagLayout f = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); c.setLayout(f); table = new JTable(a, name); JScrollPane p1 = new JScrollPane(table); gbc.gridwidth = GridBagConstra

16、ints.REMAINDER; gbc.gridheight = 60; gbc.fill = GridBagConstraints.HORIZONTAL; f.setConstraints(p1, gbc); c.add(p1); JLabel label6; label6 = new JLabel(请输入 + N + 组进程号+提交时间+运行时间:); label6.setFont(new Font(楷体, Font.CENTER_BASELINE, 16); label6.setForeground(new Color(250, 0, 0); gbc.gridwidth = GridBa

17、gConstraints.REMAINDER; gbc.gridheight = 1; f.setConstraints(label6, gbc); c.add(label6); JLabel label7 = new JLabel( ); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.gridheight = 1; f.setConstraints(label7, gbc); c.add(label7); JLabel label2 = new JLabel(平均周转时间:); label2.setFont(new Font(楷体, Fo

18、nt.BOLD, 12); gbc.gridwidth = 1; gbc.gridheight = 1; f.setConstraints(label2, gbc); c.add(label2); j2 = new JTextField(10); gbc.weightx = 0.0; gbc.weighty = 0.0; gbc.gridwidth = 1; gbc.gridheight = 1; f.setConstraints(j2, gbc); j2.setText( + avgtotal_time); c.add(j2); JLabel label3 = new JLabel(平均带权

19、周转时间:); label3.setFont(new Font(楷体, Font.BOLD, 12); gbc.gridwidth = 1; gbc.gridheight = 1; f.setConstraints(label3, gbc); c.add(label3); gbc.gridheight = 1; j3 = new JTextField(1); gbc.ipadx = 1; gbc.ipady = 1; ; gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.gridheight = 1; f.setConstraints(j3,

20、gbc); j3.setText( + avgweightotal_time); c.add(j3);b1 = new JButton(先来先服务); b1.setFont(new Font(楷体, Font.BOLD, 15); gbc.gridwidth = 1; gbc.gridheight = 1; f.setConstraints(b1, gbc); c.add(b1); b2 = new JButton(短作业优先); b2.setFont(new Font(楷体, Font.BOLD, 15); gbc.gridwidth = 1; gbc.gridheight = 1; f.s

21、etConstraints(b2, gbc); c.add(b2); b3 = new JButton(时间片轮转); b3.setFont(new Font(楷体, Font.BOLD, 15); gbc.gridwidth = 1; gbc.gridheight = 1; f.setConstraints(b3, gbc); c.add(b3); b4 = new JButton(高响应比优先); b4.setFont(new Font(楷体, Font.BOLD, 15); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.gridhei

22、ght = 1; f.setConstraints(b4, gbc); c.add(b4); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); setSize(500, 580); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); for (int i = 0; i N; i+) for (int j = 0; j 3; j+) System

23、.out.println(aij); public void actionPerformed(ActionEvent e) int i, j, n, p, h;double t, s, m; double b = new doubleN7; if (e.getSource().equals(b1)/ /先来先服务 try for (i = 0; i N; i+) for (j = 0; j 3; j+) bij = Double.parseDouble(aij); for (i = 0; i N; i+) for (j = 0; j N; j+) if (bi1 = bj1) t = bi1;

24、 bi1 = bj1; bj1 = t; s = bi2; bi2 = bj2; bj2 = s; m = bi0; bi0 = bj0; bj0 = m; b03 = b01; b04 = b03 + b02; b05 = b04 - b01; b06 = b05 / b02; for (i = 1; i = bi1) bi3 = bi - 14; bi4 = bi3 + bi2; bi5 = bi4 - bi1; bi6 = bi5 / bi2; else bi3 = bi1; bi4 = bi3 + bi2; bi5 = bi4 - bi1; bi6 = bi5 / bi2; for (

25、i = 0; i N; i+) for (j = 0; j 7; j+) table.setValueAt( + bij, i, j); catch (Exception ee) ee.printStackTrace(); if (e.getSource().equals(b2)/ /短作业优先 try for (i = 0; i N; i+) for (j = 0; j 3; j+) bij = Double.parseDouble(aij); for (i = 0; i N; i+) for (j = 0; j N; j+) if (bi1 bj1) t = bi1; bi1 = bj1;

26、 bj1 = t; s = bi2; bi2 = bj2; bj2 = s; m = bi0; bi0 = bj0; bj0 = m; b03 = b01; b04 = b03 + b02; b05 = b04 - b01; b06 = b05 / b02;for (i = 1; i = bi1) for (j = i; j N; j+) if (bi - 14 bj1) h = j; for (p = i; p h; p+) for (n = i; n h; n+) if (bp2 bn2) t = bp1; bp1 = bn1; bn1 = t; s = bp2; bp2 = bn2; bn2 = s; m = bp0; bp0 = bn0; bn0 = m;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1