操作系統(tǒng)課程設(shè)計(jì)——Spooling假脫機(jī)輸入輸出模擬——附源程序_第1頁
操作系統(tǒng)課程設(shè)計(jì)——Spooling假脫機(jī)輸入輸出模擬——附源程序_第2頁
操作系統(tǒng)課程設(shè)計(jì)——Spooling假脫機(jī)輸入輸出模擬——附源程序_第3頁
操作系統(tǒng)課程設(shè)計(jì)——Spooling假脫機(jī)輸入輸出模擬——附源程序_第4頁
操作系統(tǒng)課程設(shè)計(jì)——Spooling假脫機(jī)輸入輸出模擬——附源程序_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精品一、需求分析設(shè)計(jì)一個(gè) SP00LING 輸出進(jìn)程和兩個(gè)請(qǐng)求輸出的用戶進(jìn)程,以及一個(gè)SP00LING 輸出服務(wù)程序。 當(dāng)請(qǐng)求輸出的用戶進(jìn)程希望輸出一系列信息時(shí), 調(diào)用輸出服務(wù)程序, 由輸出服務(wù)程序?qū)⒃撔畔⑺腿胼敵鼍?待遇到一個(gè)輸出結(jié)束標(biāo)志時(shí),表示進(jìn)程該次的輸出文件輸出結(jié)束。之后,申請(qǐng)一個(gè)輸出請(qǐng)求塊(用來記錄請(qǐng)求輸出的用戶進(jìn)程的名字、信息在輸出井中的位置、要輸出信息的長度等),等待 SP00LING 進(jìn)程進(jìn)行輸出。 SP00LING 輸出進(jìn)程工作時(shí),根據(jù)請(qǐng)求塊記錄的各進(jìn)程要輸出的信息,把信息輸出到文本框里。進(jìn)程調(diào)度采用隨機(jī)算法, 這與進(jìn)程輸出信息的隨機(jī)性相一致。 兩個(gè)請(qǐng)求輸出的用戶進(jìn)程的調(diào)度

2、概率各為 45 , SP00LING 輸出進(jìn)程為 10 ,這由隨機(jī)數(shù)發(fā)生器產(chǎn)生的隨機(jī)數(shù)來模擬決定。編碼實(shí)現(xiàn)的平臺(tái)環(huán)境是JCreator4.50 Pro ,實(shí)現(xiàn)語言是 Java 。為每個(gè)進(jìn)程建立一個(gè)pcb ,記錄進(jìn)程信息,進(jìn)程有5 種狀態(tài):0 為可執(zhí)行態(tài);1 為等待狀態(tài)1,表示輸出井滿,請(qǐng)求輸出的用戶進(jìn)程等待;2 為等待狀態(tài)2 ,表示請(qǐng)求輸出井空,SP00LING輸出進(jìn)程等待;3 為等待狀態(tài)3,表示請(qǐng)求輸出井滿,請(qǐng)求輸出的用戶進(jìn)程等待;4 為結(jié)束態(tài),進(jìn)程執(zhí)行完成。- 可編輯 -二、整體功能及設(shè)計(jì)1 、數(shù)據(jù)結(jié)構(gòu):2 )進(jìn)程控制塊PCBclass Pcb int id;進(jìn)程標(biāo)識(shí)數(shù)intstatus;

3、進(jìn)程狀態(tài)intcount;要輸出的文件數(shù)int x;進(jìn)程輸出時(shí)的臨時(shí)變量3 )請(qǐng)求輸出塊Reqblockclass Reqblock int repname;請(qǐng)求進(jìn)程名int length; 本次輸出信息長度int addr;信息在輸出井的首地址4 )輸出井 BUFFERint buffer3100buffer1100 為用戶進(jìn)程1 的輸出井, buffer2100 為用戶進(jìn)程2 的輸出井4)其他主要的控制變量和指針int c13;c11 為 輸 出 井 buffer1 的 空 間 ,c12 為 輸 出 井buffer2 的空間int c232;c210 、 c220 為輸出井 bufferi

4、 第一個(gè)空閑指針c211 、 c221為輸出井bufferi 第一個(gè)滿指針int c3;reqblock 的剩余個(gè)數(shù)int pt1;要輸出的第一個(gè)reqblock 指針int pt2;第一個(gè)空閑reqblock指針2 、主要類及其函數(shù)1 )主類publicclass Spoolingpublic Spooling() :構(gòu)造函數(shù),生成界面,為按鈕添加事件監(jiān)聽器public void actionPerformed(ActionEvent e) : 單擊事件響應(yīng)函數(shù)public void begin(): 點(diǎn)擊 "重置 "按鈕時(shí),重新初始化界面public void run(

5、) : 點(diǎn)擊運(yùn)行時(shí),轉(zhuǎn)入調(diào)度函數(shù)public static void main(String args) : 生成 Spooling 類的對(duì)象2 )調(diào)度實(shí)施類class Managepublic Manage(Spooling spooling1) :構(gòu)造函數(shù),對(duì)進(jìn)程的數(shù)據(jù)初始化public void run() : SP00LING 輸出模擬系統(tǒng)主控函數(shù),用隨機(jī)數(shù)來決定調(diào)度的進(jìn)程,使得兩個(gè)請(qǐng)求輸出的用戶進(jìn)程的調(diào)度概率各為 45 ,SP00LING 輸出進(jìn)程為 10 。public int user(int name,int out,JT extArea textarea,JTextField

6、field) : SP00LING 輸出服務(wù)程序,當(dāng)請(qǐng)求輸出的用戶進(jìn)程希望輸出一系列信息時(shí),通過傳參調(diào)用輸出服務(wù)程序,由輸出服務(wù)程序?qū)⒃撔畔⑺腿胼敵鼍?。public void spooling1() :SPOOLING 輸出進(jìn)程,根據(jù)請(qǐng)求塊記錄的各進(jìn)程要輸出的信息,把信息輸出到文本框里。精品3、流程圖(1) SPOOLING輸出模擬系統(tǒng)主控流程圖如圖1所示圖 1 SP00LING 輸出模擬系統(tǒng)主控流程圖(2) SPOOLING輸出服務(wù)程序流程圖如圖2所示。-可編輯-精品-可編輯-(3) SPOOLING輸出進(jìn)程流程圖如圖3所示圖3 SPOOLING輸出進(jìn)程流程圖精品三、編程實(shí)現(xiàn)import j

7、ava.awt.*;import javax.swing.*;import java.awt.event.*;import java.lang.Math;import java.util.Random;/* 1 )主類 public class Spoolingpublic Spooling() :構(gòu)造函數(shù),生成界面,為按鈕添加事件監(jiān)聽器public void actionPerformed(ActionEvent e) : 單擊事件響應(yīng)函數(shù)public void begin(): 點(diǎn)擊 "重置 "按鈕時(shí),重新初始化界面public void run() : 點(diǎn)擊運(yùn)行時(shí),轉(zhuǎn)

8、入調(diào)度函數(shù)public static void main(String args) : 生成 Spooling 類的對(duì)象*/public class Spooling extends JFrame implementsActionListener,RunnableJPanel panel1,panel2,panel3;JTextField field1,field2;JScrollPane p1,p2,p3,p4;JTextArea textarea1,textarea2,textarea3,textarea4;JButton button1,button2,button3;Manage sp

9、oo;public Spooling()/ 界面構(gòu)造函數(shù)spoo=new Manage(this);Container c=this.getContentPane();c.setLayout(new BorderLayout();field1=new JTextField(3);/ 設(shè)置 panel1field2=new JTextField(3);button1=new JButton("運(yùn)行");button2=new JButton("關(guān)閉");button3=new JButton("重置");button1.addActio

10、nListener(this);button2.addActionListener(this);button3.addActionListener(this);panel1=new JPanel();panel1.setLayout(new FlowLayout();panel1.add(new JLabel(" 用 戶 進(jìn) 程 1 文 件數(shù) :",SwingConstants.RIGHT);panel1.add(field1);文件panel1.add(new JLabel(" 用 戶 進(jìn) 程 2數(shù) :",SwingConstants.RIGHT);p

11、anel1.add(field2);panel1.add(button1);panel1.add(button3);panel1.add(button2);/ 設(shè)置 panel1 完畢textarea1=new JT extArea(80,100);/ 設(shè)置 panel2textarea2=new JT extArea(112,400);textarea3=new JT extArea(112,400);textarea1.append(" 用戶進(jìn)程1 的輸出n");textarea2.append(" 用戶進(jìn)程2 的輸出n");textarea3.ap

12、pend("Spooling 的調(diào)度 n");p1=new JScrollPane(textarea3);p2=new JScrollPane(textarea1);p3=new JScrollPane(textarea2);panel2=new JPanel();panel2.setLayout(new GridLayout(1,3);panel2.add(p1);panel2.add(p2);panel2.add(p3);/ 設(shè)置 panel2 完畢/ 設(shè)置 panel3textarea4=new JT extArea(10,150);textarea4.append(

13、" 主程序調(diào)度過程n");p4=new JScrollPane(textarea4);panel3=new JPanel();panel3.setLayout(new GridLayout(1,1);panel3.add(p4);/ 設(shè)置 panel3完畢- 可編輯 -窗口完畢public void actionPerformed(ActionEvent e)if(e.getSource()=button1)/ 點(diǎn)擊運(yùn)行按鈕, run ()/ 設(shè)置窗口c.add(panel1,BorderLayout.NORTH);c.add(panel2,BorderLayout.CEN

14、TER);c.add(panel3,BorderLayout.SOUTH);this.setSize(1200,600);this.setLocation(100, 100);this.setTitle("Spooling");this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); / 設(shè) 置run();if(e.getSource()=button2)/ 點(diǎn)擊重置按鈕, begin ()System.exit(0);if(e.getSource()=button3)/ 點(diǎn)擊推出按

15、鈕,退出begin();public void begin()field1.setText("");/ 點(diǎn)擊重置,重新初始化界面field2.setText("");textarea1.setText(" 用戶進(jìn)程n");textarea2.setText(" 用戶進(jìn)程n");n");textarea3.setText("Spoolingtextarea4.setText(" 主程序調(diào)度過程n");public void run()/ 點(diǎn)擊運(yùn)行時(shí),轉(zhuǎn)入調(diào)度函數(shù)spoo.sta

16、rt();public static void main(String args)Spooling spooling=new Spooling();/*2 )調(diào)度實(shí)施類class Managepublic Manage(Spooling spooling1) :構(gòu)造函數(shù),對(duì)進(jìn)程的數(shù)據(jù)初始化public void run() : SP00LING 輸出模擬系統(tǒng)主控函數(shù),用隨機(jī)數(shù)來決定調(diào)度的進(jìn)程,使得兩個(gè)請(qǐng)求輸出的用戶進(jìn)程的調(diào)度概率各為 45 ,SP00LING 輸出進(jìn)程為 10 。public int user(int name,int out,JTextArea textarea,JTextF

17、ieldfield) : SP00LING 輸出服務(wù)程序,當(dāng)請(qǐng)求輸出的用戶進(jìn)程希望輸出一系列信息時(shí),通過傳參調(diào)用輸出服務(wù)程序,由輸出服務(wù)程序?qū)⒃撔畔⑺腿胼敵鼍?。public void spooling1() :SPOOLING 輸出進(jìn)程,根據(jù)請(qǐng)求塊記錄的各進(jìn)程要輸出的信息,把信息輸出到文本框里。 */class Manage extends ThreadPcb pcb;Reqblock reqblock;int buffer;int c1;/ 可使用的輸出井buffer 空間int c2;/ 輸出井 buffer 空閑和滿指針int c3;/reqblock的剩余個(gè)數(shù)int pt1; / 要輸

18、出的第一個(gè)reqblock 指針int pt2; / 第一個(gè)空閑 reqblock 指針double random;/ 用于調(diào)度三個(gè)進(jìn)程的控制隨機(jī)數(shù)int out1;/用戶進(jìn)程1已生成的文件數(shù)int out2;/用戶進(jìn)程2已生成的文件數(shù)int out_1;/用戶進(jìn)程1已輸出的文件數(shù)int out_2;/用戶進(jìn)程2已輸出的文件數(shù)int x;隨機(jī)生成的數(shù)據(jù)09int i;/ 臨時(shí)控制變量Random x1;輔助生成隨機(jī)數(shù)據(jù)x: 09Spooling spooling;public Manage(Spooling spooling1) / 對(duì)各進(jìn)程的數(shù)據(jù)初始化out1=0;out2=0;out_1=

19、0;out_2=0;pcb = new Pcb4;reqblock = new Reqblock10;buffer = new int3100;c1=new int3;c11=100;c12=100;c2=new int32;c210=0;c220=0;c3=10;pt1=0;pt2=0;x1=new Random();for(i=0;i<4;i+)pcbi=new Pcb();for(i=0;i<10;i+)reqblocki=new Reqblock();for(i=1;i<=3;i+)pcbi.status=0;spooling=spooling1;public voi

20、d run()do/while 循環(huán)random=Math.random();程調(diào)度,令用戶進(jìn)程概率為 45% , Spooling/ 對(duì)各進(jìn)程的數(shù)據(jù)初始化完畢/ 進(jìn)程調(diào)度/ 產(chǎn)生一個(gè)隨機(jī)數(shù),控制進(jìn)進(jìn)程為 10%if(random<=0.45&&pcb1.status=0)/ 調(diào)度用戶進(jìn)程1spooling.textarea4.append(" 調(diào)度用戶進(jìn)程1n");try sleep(1000); catch (InterruptedException e) e.printStackTrace();out1=user(1,out1,spooling.

21、textarea1,spooling.field1);else/if(random>0.45&&random<=0.9&&pcb2.status=0)調(diào)度用戶進(jìn)程2spooling.textarea4.append(" 調(diào)度用戶進(jìn)程2n");try sleep(1000); catch (InterruptedException e) e.printStackTrace();out2=user(2,out2,spooling.textarea2,spooling.field2);else if(random>=0.9&

22、;&random<1&&pcb3.status=0)/ 調(diào)度 spooling 進(jìn)程spooling.textarea4.append(" 調(diào)度 Spooling 進(jìn)程 n");try sleep(1000); catch (InterruptedException e) e.printStackTrace();spooling1();while(pcb1.status!=4|pcb2.status!=4|pcb3.status!=4);/ while 結(jié)束spooling.textarea4.append(" 程序運(yùn)行完畢n&quo

23、t;); / 進(jìn)程調(diào)度結(jié)束public int user(int name,int out,JTextArea textarea,JTextField field)/ 用戶進(jìn)程pcbname.id =name;pcbname.count = Integer.parseInt(field.getText();while(out!=pcbname.count)/ 判斷進(jìn)程所要輸出的文件是否輸出完畢的 while 循環(huán)c2name1=c2name0;do/ 判斷進(jìn)程的一個(gè)文件是否輸出完畢的 while 循環(huán)x=x1.nextInt(9);/x為每次隨機(jī)生成的數(shù)據(jù)09,送入pcb.xpcbname.x

24、 =x;if(c1name=0)/ 若輸出井 buffer 滿, 變?yōu)榈却隣顟B(tài)1 ,轉(zhuǎn)調(diào)度程序pcbname.status=1;if(c2name0>=c2name1)c1name=c1name+c2name0-c2name1;elsec1name=c1name+100-c2name1+c2name0;c2name0=c2name1;textarea.append("第"+(out+1)+"個(gè)文件缺少輸出井,");textarea.append(" 進(jìn)入等待狀態(tài)1n");try sleep(1000); catch (Inter

25、ruptedException e) e.printStackTrace();return out;else/ 若輸出井沒滿buffernamec2name0=pcbname.x;/ 進(jìn) 程的輸出信息 PCBi.x 送 bufferiC2i0c1name=c1name-1;/ 輸出井空閑個(gè)數(shù)減1c2name0=(c2name0+1)%100;/ 修 改 空 緩沖區(qū)指針 C2i0 前進(jìn) 1while(x!=0);/ 判斷進(jìn)程的一個(gè)文件是否輸出完畢的 while 循環(huán)結(jié)束textarea.append(" 第 "+(out+1)+" 個(gè) 文 件 已 放 入 輸 出 井

26、 : "+c2name1+""+(c2name0-1)+" 剩余空間"+c1name+"。");try sleep(1000); catch (InterruptedException e) e.printStackTrace();out+;if(c3=0)/ 若沒有空閑請(qǐng)求輸出塊,轉(zhuǎn)為等待狀態(tài)3pcbname.status=3;if(c2name0>=c2name1)c1name=c1name+c2name0-c2name1;elsec1name=c1name+100-c2name1+c2name0;c2name0=

27、c2name1;out-;textarea.append(" 缺少請(qǐng)求輸出塊,");textarea.append(" 進(jìn)入等待狀態(tài)3 。 n");try sleep(1000); catch (InterruptedException e) e.printStackTrace();out+;return out;else/ 若有空閑請(qǐng)求輸出塊reqblockpt2.addr=c2name1;/ 將文件在輸出井的位置填入空閑請(qǐng)求塊if(c2name0>=c2name1)/ 將文件在輸出井的長度填入空閑請(qǐng)求塊reqblockpt2.length=c2

28、name0-c2name1;elsereqblockpt2.length=100-c2name1+c2name0;reqblockpt2.repname=name;/ 將進(jìn)程名 i 填入請(qǐng)求塊textarea.append(""+(Integer.toString(pt2+1)+"n");pt2=(pt2+1)%10;c3-;if(pcb3.status=2)則喚醒 SPOOLING 進(jìn)程pcb3.status=0;獲得請(qǐng)求輸出塊/ 修改空閑請(qǐng)求塊指針/ 空閑請(qǐng)求塊數(shù)減1/ 若 SPOOLING 進(jìn)程是等待狀態(tài),/ 判斷進(jìn)程所要輸出的文件是否輸出完畢的

29、while 循環(huán)結(jié)束textarea.append(" 進(jìn)程 "+name+" 輸出完畢! ");/ 文件輸出完畢,修改狀態(tài)為結(jié)束,轉(zhuǎn)進(jìn)程調(diào)度pcbname.status=4;return out;public void spooling1()while(c3!=10)/ 判斷請(qǐng)求輸出塊是否為空的while 循環(huán)/ 若請(qǐng)求輸出塊不為空StringBuffer buffer1=new StringBuffer(100);for(i=0;i<reqblockpt1.length;i+)/ 按該請(qǐng)求輸出信息塊 reqlock 的指針 ptrl 將輸出井中

30、的一個(gè)文件的內(nèi)容放入臨時(shí)buffer1 中buffer1.append(bufferreqblockpt1.repnamereqblockpt1.addr);reqblockpt1.addr=(reqblockpt1.addr+1)%100;if(reqblockpt1.repname=1)out_1+;spooling.textarea3.append(" 輸出進(jìn)程 1 第"+out_1+” 個(gè)文件的內(nèi)容: "); elseout_2+;spooling.textarea3.append(" 輸出進(jìn)程 2 第"+out_2+” 個(gè)文件的內(nèi)容:

31、 ");spooling.textarea3.append(buffer1.toString()+"n");try sleep(1000); catch (InterruptedException e) e.printStackTrace();/ 釋放相應(yīng)輸出井,即修改相應(yīng)的輸出井計(jì)數(shù)c1c1reqblockpt1.repname=c1reqblockpt1.repname+reqblockpt1.length;pt1=(pt1+1)%10;c3+;int k;for(k=1;k<=2;k+)if(pcbk.status=1)/ 有等待輸出井的進(jìn)程,喚醒相應(yīng)

32、進(jìn)程,轉(zhuǎn)進(jìn)程調(diào)度pcbk.status=0;return;for(k=1;k<=2;k+)if(pcbk.status=3) / 有等待請(qǐng)求輸出塊的進(jìn)程,喚醒相應(yīng)進(jìn)程pcbk.status=0;return;/ 判斷請(qǐng)求輸出塊是否為空的 while 循環(huán)結(jié)束if(pcb1.status=4&&pcb2.status=4)/ 進(jìn)程 1 、 2 結(jié)束后輸出進(jìn)程結(jié)束pcb3.status=4;輸出進(jìn)程結(jié)束");/ 輸出spooling.textarea3.append("Spooling return;else進(jìn)程等待pcb3.status=2;return

33、;class Pcb int id;/進(jìn)程標(biāo)識(shí)數(shù)int status;/進(jìn)程狀態(tài)int count;/要輸出的文件數(shù)int x;/進(jìn)程輸出時(shí)的臨時(shí)變量class Reqblock 精品int repname;/請(qǐng)求進(jìn)程名int length;/本次輸出信息長度int addr;/信息在輸出井的首地址四、使用說明運(yùn)行界面如下圖1所示m戶遵理i文cth.匚用戶避私?交汴蜘叵二|運(yùn)行 +工 工同米口口州的調(diào)度 MH雌躁1個(gè)端刪看:535H0耕出盡理;靖沖女件時(shí)n寄E2MX池宜交蜥”百:旨出理編件文件郵備?*6535WD反鼻記翟耳翁文件的內(nèi)鈉n;=(:-<.t,- :,-1 i : - '

34、;i.- i w e;- t- 冏誕蝎撲如:綠。林弱.注生茅火+店佰:二辿:1;M%網(wǎng)璃的文"班疊TSt?4Ufi«拿出翩其力沖劉府IlWl Mil E0玲E的1砧Y中牛的陷4刷,:民處為第i交件的"正:"二一四而:慵出典第計(jì)文語MW: 3754524*1釐H3M11+3璉由Kffg <71HO|js曲0崎曲sKtjfh l I);京布御舟帶用二千4三七4*=4*隹1.定iW件二f-.靠蚌:.一 小七之行一。?.喟上忙獨(dú)吐?屬?zèng)_洲時(shí)47T取靠全門打,fflKHtimi /甘X#己曲短曲的:X”南臨空同日立朋詞刊出埠N lt>忤哨己海X科h 1

35、7-73科壯目猛,裁陽求粕班3 書存,號(hào)出言空!r 牛;$,牝區(qū)二-巾上空目Tu點(diǎn)I5.打耶二快,罩:十支斗不通門上: 削$=曰心&鼻性方才占 遍一,如tttEMl海琳;10*10 蔭 件已就入例井 1W1S 際恢件己他消以用皿期 單小七#-卑-出亡, 12-C2工.十支首三世,打比拄: JJ 第5小$詡:廣一 維件已的,汕港:SAJ g:0iTtn已m戳t 井 I Sfl*7t 第7十文件0人炳出件: m剎陣主河:珂,落二日出式 像寶麗娜翊蛾 率性£|即日*掰酬翰出快 率詫空間夕冬得諾樺雌 卡博2河去*有常小第儡出觀 *屋空慟M*喀符京前出班 黍伸至卿J*. ,蕾?演事惘蛾

36、 電柱空間覃酶捕3 方恃直同打.砂黃魏學(xué)求 '立門已M.,5i比=:-"中心期。金岸子工科1-:;誑T腎出J芋1- 可編輯 -萌月,笛狎巧1士.”.川| ; j 自甄.鬼堤. 牒肛七畦 rE" 'F三通 H停訪肄圖1運(yùn)行結(jié)果1、在“用戶進(jìn)程1文件數(shù)”和“用戶進(jìn)程2文件數(shù)”的文本框里填入要輸出的文件數(shù)。2、點(diǎn)擊“運(yùn)行”按鈕開始運(yùn)行3、最底下的“主程序調(diào)度過程”文本區(qū)會(huì)顯示每次調(diào)度的進(jìn)程。4、左邊的“ Spooling的調(diào)度”文本區(qū)會(huì)把請(qǐng)求輸出塊的指針?biāo)镜男畔?輸出。5 、中間的“用戶進(jìn)程1 的輸出”文本區(qū)會(huì)顯示用戶進(jìn)程1 每個(gè)文件的占用輸出井和請(qǐng)求輸出塊的情

37、況。6 、右邊的“用戶進(jìn)程2 的輸出”文本區(qū)會(huì)顯示用戶進(jìn)程2 每個(gè)文件的占用輸出井和請(qǐng)求輸出塊的情況。7、點(diǎn)擊“重置”按鈕,回到最初界面。8、點(diǎn)擊“關(guān)閉”按鈕,關(guān)閉運(yùn)行窗口。五、結(jié)果分析在“用戶進(jìn)程1 文件數(shù)”和“用戶進(jìn)程2 文件數(shù)”的文本框里分別填入 3和 11 , 點(diǎn)擊 “運(yùn)行” 按鈕, 得到的結(jié)果如上圖 1 所示, 每次的調(diào)度都用 “ * ” 隔開,從圖中的數(shù)據(jù)可以分析出運(yùn)行的順序?yàn)椋?、主程序選擇調(diào)度用戶進(jìn)程2, “用戶進(jìn)程2的輸出”顯示第110個(gè)文件成功得到輸出井資源buffer2071 和請(qǐng)求輸出塊資源 reqblock09 。第11 個(gè)文件缺少reqblock ,申請(qǐng)失敗,進(jìn)入等待狀態(tài)3 ,轉(zhuǎn)調(diào)度函數(shù)。2 、 主程序選擇調(diào)度用戶進(jìn)程1, “用戶進(jìn)程1 的輸出” 顯示第 1 個(gè)文件缺少reqblock ,申請(qǐng)失敗,進(jìn)入等待狀態(tài)3 ,轉(zhuǎn)調(diào)度函數(shù)。3 、 用戶進(jìn)程 1 、 2 都處于等待狀態(tài)3, 主程序只能選擇調(diào)度Spooling 進(jìn)程,“Spooling的調(diào)度”顯示第110個(gè)reqblock所指的信息,即用戶進(jìn)程2的第110個(gè)文件,喚

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論