版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)-進(jìn)程調(diào)度模擬
- 操作系統(tǒng)課程設(shè)計(jì)——進(jìn)程調(diào)度模擬算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告---進(jìn)程調(diào)度的模擬實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)——進(jìn)程調(diào)度模擬算法
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程調(diào)度模擬設(shè)計(jì)
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)
- 進(jìn)程調(diào)度算法 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程調(diào)度算法
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度算法
- 操作系統(tǒng)模擬進(jìn)程課程設(shè)計(jì)
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì) (2)
- 操作系統(tǒng)_進(jìn)程調(diào)度算法課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)——操作系統(tǒng)課程設(shè)計(jì)模擬操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度程序設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)---作業(yè)調(diào)度模擬
- 操作系統(tǒng)課程設(shè)計(jì)--模擬操作系統(tǒng)的實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論