java作業(yè)調(diào)度_第1頁(yè)
java作業(yè)調(diào)度_第2頁(yè)
java作業(yè)調(diào)度_第3頁(yè)
java作業(yè)調(diào)度_第4頁(yè)
java作業(yè)調(diào)度_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)二、作業(yè)調(diào)度模擬程序?qū)嶒?yàn)?zāi)康?1) 加深對(duì)作業(yè)調(diào)度算法的理解;(2) 進(jìn)行程序設(shè)計(jì)的訓(xùn)練。實(shí)驗(yàn)內(nèi)容和要求用高級(jí)語言編寫一個(gè)或多個(gè)作業(yè)調(diào)度的模擬程序。 單道批處理系統(tǒng)的作業(yè)調(diào)度程序。 作業(yè)一投入運(yùn)行, 它就占有計(jì)算機(jī)的 一切資源直到作業(yè)完成為止, 因此調(diào)度作業(yè)時(shí)不必考慮它所需要的資源是否 得到滿足,它所運(yùn)行的時(shí)間等因素。作業(yè)調(diào)度算法;(1) 采用先來先服務(wù)(FCFS)調(diào)度算法,即按作業(yè)到達(dá)的先后次序 進(jìn)行調(diào)度。總是首先調(diào)度在系統(tǒng)中等待時(shí)間最長(zhǎng)的作業(yè)。(2) 短作業(yè)優(yōu)先 (SJF) 調(diào)度算法,優(yōu)先調(diào)度要求運(yùn)行時(shí)間最短的作 業(yè)。(3) 響應(yīng)比高者優(yōu)先(HRRN)調(diào)度算法,為每個(gè)作業(yè)設(shè)置一個(gè)優(yōu)先權(quán)

2、 (響應(yīng)比),調(diào)度之前先計(jì)算各作業(yè)的優(yōu)先權(quán), 優(yōu)先數(shù)高者優(yōu)先調(diào)度。 RP (響 應(yīng)比)=作業(yè)周轉(zhuǎn)時(shí)間/作業(yè)運(yùn)行時(shí)間每個(gè)作業(yè)由一個(gè)作業(yè)控制塊 JCB 表示,JCB 可以包含以下信息:作業(yè)名、提交(到達(dá))時(shí)間、所需的運(yùn)行時(shí)間、所需的資源、作業(yè)狀態(tài)、鏈指針等等作業(yè)的狀態(tài)可以是等待 W (Wait)、運(yùn)行 R (Run)和完成 F (Finish) 三種之一。每個(gè)作業(yè)的最初狀態(tài)都是等待 W。三、 實(shí)驗(yàn)方法、步驟及結(jié)果測(cè)試(1) 原理分析及流程圖A.編程工具與文件本實(shí)驗(yàn)采用 JAVA 高級(jí)語言編寫,用 eclipse 編程工具,原文件為I1I2Task.java,生成文件有 Task.class 統(tǒng)一放

3、在 Task 包(文件夾)中。B.流程圖:單道 FCFS 算法:單道 SJPF 算法與單道 HRRN 算法的流程圖與 FCFS 算法的基本一樣, 只是第二步中的調(diào)度順序的算法不同,SJPF 算法與 HRRN 算法第二步分 別為:SJPF 算法:調(diào)度執(zhí)行時(shí)間最短的作業(yè)投入作業(yè),并修改相應(yīng)的指針, 記錄開始時(shí)間、完成時(shí)間等。I3HRRN 算法:調(diào)度后備隊(duì)列中所有作業(yè)響應(yīng)比高的作業(yè)投入作業(yè), 并修改相應(yīng)指針,記錄開始時(shí)間、完成時(shí)間等 。(2)詳細(xì)程序代碼及注釋packageTask;importjava.awt.*;importjavax.swi ng.*;importjava.awt.eve nt

4、.*importjava.text.*;classJCBStringname ;II進(jìn)程名稱Stringstate=W ;II進(jìn)程狀態(tài)inten terTimes;intneedTimes;II運(yùn)行完所需要時(shí)間intcostTimes;II已經(jīng)使用時(shí)間intstartTimes;public class Taskexte ndsJAppletprivateJLabellabel_in it= new JLabel(進(jìn)程初始設(shè)置“);privateStri ngprocess_ name= 001,002,003,004,005 ;II進(jìn)程標(biāo)簽privateJTextFieldfield_ ne

5、edtime=new JTextField5;II需要時(shí)間設(shè)置框privateJTextFieldfield_e ntertime=new JTextField5;II到達(dá)時(shí)間設(shè)置框privateJLabellabel_p name= new JLabel5;II進(jìn)程名加載標(biāo)簽組JCB jcb = new JCB5;privateJButt onbutton_OK =new JButt on(確定);privateJButt onbutt on_init=new JButt on(清空);I4privateJLabellabel_zhix ing=new JLabel(正在執(zhí)行);privat

6、eJLabellabel_houbei= new JLabel(后備隊(duì)列);privateJLabelfield_txt=new JLabel30;II調(diào)度前信息顯示框privateJLabellabel_after=new JLabel(算法調(diào)度“);II調(diào)度標(biāo)簽privateJButt onfcfs = newJButt on(FCFS);I5privateprivateJButtonJButtonsjpf = new JButton(SJPF );hrrn = new JButton(HRRN );privateJLabelzhixing_txt= new JLabel4; /當(dāng)前執(zhí)行記

7、錄privateJLabelfield_after= new JLabel40; /調(diào)度后信息顯示框privateJLabellabel_name= new JLabel(進(jìn)程名 );privateJLabellabel_enter= new JLabel(到達(dá)時(shí)間 );privateJLabellabel_need= new JLabel(要求服務(wù)時(shí)間 );privateJLabellabel_start= new JLabel(開始時(shí)間 );privateJLabellabel_cost= new JLabel(已用時(shí)間 );privateJLabellabel_over= new JLa

8、bel(結(jié)束時(shí)間 );privateJLabellabel_zhou= new JLabel(周轉(zhuǎn)時(shí)間 );privateJLabellabel_dzhou= new JLabel(帶權(quán)周轉(zhuǎn)時(shí)間);privateJLabellabel_n =new JLabel( 進(jìn)程名 );privateJLabellabel_ne =new JLabel( 要求服務(wù)時(shí)間 );privateJLabellabel_e =new JLabel( 到達(dá)時(shí)間 );privateJTextFieldfoot =new JTextField();this .setBackground(Color.public voi

9、d init() JPanelpanel_top =panel_top.setLayout(/解決初始化問題newJPanel();new GridLayout(1, 3);panel_init.add( label_nefor ( int i = 0; i 5; i+) public Task() /設(shè)置該類的構(gòu)造器panel_top.add( label_init ); for ( int i = 0; i 5;i+) jcb i =new JCB();JPanel panel_init =panel_init.setLayout( panel_init.add(new JPanel();

10、new GridLayout(3, 6);label_n );for ( int i = 0; i process_name . length ; i+) /將進(jìn)程名添加到panellabel_pname i = new JLabel( process_name i, JLabel.CENTER);label_pnamei.setForeground(Color.red );panel_init.add(label_pname i);LIGHT_GRAY );/設(shè)置背景顏色); /要求服務(wù)時(shí)間I6i = newJTextField( );field_needtimepanel_init.add

11、(field_needtime i);I7for ( int i = 0; i 5;i+) i = new JTextField( ); field_entertime i);panel_before.add( button_init );button_OK .addActionListener(button_init .addActionListener(panel_1.setLayout(panel_1.add(panel_top,panel_1.add(panel_init,panel_1.add(panel_before,new BorderLayout();North );Cente

12、r );South );JPanel panel_houbeibiao =panel_houbeibiao.setLayout( panel_houbeibiao.add( panel_houbeibiao.add( panel_houbeibiao.add( panel_houbeibiao.add( panel_houbeibiao.add(for ( int j = 0; j 25; j+) field_txtj = panel_houbeibiao.add(new JPanel();new GridLayout(6, 5);new JLabel( 進(jìn)程名 );new JLabel( 到

13、達(dá)時(shí)間 );new JLabel( 要求服務(wù)時(shí)間 )new JLabel( 已用時(shí)間 ); new JLabel( 狀態(tài) );panel_init.add(label_e ); /到達(dá)時(shí)間JPanel panel_before =new JPanel();panel_before.add(button_OK );JPanel panel_1 =new JPanel();JPanel panel_button =new JPanel();panel_button.add(label_after );panel_button.add(fcfs);panel_button.add(sjpf);pan

14、el_button.add(hrrn);fcfs .addActionListener(new Fcfs();sjpf .addActionListener(new Sjf();hrrn .addActionListener(new Hrn();fcfs .setEnabled(false);sjpf .setEnabled(false);hrrn .setEnabled(false);panel_button.setLayout(field_entertimepanel_init.add(new InitJBC();new Clear();new JLabel( ); field_txt j

15、);new GridLayout(1, 4, 10, 10);I8fcfs .setToolTipText( sjpf .setToolTipText( hrrn .setToolTipText( 先來先服務(wù)算法); 段作業(yè)優(yōu)先算法); 最高響應(yīng)比算法);JPanel panel_2 =panel_2.add( label_houbeipanel_2.add(panel_houbeibiao,panel_2.add(panel_button,JPanel panel_zhixingbiao=panel_zhixingbiao.setLayout( panel_zhixingbiao.add(

16、panel_zhixingbiao.add( panel_zhixingbiao.add( panel_zhixingbiao.add( panel_zhixingbiao.add(for ( int j = 0; j 4 ; j+) zhixing_txt j =panel_zhixingbiao.add(JPanel panel_zhixing=panel_zhixing.add(, North );Center );South ); /后備表結(jié)束new JPanel();new GridLayout(2,5);new JLabel( 進(jìn)程名 );new JLabel( 到達(dá)時(shí)間 );ne

17、w JLabel( 要求服務(wù)時(shí)間 ); newJLabel( 狀態(tài) );new JLabel( 現(xiàn)在時(shí)間 );new JLabel( );zhixing_txt j);new JPanel( new GridLayout(2,1);panel_zhixing.add(panel_zhixingbiao,panel_zhixing.add( label_costJPanel panel_lz =new JPanel();panel_lz.setLayout(new GridLayout(6, 8, 4, 4)panel_lz.add(label_name); /進(jìn)程名panel_lz.add(l

18、abel_enter); /到達(dá)時(shí)間panel_lz.add(label_need); /需要時(shí)間panel_lz.add(label_start); /開始時(shí)間panel_lz.add(label_over); /完成時(shí)間panel_lz.add(label_cost); /已用時(shí)間panel_lz.add(label_zhou); /周轉(zhuǎn)時(shí)間panel_lz.add(label_dzhou); /帶權(quán)周轉(zhuǎn)時(shí)間for ( int i = 0;i 40; i+) field_afteri = newJLabel( );panel_lz.add(field_afteri);JPanel pane

19、l_3 =panel_3.add(panel_lz,new JPanel( new BorderLayout();Center );new JPanel( new BorderLayout(2,2);label_zhixing , North );Center );, South );I9panel_3.add( foot , South ); foot .setEnabled( false );foot .setDisabledTextColor(Color./*布局整體結(jié)構(gòu)*/JPanel panel11=new JPanel( new BorderLayout(2,1);/上面兩個(gè)表的布

20、局panel11.add(panel_1,North );panel11.add(panel_2,South );panel22.add(panel_zhixing,panel22.add(panel_3, South )getContentPane().setLayout(getContentPane().add(panel11,getContentPane().add(panel22,class InitJBC implements ActionListener public voidactionPerformed(ActionEvent e) try function(); catch

21、(NumberFormatException e1)JOptionPane. showMessageDialog ( null, errorfcfs,JOptionPane.ERROR_MESSAGE);.setEnabled(true );sjpf.setEnabled(true );hrrn .setEnabled(true );void function() throws NumberFormatException for ( int i = 0; i 5;i+) jcb i. name = process_name i;try jcb i. enterTimes =Integer. p

22、arseInt ( field_entertime i.getText(); jcb i. needTimes =Integer. parseInt ( field_needtime i.getText(); catch (NumberFormatException e)JPanel panel22=new JPanel(new BorderLayout(2,1);red );North );new BorderLayout(5, 5);North );South );請(qǐng)輸入正確的參數(shù)I10throw e;implements ActionListenerfor ( intfield_txti

23、.setText( );i+;field txti.setText(String.valueOf( jcbi+;field txti.setText(String.valueOf( jcbi+;field txti.setText(String.valueOf( jcbi+;field txti.setText(jcb j.state );i+;j = 0, i = 0; j 5; j+) j.j.j.enterTimes );needTimes );costTimes );publicactionPerformed(ActionEvent e)for (inti = 0;

24、i 5; i+) jcbi.costTimes=0;jcbi.enterTimes=0jcbi.needTimes=0;jcbi.startTimes=0voidfield needtimei.setText( );field_entertimei.setText( );field_txti.setText(III!for ( int i = 0; i 40; i+) field_afteri.setText(III!fcfs .setEnabled(false );sjpf .setEnabled(false );hrrn .setEnabled(false );for ( int i=0;

25、i30;i+););class ClearI11class Fcfsimplements ActionListener public void actionPerformed(ActionEvent e) try I12sjpf .setEnabled( false );hrrn .setEnabled( false );use(1);sjpf .setEnabled(true );hrrn .setEnabled(true );catch (Exception e1) e1.getMessage();class Sjfimplements ActionListener public void

26、 actionPerformed(ActionEvent e) try fcfs.setEnabled(false );hrrn.setEnabled(false );use(2);fcfs.setEnabled(true );hrrn.setEnabled(true );catch (Exception e1) e1.getMessage();class Hrn implementsActionListenerpublic void actionPerformed(ActionEvent e) try fcfs .setEnabled(false );sjpf .setEnabled(fal

27、se );use(3);fcfs .setEnabled(true );sjpf .setEnabled(true );catch (Exception e1) e1.getMessage();void use( int pram) int a = throws java.lang.InterruptedException I-13o,1,2, 3, 4;int temp, n = 5, time = 0;int visit=0,0,0,0,0;int overtime=0;intk仁0;intmi n=0;boolea n go= false ;DecimalFormat df=new De

28、cimalFormat(/FCFS/if (pram=1)for (int j=0;j5;j+)temp=1000;for (inti=0;i jcb i.enterTimes&visiti=0)k1=i;temp= jcb i.enterTimes;visitk1=1;aj=k1;/SJPF/if (pram=2)int k=0;double temp0=0;for ( int m=0;m5;m+)go= false ;for ( int i=0;i5;i+)if (visiti=0)/visit用來標(biāo)記jcb是否已經(jīng)被排序if (temp0=0)if (overtime=0)for

29、 (int b=0;bjcb b. needTimes ) k仁b;I-15if (min jcb b. enterTimes )min =jcb b.enterTimes;k1=b;a0=k1;/因?yàn)閛vertime=0所以將k1賦給a0表明第k1個(gè)作業(yè)最先運(yùn)行visitk1=1;go= true ; /go標(biāo)志用來第一個(gè)作業(yè)與其他的作業(yè)overtime=jcb k1.enterTimes+jcb k1.needTimes ; /overtime用來表示當(dāng)前系統(tǒng)已經(jīng)用了的時(shí)間break ;temp0=jcb i. needTimes ; /用needtime來比較誰優(yōu)先k=i;tempO=x

30、; k=i;temp0=0;/ run=ru n+n eed;/HRRN/if (pram=3)int k=0;double x= jcbif (temp0 x&i.jcbneedTimes ; /i.en terTimes找到時(shí)間最小的置換將作業(yè)號(hào)賦給kovertime)if (go= falseam=k;)visitk=1;if (overtimev的情況jcbk.en terTimes)/處理當(dāng)前一個(gè)作業(yè)結(jié)束時(shí),后面的作業(yè)還沒有到overtime =jcb k.en terTimesjcb k.needTimesovertime = overtime +jcb k.needTim

31、es ; /跟新overtimeI-16double temp0=0;for ( int m=0;m5;m+) go= false ;for ( int i=0;i5;i+) if (visiti=0) if (temp0=0)if (overtime=0)for ( int b=0;b jcb b. enterTimes ) min = jcb b. enterTimes ; k1=b; a0=k1;visitk1=1;go= true ;overtime= jcb k1. enterTimes +jcb k1. needTimes break ;temp0=( double )(overt

32、ime- jcb i. enterTimes )/ jcb i. needTimes +1.0; k=i;doublex=( double )(overtime- jcb i. enterTimes )/ jcb i. needTimes +1.0;if (temp0 x) temp0=x; k=i;if (go= false )am=k; visitk=1;if (temp0-1.00) /處理當(dāng)前一個(gè)作業(yè)結(jié)束時(shí),后面的作業(yè)還沒有到的情況overtime = jcb k. enterTimes+ jcb k. needTimes ;overtime = overtime + jcb k. n

33、eedTimes ;temp0=0;/ run=run+need;I17double total_zhou=0;double total_dzhou=0;for ( int j = 0, i = 0; j jcb aj.enterTimes)jcbaj.startTimes =jcb aj - 1.startTimesjcb aj-1. needTimesenterTimes );needTimes );startTimes );elsejcb aj.startTimes =jcb aj.enterTimes ;field_afteri.setText(String.valueOf ( jcb aji+;field_afteri.setText(String.valueOf ( jcb aj.startTimes +startTimes );jcb aj. needTimes ); i+;field afteri.setText(String.valueOf( jcb aj.needTimesi+;intovertime1 = jcb aj.startTimes+ jcb aj.needTimesjcb aj. enterTimestotal_zhou=total_zhou+overtime1;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論