- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java作业调度
实验二、作业调度模拟程序
实验目的
加深对作业调度算法的理解;
进行程序设计的训练。
实验内容和要求
用高级语言编写一个或多个作业调度的模拟程序。
单道批处理系统的作业调度程序。作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素。
作业调度算法;
采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度。总是首先调度在系统中等待时间最长的作业。
短作业优先 (SJF) 调度算法,优先调度要求运行时间最短的作业。
响应比高者优先(HRRN)调度算法,为每个作业设置一个优先权(响应比),调度之前先计算各作业的优先权,优先数高者优先调度。RP (响应比)= 作业周转时间 / 作业运行时间
每个作业由一个作业控制块JCB表示,JCB可以包含以下信息:作业名、提交(到达)时间、所需的运行时间、所需的资源、作业状态、链指针等等
作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种之一。每个作业的最初状态都是等待W。
实验方法、步骤及结果测试
原理分析及流程图
A.编程工具与文件
本实验采用JAVA高级语言编写,用eclipse编程工具,原文件为Task.java ,生成文件有Task.class,统一放在Task包(文件夹)中。
B.流程图:
单道FCFS算法:
单道SJPF算法与单道HRRN算法的流程图与FCFS算法的基本一样,只是第二步中的调度顺序的算法不同,SJPF算法与HRRN算法第二步分别为:
SJPF算法:调度执行时间最短的作业投入作业,并修改相应的指针,记录开始时间、完成时间等。
HRRN算法:调度后备队列中所有作业响应比高的作业投入作业,并修改相应指针,记录开始时间、完成时间等。
详细程序代码及注释
package Task;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.text.*;
class JCB
{
String name;//进程名称
String state=W;//进程状态
int enterTimes ;
int needTimes;//运行完所需要时间
int costTimes;//已经使用时间
int startTimes;
}
public class Task extends JApplet
{
private JLabel label_init = new JLabel(进程初始设置);
private String[] process_name = {
001, 002, 003, 004, 005}; //进程标签
private JTextField[] field_needtime = new JTextField[5]; //需要时间设置框
private JTextField[] field_entertime = new JTextField[5];//到达时间设置框
private JLabel[] label_pname = new JLabel[5]; //进程名加载标签组
JCB[] jcb = new JCB[5];
private JButton button_OK = new JButton(确定);
private JButton button_init = new JButton(清空);
private JLabel label_zhixing=new JLabel(正在执行);
private JLabel label_houbei=new JLabel(后备队列);
private JLabel[] field_txt = new JLabel[30]; //调度前信息显示框
private JLabel label_after = new JLabel(算法调度); //调度标签
private JButton fcfs = new JButton(FCFS);
private JButton sjpf = new JButton(SJPF);
private JButton hrrn = new JButton(HRRN);
private JLabel[] zhixing_txt = new JLabel[4];//当前执行记录
private JLabel[] field_after = new JLabel[40]; /
文档评论(0)