<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    迷失北京

    BlogJava 聯(lián)系 聚合 管理
      60 Posts :: 0 Stories :: 13 Comments :: 0 Trackbacks

    具體的要求是這樣的:編寫程序完成批處理系統(tǒng)中的作業(yè)調(diào)度,要求采用響應(yīng)比高者優(yōu)先的作業(yè)調(diào)度算法。實(shí)驗(yàn)具體包括:首先確定作業(yè)控制塊的內(nèi)容,作業(yè)控制塊的組成方式;然后完成作業(yè)調(diào)度;最后編寫主函數(shù)對所作工作進(jìn)程測試。

    下面是代碼:

    JOB類:

    package com.wk.job;

    public class JOB {

    public JOB() {

    super();

    }

    // 作業(yè)名

    String name = null;

    // 作業(yè)長度,所需主存大小

    int length = 0;

    // 作業(yè)執(zhí)行所需打印機(jī)的數(shù)量

    int printer = 0;

    // 作業(yè)執(zhí)行所需磁帶機(jī)的數(shù)量

    int tape = 0;

    // 作業(yè)估計執(zhí)行時間

    float runtime = 0;

    // 作業(yè)在系統(tǒng)中的等待時間

    float waittime = 0;

    public int getLength() {

    return length;

    }

    public String getName() {

    return name;

    }

    public int getPrinter() {

    return printer;

    }

    public float getRuntime() {

    return runtime;

    }

    public int getTape() {

    return tape;

    }

    public float getWaittime() {

    return waittime;

    }

    public void setLength(int length) {

    this.length = length;

    }

    public void setName(String name) {

    this.name = name;

    }

    public void setPrinter(int printer) {

    this.printer = printer;

    }

    public void setRuntime(float runtime) {

    this.runtime = runtime;

    }

    public void setTape(int tape) {

    this.tape = tape;

    }

    public void setWaittime(float waittime) {

    this.waittime = waittime;

    }

    }

    這是Client測試類:
    package com.wk.client;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import com.wk.job.*;
    public class Client {
    // 定義裝載作業(yè)的容器
    static List<JOB> jobs = new ArrayList<JOB>();
    // 記錄響應(yīng)比
    static float xk = 0;
    // 記錄當(dāng)前的作業(yè)記錄相應(yīng)時間比
    static float k = 0;
    // 作業(yè)調(diào)度函數(shù)
    static void shedule(JOB job, long memory, int tape, int printer) {
    // 系統(tǒng)可用資源是否滿足作業(yè)需求
    if (job.getLength() <= memory && job.getTape() <= tape
    && job.getPrinter() <= printer) {
    xk = job.getWaittime() / job.getRuntime();
    // 如果這是第一個進(jìn)入容器的作業(yè)
    if (jobs.size() == 0) {
    k = xk;
    jobs.add(job);
    } else {
    if (k > xk) { // 如果這不是第一個進(jìn)入容器的作業(yè),則和第一個作業(yè)比較
    jobs.add(job);
    } else {
    k = xk;
    jobs.add(job);
    Collections.swap(jobs, 0, jobs.size()-1); // 交換兩個作業(yè)的執(zhí)行順序
    }
    }
    } else {
    System.out.println("error");
    }
    }
    public static void main(String[] args) {
    // 系統(tǒng)可容納作業(yè)的個數(shù)
    int n = 3;
    // 定義一個作業(yè)集
    // List<JOB> jobs = new ArrayList<JOB>();
    // 系統(tǒng)中磁帶機(jī)數(shù)量
    int tape = 4;
    // 系統(tǒng)打印機(jī)的數(shù)量
    int printer = 3;
    // 系統(tǒng)內(nèi)存
    long memory = 65536;
    // 定義一個作業(yè)
    JOB job = null;
    // 定義輸入流
    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
    for (int i = 0; i < n; i++) {
    try {
    //實(shí)例化一個作業(yè)
    job = new JOB();
    System.out.println("------------------");
    job.setName(bf.readLine());
    System.out.println("輸入作業(yè)名稱:" + job.getName());
    job.setLength(Integer.parseInt(bf.readLine()));
    System.out.println("輸入作業(yè)使用內(nèi)存大小:" + job.getLength());
    job.setTape(Integer.parseInt(bf.readLine()));
    System.out.println("輸入作業(yè)使用磁帶機(jī)數(shù):" + job.getTape());
    job.setPrinter(Integer.parseInt(bf.readLine()));
    System.out.println("輸入作業(yè)打印機(jī)數(shù):" + job.getPrinter());
    job.setWaittime(Integer.parseInt(bf.readLine()));
    System.out.println("輸入作業(yè)等待時間:" + job.getWaittime());
    job.setRuntime(Integer.parseInt(bf.readLine()));
    System.out.println("輸入作業(yè)估計執(zhí)行時間:" + job.getRuntime());
    // 調(diào)用函數(shù)
    Client.shedule(job, memory, tape, printer);
    } catch (IOException e) {
    System.out.println("輸入內(nèi)容不允許為空!!");
    }
    }
    System.out.println("當(dāng)前執(zhí)行的程序?yàn)?:" + jobs.get(0).getName());
    // 為第一個作業(yè)分配資源
    memory = memory - jobs.get(0).getLength();
    System.out.println("系統(tǒng)剩余內(nèi)存:" + memory);
    tape = tape - jobs.get(0).getTape();
    System.out.println("系統(tǒng)剩余磁帶機(jī):" + tape);
    printer = printer - jobs.get(0).getPrinter();
    System.out.println("系統(tǒng)剩余打印機(jī):" + printer);
    }
    }
    經(jīng)過測試上面的代碼是沒有錯誤的!!下面說一下自己在寫代碼的時候的感想:
    1.好多東西想的總是好的,但是真正的用著二十四個英文字母表達(dá)的時候是很費(fèi)力的。所以建議向我們這樣的初學(xué)者要經(jīng)常敲代碼,經(jīng)常寫東西。這樣自己才能進(jìn)步更快。
    2.向List容器插入數(shù)據(jù)時,是按順序逐步插入的。檢點(diǎn)通俗點(diǎn)說就是按插入的順序誰先插入誰占第一個位置。好像很簡單,但是在寫這個東西時,自己是不知道的。相信還有好多人也不太清楚。

     

    posted on 2010-09-22 14:23 王康 閱讀(308) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲春色在线观看| 久久亚洲国产精品一区二区| 亚洲视频精品在线观看| 鲁丝片一区二区三区免费| 亚洲日韩在线第一页| 色老头综合免费视频| 亚洲国产一成久久精品国产成人综合| 亚洲av成人中文无码专区| 日本不卡视频免费| 亚洲а∨精品天堂在线| 午夜小视频免费观看| 福利片免费一区二区三区| 国产成人精品免费视频大全五级 | 亚洲图片中文字幕| 免费A级毛片无码无遮挡内射| 亚洲av专区无码观看精品天堂| 最近2019中文字幕mv免费看| 亚洲精品美女久久7777777| 国产成人免费ā片在线观看 | 亚洲狠狠婷婷综合久久蜜芽| 色吊丝最新永久免费观看网站| 亚洲av无码av在线播放| 亚洲伊人成无码综合网| a毛片免费观看完整| 亚洲黄色一级毛片| 日本特黄特色免费大片| 国产精品免费久久| 亚洲αv久久久噜噜噜噜噜| 在线a级毛片免费视频| 色费女人18女人毛片免费视频| 亚洲人成网77777亚洲色| 中文字幕免费在线看线人| 亚洲乱亚洲乱妇无码| 精品亚洲视频在线观看| 亚洲精品在线免费观看视频| 老司机福利在线免费观看| 亚洲人成在线观看| 国产免费看插插插视频| 久久aa毛片免费播放嗯啊| 亚洲老熟女五十路老熟女bbw| 亚洲精品无码午夜福利中文字幕 |