操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程調(diào)度子系統(tǒng)模擬實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  操作系統(tǒng)課程設(shè)計(jì)</b></p><p>  --進(jìn)程調(diào)度子系統(tǒng)模擬實(shí)現(xiàn)</p><p><b>  設(shè)計(jì)內(nèi)容及意義</b></p><p><b>  課程設(shè)計(jì)內(nèi)容</b></p><p>  使用java語(yǔ)言或C++語(yǔ)言編程實(shí)現(xiàn)模擬操作系統(tǒng)進(jìn)程

2、調(diào)度子系統(tǒng)的基本功能;實(shí)現(xiàn)先來(lái)先服務(wù)、時(shí)間片輪轉(zhuǎn)、多級(jí)反饋輪轉(zhuǎn)法對(duì)進(jìn)程進(jìn)行的調(diào)度過(guò)程;掌握各個(gè)調(diào)度算法的特點(diǎn)。</p><p><b>  該課程設(shè)計(jì)意義</b></p><p><b>  理解進(jìn)程調(diào)度的概念</b></p><p>  深入了解進(jìn)程控制塊的功能、進(jìn)程的創(chuàng)建、刪除以及進(jìn)程各個(gè)狀態(tài)間的轉(zhuǎn)換過(guò)程</p&

3、gt;<p>  從實(shí)用的角度對(duì)《數(shù)據(jù)結(jié)構(gòu)》課程內(nèi)容進(jìn)行更深入理解和更熟練的應(yīng)用</p><p>  進(jìn)一步練習(xí)對(duì)Java及C++語(yǔ)言的熟練使用</p><p><b>  設(shè)計(jì)方案</b></p><p><b>  硬件環(huán)境</b></p><p><b>  PC一臺(tái)&

4、lt;/b></p><p><b>  開(kāi)發(fā)語(yǔ)言及工具</b></p><p>  操作系統(tǒng):MS windows XP</p><p>  C++版:Visual Studio 2008 + MFC</p><p>  Java版:Eclipse 3.4 + Java Swing</p><

5、p><b>  設(shè)計(jì)思路</b></p><p>  系統(tǒng)設(shè)備表用于存取調(diào)度過(guò)程中進(jìn)程可申請(qǐng)的資源</p><p>  進(jìn)程控制塊主要負(fù)責(zé)具體進(jìn)程信息的保存</p><p>  等待隊(duì)列、就緒隊(duì)列、完成隊(duì)列用于保存執(zhí)行過(guò)程的狀態(tài)信息</p><p>  進(jìn)程調(diào)度進(jìn)程(類、線程)在就緒隊(duì)列與等待隊(duì)列之間進(jìn)行調(diào)度<

6、;/p><p>  主界面顯示調(diào)度過(guò)程的三個(gè)隊(duì)列的狀態(tài)信息</p><p>  用戶創(chuàng)建進(jìn)程放入就緒隊(duì)列等待調(diào)度</p><p><b>  功能模塊設(shè)計(jì)</b></p><p><b>  進(jìn)程狀態(tài)轉(zhuǎn)換</b></p><p><b>  PCB信息</b>

7、;</p><p>  主要負(fù)責(zé)保存各進(jìn)程基本信息</p><p>  提供外部狀態(tài)設(shè)置和讀取接口</p><p><b>  系統(tǒng)設(shè)備類</b></p><p><b>  系統(tǒng)設(shè)備的基本信息</b></p><p>  設(shè)備狀態(tài)設(shè)置、讀取接口</p><

8、;p><b>  調(diào)度類</b></p><p>  向就緒隊(duì)列添加新創(chuàng)建進(jìn)程</p><p>  從就緒隊(duì)列取相應(yīng)進(jìn)程執(zhí)行</p><p>  將執(zhí)行阻塞進(jìn)程放入等待隊(duì)列</p><p>  檢測(cè)系統(tǒng)設(shè)備表,分配、釋放設(shè)備、喚醒等待進(jìn)程</p><p>  執(zhí)行完成程序放入完成隊(duì)列(僅為保

9、存狀態(tài),非系統(tǒng)部分)</p><p>  提供獲取執(zhí)行狀態(tài)的外部接口,即各個(gè)隊(duì)列數(shù)據(jù)的獲取</p><p><b>  視圖類</b></p><p>  提供用戶操作接口(調(diào)度策略選擇、進(jìn)程創(chuàng)建)</p><p><b>  顯示各隊(duì)列狀態(tài)信息</b></p><p>  

10、創(chuàng)建進(jìn)程調(diào)度類線程,調(diào)用調(diào)度類的接口</p><p><b>  程序總控流程圖</b></p><p>  用戶接口、調(diào)度算法、進(jìn)程狀態(tài)轉(zhuǎn)換關(guān)系示意</p><p>  調(diào)度算法基本工作流程示意</p><p><b>  數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</b></p><p>  PCB(

11、進(jìn)程基本信息)</p><p><b>  類結(jié)構(gòu)</b></p><p><b>  說(shuō)明</b></p><p><b>  pid進(jìn)程ID</b></p><p><b>  pName進(jìn)程名</b></p><p>  us

12、erName進(jìn)程用戶</p><p>  priority進(jìn)程優(yōu)先級(jí)</p><p>  subtime進(jìn)程提交時(shí)間</p><p>  totalTime進(jìn)程需要執(zhí)行的總時(shí)間</p><p>  runtime進(jìn)程已經(jīng)運(yùn)行時(shí)間</p><p>  dcReqlst當(dāng)前進(jìn)程所需要的設(shè)備請(qǐng)求表</p>&l

13、t;p>  Dispatcher(進(jìn)程調(diào)度進(jìn)程)</p><p><b>  類結(jié)構(gòu)</b></p><p><b>  說(shuō)明</b></p><p>  sysTime系統(tǒng)時(shí)間</p><p>  isContention當(dāng)前調(diào)度是否為搶占方式</p><p>  p

14、relst就緒隊(duì)列</p><p>  waitlst等待隊(duì)列</p><p>  finishlst完成隊(duì)列</p><p>  executing正在執(zhí)行的進(jìn)程</p><p>  sysDclst系統(tǒng)設(shè)備表</p><p>  Device(系統(tǒng)設(shè)備)</p><p><b> 

15、 類結(jié)構(gòu)</b></p><p><b>  說(shuō)明</b></p><p><b>  dcid設(shè)備標(biāo)識(shí)</b></p><p>  dcType設(shè)備類型</p><p>  dcTime該設(shè)備一次I/O服務(wù)需要時(shí)間</p><p>  dcPid使用該設(shè)備的進(jìn)程

16、</p><p>  dcDisc設(shè)備描述</p><p>  dcLefTime設(shè)備剩余服務(wù)時(shí)間</p><p><b>  程序代碼結(jié)構(gòu)</b></p><p><b>  類層次關(guān)系</b></p><p><b>  詳細(xì)說(shuō)明</b></p

17、><p>  Dispatcher定義進(jìn)程調(diào)度進(jìn)程的基本信息和接口</p><p>  FIFODispatcher、PLevelDispatcher、RRDispatcher、MRDispatcher分別實(shí)現(xiàn)相應(yīng)的調(diào)度算法</p><p>  Device為系統(tǒng)設(shè)備</p><p>  DeviceReq為進(jìn)程設(shè)備請(qǐng)求,包括請(qǐng)求設(shè)備ID和時(shí)間&

18、lt;/p><p><b>  代碼實(shí)現(xiàn)分析</b></p><p>  算法分析(各算法過(guò)程見(jiàn)下流程圖)</p><p><b>  設(shè)備的分配釋放</b></p><p><b>  先來(lái)先服務(wù)</b></p><p><b>  優(yōu)先級(jí)調(diào)度&

19、lt;/b></p><p><b>  時(shí)間片輪轉(zhuǎn)</b></p><p><b>  多級(jí)反饋輪轉(zhuǎn)</b></p><p>  具體實(shí)現(xiàn)(代碼部分有詳細(xì)注釋)</p><p><b>  進(jìn)程的插入</b></p><p><b> 

20、 @Override</b></p><p>  public void addPreProc(Process proc) {</p><p>  //按優(yōu)先級(jí)加到就緒隊(duì)列</p><p>  this.prelst.add(proc); </p><p><b>  int loc;</b></p&g

21、t;<p>  for(loc=prelst.size()-2; loc>=0; loc--){</p><p>  //比proc大的元素后移一個(gè)位置</p><p>  Process temp = prelst.get(loc);</p><p>  if(proc.Priority<temp.Priority){</p>

22、<p>  prelst.set( loc+1, temp);</p><p><b>  }</b></p><p>  else{//將proc放入空閑位置</p><p>  prelst.set( loc+1, proc);</p><p><b>  break;</b>

23、</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(loc<0){</p><p>  prelst.set(0, proc);</p><p><b>  }</b></p>

24、<p><b>  }</b></p><p><b>  取出進(jìn)程</b></p><p><b>  @Override</b></p><p>  public Process delPreProc() {</p><p>  //取優(yōu)先級(jí)最高者,即為第一個(gè)&l

25、t;/p><p>  if(prelst.size()<=0){</p><p>  return null;</p><p><b>  }</b></p><p>  return this.prelst.remove(0);//返回最小一個(gè)</p><p><b>  }&l

26、t;/b></p><p><b>  先進(jìn)先出算法的調(diào)度</b></p><p><b>  @Override</b></p><p>  public void run(int time) {</p><p>  int proctimeslice = 1;//假設(shè)處理器指令周期為1個(gè)

27、時(shí)鐘周期</p><p>  while(time>0){//處理機(jī)運(yùn)行time時(shí)間</p><p>  if(this.executing==null){//沒(méi)有進(jìn)程占用處理機(jī)則空轉(zhuǎn)</p><p>  this.executing = this.delPreProc();</p><p><b>  }</b

28、></p><p>  else{//執(zhí)行當(dāng)前進(jìn)程</p><p>  Process proc = this.executing;</p><p>  //下一次執(zhí)行需要的設(shè)備</p><p>  DcRequest req = proc.getNextReq();</p><p>  if(req!

29、=null && req.getReqtime()<=proc.runtime){</p><p>  //進(jìn)程需要請(qǐng)求設(shè)備,而且執(zhí)行到請(qǐng)求時(shí)間</p><p>  this.addWaitProc(proc);</p><p>  this.executing = this.delPreProc();</p><p>

30、;  }else{//無(wú)資源請(qǐng)求</p><p>  proc.run(proctimeslice);</p><p>  if(proc.isFinished()){</p><p>  //當(dāng)前進(jìn)程是已完成進(jìn)程,放入完成隊(duì)列,取下一進(jìn)程</p><p>  proc.setFinishTime(</p><p>

31、  Dispatcher.getBeginTime()</p><p>  + Dispatcher.getRunTime());</p><p>  //設(shè)置當(dāng)前執(zhí)行結(jié)束時(shí)間</p><p>  this.addFinishProc(proc);</p><p>  this.executing = this.delPreProc();&

32、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  super.processWaitlst(proctimeslice);</p><p>  ++Dispatch

33、er.runTime;</p><p><b>  --time;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  優(yōu)先級(jí)搶占算法的調(diào)度</p><p><b>  @Override

34、</b></p><p>  public void run(int time, boolean isContention) {</p><p>  if(!isContention){//非搶占方式</p><p>  this.run(time);</p><p><b>  return;</b>&

35、lt;/p><p><b>  }</b></p><p>  int proctimeslice = 1;//假設(shè)處理器時(shí)鐘周期</p><p>  while(time>0){//處理機(jī)運(yùn)行time時(shí)間</p><p>  if(this.executing==null){//沒(méi)有進(jìn)程占用處理機(jī)則空轉(zhuǎn)&l

36、t;/p><p>  this.executing = this.delPreProc();</p><p><b>  }</b></p><p>  else{//執(zhí)行當(dāng)前進(jìn)程</p><p>  Process proc = this.executing;</p><p>  //下一

37、次執(zhí)行需要的設(shè)備</p><p>  DcRequest req = proc.getNextReq();</p><p>  if(req!=null && req.getReqtime()<=proc.runtime){</p><p>  //進(jìn)程需要請(qǐng)求設(shè)備,而且執(zhí)行到請(qǐng)求時(shí)間</p><p>  //放入等待

38、隊(duì)列,取下一進(jìn)程</p><p>  this.addWaitProc(proc);</p><p>  this.executing = this.delPreProc();</p><p>  }else{//無(wú)資源請(qǐng)求</p><p>  proc.run(proctimeslice);</p><p>  i

39、f(proc.isFinished()){</p><p>  //當(dāng)前進(jìn)程是已完成進(jìn)程,放入完成隊(duì)列,取下一進(jìn)程</p><p>  proc.setFinishTime(//設(shè)置當(dāng)前執(zhí)行結(jié)束時(shí)間</p><p>  Dispatcher.getBeginTime()+</p><p>  Dispatcher.getRunTime());

40、</p><p>  this.addFinishProc(proc);</p><p>  this.executing = this.delPreProc();</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(!

41、this.prelst.isEmpty()){//搶占</p><p>  Process preproc = this.prelst.get(0);</p><p>  if(this.executing.Priority></p><p>  preproc.Priority){ //按優(yōu)先級(jí)搶占</p><p>  this.

42、addPreProc(this.executing);</p><p>  this.executing = this.delPreProc();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p

43、><p>  super.processWaitlst(proctimeslice);</p><p>  ++Dispatcher.runTime;</p><p><b>  --time;</b></p><p><b>  }</b></p><p><b> 

44、 }</b></p><p><b>  時(shí)間片輪轉(zhuǎn)</b></p><p><b>  @Override</b></p><p>  public void run(int time) {</p><p>  int proctimeslice = 1;//假設(shè)處理器時(shí)鐘周期<

45、;/p><p>  while(time>0){//處理機(jī)運(yùn)行time時(shí)間</p><p>  if(this.executing==null){//沒(méi)有進(jìn)程占用處理機(jī)則空轉(zhuǎn)</p><p>  this.executing = this.delPreProc();</p><p><b>  }</b><

46、/p><p>  else{//執(zhí)行當(dāng)前進(jìn)程</p><p>  Process proc = this.executing;</p><p>  //下一次執(zhí)行需要的設(shè)備</p><p>  DcRequest req = proc.getNextReq();</p><p>  if(req!=null &

47、& req.getReqtime()<=proc.runtime){</p><p>  //進(jìn)程需要請(qǐng)求設(shè)備,而且執(zhí)行到請(qǐng)求時(shí)間</p><p>  //放入等待隊(duì)列,取下一進(jìn)程</p><p>  this.addWaitProc(proc);</p><p>  this.executing = this.delPreP

48、roc();</p><p>  }else{//無(wú)資源請(qǐng)求</p><p>  proc.run(proctimeslice);</p><p>  if(proc.isFinished()){</p><p>  //當(dāng)前進(jìn)程是已完成進(jìn)程,放入完成隊(duì)列,取下一進(jìn)程</p><p>  proc.setFinish

49、Time(//設(shè)置當(dāng)前執(zhí)行結(jié)束時(shí)間</p><p>  Dispatcher.getBeginTime()+ </p><p>  Dispatcher.getRunTime());</p><p>  this.addFinishProc(proc);</p><p>  this.executing = this.delPreProc(

50、);</p><p><b>  }else{</b></p><p>  //如果當(dāng)前時(shí)間片沒(méi)有執(zhí)行完,則從就緒隊(duì)列頭移到隊(duì)列尾部</p><p>  this.addPreProc(this.executing);</p><p>  //當(dāng)前執(zhí)行進(jìn)程放入就緒隊(duì)列</p><p>  thi

51、s.executing = this.delPreProc();</p><p>  //從就緒隊(duì)列取下一個(gè)進(jìn)程占用cpu</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p&

52、gt;  super.processWaitlst(proctimeslice);</p><p>  ++Dispatcher.runTime;</p><p><b>  --time;</b></p><p><b>  }</b></p><p><b>  }</b>

53、</p><p>  多級(jí)反饋輪轉(zhuǎn)搶占方式</p><p><b>  @Override</b></p><p>  public void run(int time, boolean isContention) {</p><p>  int proctimeslice = 1;//假設(shè)處理器時(shí)鐘周期</p&

54、gt;<p>  while(true){ </p><p><b>  --time;</b></p><p>  if(this.executing==null){//沒(méi)有進(jìn)程占用處理機(jī)則空轉(zhuǎn)</p><p>  this.executing = this.delPreProc();</p><p>

55、  if(this.executing!=null){ //每調(diào)度一次重新計(jì)算時(shí)間片</p><p>  time = this.executing.getPriority()*3+1;</p><p><b>  }</b></p><p><b>  break;</b></p><p>&l

56、t;b>  }</b></p><p>  else{//執(zhí)行當(dāng)前進(jìn)程</p><p>  Process proc = this.executing;</p><p>  //下一次執(zhí)行需要的設(shè)備</p><p>  DcRequest req = proc.getNextReq();if(req!=n

57、ull && </p><p>  req.getReqtime()<=proc.runtime){</p><p>  //進(jìn)程需要請(qǐng)求設(shè)備,而且執(zhí)行到請(qǐng)求時(shí)間</p><p>  //TODO 放入等待隊(duì)列,取下一進(jìn)程</p><p>  this.addWaitProc(proc);</p>&l

58、t;p>  this.executing = this.delPreProc();</p><p>  break;//時(shí)間片未完,設(shè)備請(qǐng)求,重新調(diào)度</p><p>  }else{//無(wú)資源請(qǐng)求</p><p>  proc.run(proctimeslice);</p><p>  if(proc.isFinished())

59、{</p><p>  //當(dāng)前進(jìn)程是已完成進(jìn)程,放入完成隊(duì)列,取下一進(jìn)程</p><p>  proc.setFinishTime(//設(shè)置當(dāng)前執(zhí)行結(jié)束時(shí)間</p><p>  Dispatcher.getBeginTime()+</p><p>  Dispatcher.getRunTime());</p><p&g

60、t;  this.addFinishProc(proc);</p><p>  this.executing = this.delPreProc();</p><p>  break;//時(shí)間片沒(méi)用完,程序執(zhí)行完,下一次調(diào)度</p><p><b>  }else{</b></p><p>  if(time<=

61、0){//時(shí)間片用完</p><p>  //當(dāng)前執(zhí)行進(jìn)程放入就緒隊(duì)列</p><p>  this.addPreProc(proc); </p><p>  //從就緒隊(duì)列取下一個(gè)進(jìn)程占用cpu</p><p>  this.executing = this.delPreProc();break;</p&

62、gt;<p>  //時(shí)間片用完,程序未執(zhí)行完,下一次調(diào)度</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(!this.prelst.isEmpty()){//搶

63、占</p><p>  Process preproc = this.prelst.get(0);</p><p>  if(this.executing.Priority></p><p>  (preproc.Priority+1)){</p><p>  //取出時(shí)優(yōu)先級(jí)已經(jīng)降一級(jí)</p><p>  t

64、his.executing.setPriority(</p><p>  //恢復(fù)優(yōu)先級(jí),放入當(dāng)前進(jìn)程被取出隊(duì)列尾部</p><p>  this.executing.Priority+1); </p><p>  this.addPreProc(this.executing);</p><p>  this.executing = this

65、.delPreProc();</p><p>  break;//搶占,下一次調(diào)度</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  super.process

66、Waitlst(proctimeslice);</p><p>  ++Dispatcher.runTime;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  測(cè)試結(jié)果</b></p><p>

67、<b>  先來(lái)先服務(wù)</b></p><p><b>  申請(qǐng)資源及阻塞</b></p><p><b>  中間狀態(tài)</b></p><p><b>  執(zhí)行結(jié)果</b></p><p><b>  優(yōu)先級(jí)</b></p&g

68、t;<p>  按優(yōu)先順序放入就緒隊(duì)列</p><p>  優(yōu)先級(jí)搶占及執(zhí)行結(jié)果</p><p><b>  時(shí)間片輪轉(zhuǎn)</b></p><p><b>  測(cè)試數(shù)據(jù)</b></p><p><b>  中間過(guò)程</b></p><p>&

69、lt;b>  測(cè)試結(jié)果</b></p><p><b>  多級(jí)反饋輪轉(zhuǎn)</b></p><p><b>  測(cè)試數(shù)據(jù)</b></p><p><b>  搶占測(cè)試</b></p><p><b>  執(zhí)行狀態(tài)</b></p>

70、<p><b>  執(zhí)行結(jié)果</b></p><p><b>  設(shè)計(jì)過(guò)程難點(diǎn)</b></p><p><b>  遇到的問(wèn)題</b></p><p><b>  調(diào)度時(shí)機(jī)決策</b></p><p><b>  迭代器的破壞<

71、;/b></p><p><b>  多級(jí)反饋隊(duì)列兼容</b></p><p><b>  設(shè)備分配、釋放</b></p><p>  外部統(tǒng)一接口,類型兼容、上轉(zhuǎn)型對(duì)象</p><p><b>  進(jìn)程的搶占</b></p><p><b&

72、gt;  解決方法</b></p><p>  設(shè)置進(jìn)程相應(yīng)狀態(tài)(空轉(zhuǎn)、結(jié)束、阻塞、時(shí)間片用完、搶斷)</p><p>  修改循環(huán)嵌套層次,或標(biāo)記迭代位置、跳出該層循環(huán)重構(gòu)迭代器</p><p>  采用單一就緒隊(duì)列,各進(jìn)程轉(zhuǎn)入就緒隊(duì)列進(jìn)行插入排序,插入相應(yīng)位置</p><p>  掃描設(shè)備請(qǐng)求表,判斷系統(tǒng)設(shè)備表中申請(qǐng)的設(shè)備是否

73、空閑;掃描系統(tǒng)設(shè)備表,判斷設(shè)備是否運(yùn)轉(zhuǎn)完畢,修改設(shè)備狀態(tài)及進(jìn)程狀態(tài)</p><p>  為提供外部統(tǒng)一調(diào)用接口,采用類的繼承及上轉(zhuǎn)型對(duì)象,用同一調(diào)用實(shí)現(xiàn)不同算法;為實(shí)現(xiàn)類型兼容,采用抽象類及虛函數(shù)</p><p>  沒(méi)執(zhí)行一次,判斷就緒隊(duì)列首端元素是否有更高優(yōu)先級(jí),就緒隊(duì)列插入元素直接進(jìn)行插入排序,平均復(fù)雜度為O(n),實(shí)際上只需要常數(shù)級(jí)的比較和移動(dòng)</p><p&g

74、t;<b>  總結(jié)</b></p><p><b>  系統(tǒng)實(shí)現(xiàn)情況</b></p><p>  該系統(tǒng)實(shí)現(xiàn)了C++及Java兩個(gè)版本</p><p>  Java版本實(shí)現(xiàn)了上述各調(diào)度算法,設(shè)備的自動(dòng)分配及釋放,有良好的用戶操作接口、有很好的容錯(cuò)提示能力</p><p>  C++版本實(shí)現(xiàn)了上述調(diào)

75、度算法、提供用戶選擇設(shè)備接口、MFC實(shí)現(xiàn)良好的操作界面</p><p>  采用純面向?qū)ο蟮乃枷耄辛己玫姆庋b性,接口統(tǒng)一</p><p>  用到了抽象類及虛函數(shù)、類型兼容、函數(shù)重載及運(yùn)算符重載</p><p>  采用了泛化的變成思想,解決了迭代器的完整性問(wèn)題</p><p>  邏輯與控制顯示分離,算法與界面分離并使用不同的現(xiàn)成執(zhí)行&l

76、t;/p><p><b>  系統(tǒng)特點(diǎn)</b></p><p>  根據(jù)要求實(shí)現(xiàn)了各類調(diào)度算法,并實(shí)現(xiàn)了搶占和非搶占工作方式</p><p>  用戶可在創(chuàng)建進(jìn)程時(shí)發(fā)出多個(gè)設(shè)備請(qǐng)求</p><p>  程序自動(dòng)檢測(cè)設(shè)備請(qǐng)求,阻塞進(jìn)程并在適當(dāng)時(shí)機(jī)喚醒</p><p>  在插入隊(duì)列是對(duì)進(jìn)程排序預(yù)處理、減

77、少執(zhí)行過(guò)程中的比較次數(shù)</p><p><b>  收獲</b></p><p>  掌握了進(jìn)程調(diào)度的完整過(guò)程</p><p>  進(jìn)一步復(fù)習(xí)了C++語(yǔ)言,加強(qiáng)了面向?qū)ο蟮乃枷耄莆樟巳绾螌?shí)現(xiàn)邏輯、控制、顯示的分離</p><p>  復(fù)習(xí)了多線程的編程思想</p><p>  掌握了抽象類及虛函

78、數(shù)的應(yīng)用,學(xué)習(xí)了上轉(zhuǎn)型對(duì)象的應(yīng)用</p><p>  進(jìn)一步學(xué)習(xí)泛化編程思想,掌握了如何保證迭代器的完整性</p><p>  進(jìn)一步實(shí)踐如何在面向?qū)ο蠊こ讨蟹止ず献?,采用邏輯分離的思想使得各個(gè)模塊并行實(shí)現(xiàn)以及各模塊的單元測(cè)試</p><p><b>  參考文獻(xiàn)</b></p><p>  著作:[1] 張堯?qū)W,史美林

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論