版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、題目:通用處理器調(diào)度演示實驗專業(yè):軟件工程班級:軟件3班、軟件4班姓名:朱文吉吉、黃強學號:202126010306、202126010421設計時間:2021/6/26-2021/7/7一、課程設計目的操作系統(tǒng)課程設計是軟件工程專業(yè)的主要實踐性教學環(huán)節(jié).在進行了專業(yè)根底課和?操作系統(tǒng)?課程的學習根底上,設計或分析一個實際的操作系統(tǒng)旨在加深對計算機硬件結構和系統(tǒng)軟件的熟悉,初步掌握操作系統(tǒng)組成模塊和應用接口的使用方法,提升進行工程設計和系統(tǒng)分析的水平,為畢業(yè)設計和以后的工程實踐打下良好的根底.二、課程設計內(nèi)容與要求2.1 設計目的在多道程序和多任務系統(tǒng)中,系統(tǒng)內(nèi)同時處于就緒狀態(tài)的進程可能有假設
2、干個,也就是能運行的進程數(shù)大于處理機個數(shù),為了使系統(tǒng)中的進程有條不紊地工作,必須選用某種調(diào)度策略,在一定的時機選擇一個進程占有處理機.要求學生設計一個模擬處理機調(diào)度算法,以穩(wěn)固和加深處理機調(diào)度的概念.2.2 設計要求多道、單處理機1進程調(diào)度算法包括:時間片輪轉(zhuǎn)算法、先來先效勞算法、短作業(yè)優(yōu)先算法、靜態(tài)優(yōu)先權優(yōu)先調(diào)度算法、高響應比調(diào)度算法.2每一個進程有一個PCB,其內(nèi)容可以根據(jù)具體情況設定.3進程數(shù)、進入內(nèi)存時間、要求效勞時間、作業(yè)大小、優(yōu)先級等均可以在界面上設定.4可讀取樣例數(shù)據(jù)要求存放在外部文件中進行進程數(shù)、進入內(nèi)存時間、時間片長度、作業(yè)大小、進程優(yōu)先級的初始化.5可以在運行中顯示各進程的
3、狀態(tài):就緒、執(zhí)行由于不要求設置互斥資源與進程間同步關系,故只有兩種狀態(tài).6采用可視化界面,可在進程調(diào)度過程中隨時暫停調(diào)度,查看當前進程的狀態(tài)以及相應的阻塞隊列.7有能比擬的功能,可比擬同一組數(shù)據(jù)在不同調(diào)度算法下的平均周轉(zhuǎn)時間.8具有一定的數(shù)據(jù)容錯性.三、功能模擬系統(tǒng)分析與設計3.1 系統(tǒng)分析本課程設計的目的就是模擬一種通用處理器的五種調(diào)度算法來實現(xiàn)進程調(diào)度的過程,加深對進程調(diào)度的理解,輸出采用采用可視化界面,可在進程調(diào)度過程中隨時暫停調(diào)度,查看當前進程的狀態(tài)以及相應的阻塞隊列,進程限制塊PCB是這個程序設計的核心,PCB包含了到達時間,運行時間,優(yōu)先級等關鍵數(shù)據(jù),要求可以用五種調(diào)度算法演示,我
4、們可以用策略模式把五個算法打包通過一個接口連接CPU,實現(xiàn)算法和CPU的別離,算法有5五種,分別實現(xiàn)不同的調(diào)度演示時間片輪轉(zhuǎn)算法、先來先效勞算法、短作業(yè)優(yōu)先算法、靜態(tài)優(yōu)先權優(yōu)先調(diào)度算法、高響應比調(diào)度算法我們采用MVC模型-視圖-限制器的設計方法,輸入方式的采用界面直接輸入和文件讀取輸入兩種方法,視圖主要展示進程的進程名、到達時間、運行時間、優(yōu)先級、時間片、響應時間、結束時間、周轉(zhuǎn)時間,表示方法我們采用Jav豳形界面輸出,動態(tài)演示調(diào)度算法的實現(xiàn)過程,以加深對操作系統(tǒng)進程調(diào)度的理解.3.2 系統(tǒng)設計3.2.1 設計思想就先教心地場修整區(qū)一指示同孑優(yōu)雷迸程的戰(zhàn)甌'其他工EbJ送貨化翱庫的蒼耳
5、丙容圖3-1進程限制塊PCB1、每個進程有一個進程限制塊PCB表示.進程限制塊可以包含如下信息:進程名、優(yōu)先級數(shù)、到達時間、需要運行時間等等.2、進程的信息,包括到達時間,優(yōu)先數(shù)及需要的運行時間等都是事先人為地指定.3、每個進程的狀態(tài)可以是就緒WWait運行RRun、或完成FFinish三種狀態(tài)之一.3.2.2 算法分析一先來先效勞調(diào)度算法FCFS:FirstComeFirstServe總是把當前處于就緒隊列之首的那個進程調(diào)度到運行狀態(tài).也就說,它只考慮進程進入就緒隊列的先后,而不考慮它的下一個CPU周期的長短及其他因素.FCFS算法簡單易行,但性能卻不大好.二最短短作業(yè)進程優(yōu)先調(diào)度算法SJF
6、:ShortestJobFirst.稱為“短進程優(yōu)先"SPNShortestProcessNext;這是對FCFS算法的改良,其目標是減少平均周轉(zhuǎn)時間.三高優(yōu)先權優(yōu)先調(diào)度算法HPF:HighestPriorityFirst.多級隊列算法的改良,平衡各進程對響應時間的要求.適用于作業(yè)調(diào)度和進程調(diào)度,可分成搶先式和非搶先式.四最高響應比優(yōu)先調(diào)度算法HRN:HighestResponseRatioNext最高響應比優(yōu)先法HRN,HighestResponse_ratioNex恥對FCFS方式和SJF方式的一種綜合平衡.FCFS方式只考慮每個作業(yè)的等待時間而未考慮執(zhí)行時間的長短,而SJF方式
7、只考慮執(zhí)行時間而未考慮等待時間的長短.因此,這兩種調(diào)度算法在某些極端情況下會帶來某些不便.HRN調(diào)度策略同時考慮每個作業(yè)的等待時間長短和估計需要的執(zhí)行時間長短,從中選出響應比最高的作業(yè)投入執(zhí)行.五基于時間片的輪調(diào)度算法RR.將系統(tǒng)中所有的就緒進程根據(jù)FCFS原那么,排成一個隊列.每次調(diào)度時將CPU分派給隊首進程,讓其執(zhí)行一個時間片.時間片的長度從幾個ms到幾百ms.在一個時間片結束時,發(fā)生時鐘中斷.調(diào)度程序據(jù)此暫停當前進程的執(zhí)行,將其送到就緒隊列的末尾,并通過上下文切換執(zhí)行當前的隊首進程.進程可以未使用完一個時問片,就出讓CPU如阻塞.3.2.3 模塊設計1輸入模塊能夠滿足輸入進程根本信息的功
8、能,盡可能提供友好的交互界面.給用戶很好的提示,使用戶能夠方便的操作.可讀取樣例數(shù)據(jù)要求存放在外部文件中進行進程數(shù)、進入內(nèi)存時間、時間片長度、作業(yè)大小、進程優(yōu)先級的初始化.2算法模塊可以根據(jù)需求選擇五種算法中的一種運行:一先來先效勞調(diào)度算法FCFS:FirstComeFirstServa1 .根本思想:按作業(yè)進程到達時間先后順序依次使用CPU.2 .適用于作業(yè)/進程調(diào)度.3 .非搶占調(diào)度方式.4 .優(yōu)缺點.優(yōu)點:實現(xiàn)簡單.缺點:未考慮進程的優(yōu)先級或緊急性,不利于短作業(yè)進程的運行,利于CPU繁忙型作業(yè),而不利于I/O繁忙型作業(yè).很少單獨使用,常與其他算法結合使用輔助算法.二短作業(yè)進程優(yōu)先調(diào)度算法
9、SJF:ShortestJobFirst1 .根本思想:選擇就緒后備隊列中估計運行時間最短的進程作業(yè)投入運行.2 .適用于作業(yè)/進程調(diào)度.3 .非搶占調(diào)度方式一一最短剩余時間優(yōu)先算法或搶占調(diào)度方式.4 .優(yōu)缺點.優(yōu)點:有效縮短作業(yè)的平均周轉(zhuǎn)時間,從而提升系統(tǒng)吞吐量.缺點:不利于長作業(yè)和緊迫作業(yè)的運行無法滿足公平性,估計有主觀性三高優(yōu)先權優(yōu)先調(diào)度算法HPF:HighestPriorityFirst.引入:為照顧緊迫型作業(yè)優(yōu)先處理,急事急辦,重要事先辦.1 .根本思想:選擇優(yōu)先級最高的進程或作業(yè)投入運行.2 .適用于作業(yè)/進程調(diào)度.3 .調(diào)度方式.非搶占調(diào)度方式一一批處理系統(tǒng):等你打完我再打.搶占
10、調(diào)度方式一一實時系統(tǒng):不等你打完 ,搶過話筒就打4 .優(yōu)先權優(yōu)先級:即優(yōu)先數(shù),是由系統(tǒng)或用戶按某種原那么指定的,一般用整數(shù)表示.1靜態(tài)優(yōu)先權幺定終身是在創(chuàng)立進程/作業(yè)時確定的,且在整個運行期間保持不變.優(yōu)先級確實定依據(jù):用戶要求、進程/作業(yè)類型、對資源的要求不同系統(tǒng)有不同確實定原那么,及表求方法.優(yōu)點:簡單易行,系統(tǒng)開銷小.缺點:不夠精確,可能出現(xiàn)某些低優(yōu)先級的進程永不能被執(zhí)行.2動態(tài)優(yōu)先權是在創(chuàng)立進程/作業(yè)時賦予的優(yōu)先級,可隨著進程的推進而改變.決定/動態(tài)改變因素:等待時間、已使用處理機的時間、其他資源的使用情況等.特點:可預防低優(yōu)先級的進程/作業(yè)長時間得不到調(diào)度.四最高響應比優(yōu)先調(diào)度算法H
11、RN:HighestResponseRatioNext引入:實際上是一種動態(tài)優(yōu)先權調(diào)度算法.1 .響應比R=響應時間/要求效勞時間=等待時間+運行時間/運行時間=1+等待時間/運行時間2 .根本思想:同時兼顧每個作業(yè)等待時間和運行時間兩方面因素,選擇響應比最高的作業(yè)/進程投入運行.3,優(yōu)缺點.優(yōu)點:利于短作業(yè),利于長作業(yè).缺點:系統(tǒng)開銷大.五基于時間片的輪調(diào)度算法RR1 .根本思想:輪轉(zhuǎn)法RoundRobin是讓每個進程在就緒隊列中的等待時間與享受效勞的時間成正比例.2 .時間片大小確實定:固定時間片可變時間片系統(tǒng)響應時間正比就緒進程個數(shù)反比CPU水平進程切換時間q時間片t那么q/t不大于某個
12、值3 .時間片t大小的選擇影響:太大,M>FCFS;太小,那么系統(tǒng)開銷增大頻繁切換.t=R/NmaxR為響應時間,Nmax允許的最大就緒數(shù).3)輸出模塊根據(jù)選擇的調(diào)度算法輸出進程的響應時間,結束時間,周轉(zhuǎn)時間,平均周轉(zhuǎn)時問,采用可視化界面,可在進程調(diào)度過程中隨時暫停調(diào)度,查看當前進程的狀態(tài)以及相應的阻塞隊列.3.2.4 數(shù)據(jù)結構說明ADT說明:ADTADT-Name(Data:/數(shù)據(jù)說明數(shù)據(jù)元素之間邏輯關系的描述Operations:/腴作說明Operationl:/臊作1,它通??捎肅或C十十的函數(shù)原型來描述Input:對輸入數(shù)據(jù)的說明Preconditions執(zhí)行本操作前系統(tǒng)應滿足的
13、狀態(tài)/可看作初始條件Process對數(shù)據(jù)執(zhí)行的操作Output對返回數(shù)據(jù)的說明Postconditions執(zhí)行本操作后系統(tǒng)的狀態(tài)/"系統(tǒng)可看作某個數(shù)據(jù)結構Operation2:/臊作2/ADT程序類圖:圖3-3程序類圖3.2.5 算法流程圖處理器調(diào)度程序活動圖:在采用多道程序設計的系統(tǒng)中,往往有假設干個進程同時處于就緒狀態(tài).當就緒狀態(tài)進程個數(shù)大于處理器數(shù)時,就必須依照某種策略來決定哪些進程優(yōu)先占用處理器.本實驗模擬在單處理器情況下處理器調(diào)度,幫助學生加深了解處理器調(diào)度的工作.圖3-4處理器調(diào)度程序活動圖1.先來先效勞:調(diào)度算法(FCFS:FirstComeFirstServe'
14、;圖3-5先到先效勞算法活動圖2 .短作業(yè)進程優(yōu)先調(diào)度算法SJF:ShortestJobFirst圖3-6最短作業(yè)優(yōu)先算法活動圖3 .高優(yōu)先權優(yōu)先調(diào)度算法HPF:HighestPriorityFirst圖3-7優(yōu)先調(diào)度算法活動圖4.最高響應比優(yōu)先調(diào)度算法HRN:HighestResponseRatioNext圖3-8最高響應比調(diào)度算法活動圖5.基于時間片的輪調(diào)度算法RR.圖3-9時間片輪轉(zhuǎn)法算法活動圖四、系統(tǒng)測試與調(diào)試分析4.1 系統(tǒng)測試4.1.1 輸入模塊(1)實現(xiàn)在界面上直接手動輸入.(2)實現(xiàn)在文件中直接讀取.4.1.2 算法模塊實現(xiàn)可以在界面上選擇需要的算法(時間片輪轉(zhuǎn)算法、先來先效勞
15、算法、短作業(yè)優(yōu)先算法、靜態(tài)優(yōu)先權優(yōu)先調(diào)度算法、高響應比調(diào)度算法)運行.4.1.3 輸出模塊可以根據(jù)選擇的算法,得到正確的輸出結果4.2 測試用例表4-1測試用例表進程名到達時間運行時間優(yōu)先級時間片P11°553P21113P31433P4I?333P542234.3 測試結果4.3.1 先到先效勞算法圖4-1先到先效勞算法測試結果4.3.2 最短作業(yè)優(yōu)先算法圖4-2最短作業(yè)優(yōu)先算法測試結果4.3.3靜態(tài)優(yōu)先級算法圖4-3優(yōu)先級算法測試結果4.3.4最高響應比算法圖4-4最高響應比算法測試結果圖4-5時間片輪轉(zhuǎn)法測試結果4.4手動運算結果比照4.4.1 靜態(tài)優(yōu)先級P1p3p4p5p27
16、101519204.4.2 先來先效勞P1,p2p3p4p5078111620P14.4.3 最短作業(yè)優(yōu)先p2p3p5.p4781115204.4.4 最高響應比4.4.5時間片算法P1p2p3P4plp5p4plp50347101316181920圖4-6手動計算截圖1圖4-7手動計算截圖24.5測試表4-2測試表測試說測試名稱通用處理器調(diào)度演示實驗測試目的驗證程序?qū)τ谀M處理器調(diào)度算法的處理流程明測試技術單元測試測試方法黑盒測試法測試內(nèi)容讀取數(shù)據(jù)-程序運行-輸出結果測試用例測試步驟輸入讀取數(shù)據(jù)文件的路徑名分別選擇不同的調(diào)度算法運行輸出結果測試數(shù)據(jù)src/data.txt時間片輪轉(zhuǎn)算法、先來
17、先效勞算法、短作業(yè)優(yōu)先算法、靜態(tài)優(yōu)先權優(yōu)先調(diào)度算法、高響應比調(diào)度算法進程名行時間片P10到達時間運優(yōu)先級時間753P21113P31343P42533P54423預期結果正常讀入數(shù)據(jù)算法正常運行輸出響應時間、結束時間、平均周轉(zhuǎn)時間測試結果與預期相符與預期相符與預期相符4.6調(diào)試分析在我們組程序功能已經(jīng)根本實現(xiàn)并且正常的情況之后,現(xiàn)在主要完成數(shù)據(jù)的測試,在測試過程中,主要針對老師給的數(shù)據(jù),我先手動的分別對五種算法算出答案,再分別讀入程序運行,與手動算出的結果進行反復比照,在測試中我們發(fā)現(xiàn)了時間片輪轉(zhuǎn)法的算法有點小小的問題,與預期的結果不符合,在進行了反復調(diào)試之后得到了正確的結果,程序正確.五、用
18、戶手冊1.導入文件包.云二翼,:IL;',-7盛直t&fl?圖4-8讀入程序包2 .運行讀入數(shù)據(jù)手動輸入或者文件讀取圖4-9讀入數(shù)據(jù)3 .選擇調(diào)度算法點擊Start開始運行,可以點擊pause來暫停,點擊甘特圖可以查看進程甘特圖逗程號遞入內(nèi)行時間當前優(yōu)秀筑響應時間結算時間a1075.02plpl1.03FT34.04252.05442.06345.07563.0g2140g146.010346.011321.0123450I時初總輪轉(zhuǎn)Istartpaiisg11甘相肉時間竟:1時間片輪轉(zhuǎn)先來光雕帶運行就錯三帝ri高響應比場理優(yōu)先靜叁優(yōu)先鎰圖4-10算法選擇4 .輸出結果圖4-1
19、1結果輸出六、程序清單FCFS.javapackagelabl;importjava.util.Vector;publicclassFCFSextendsDispatchMethodOverridepublicPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubPCBp;p=q.remove(0);elsep=null;returnp;)Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime=p.getServeTi
20、me();tryThreadsleep(time*1000);Systemout.println("sleepfor"+time);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;SJF.javapackagelab1;importjava.util.Vector;publicclassSJFextendsDispatchMethodOverridepubli
21、cPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubif(q.size()=0)returnnull;intmin=0;for(inti=0;i<q.size();i+)if(q.get(i).getServeTime()<q.get(min).getServeTime()min=i;PCBtemp=q.remove(min);returntemp;Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime
22、=p.getServeTime();tryThreadsleep(time*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;StaticPriority.javapackagelabl;importjava.util.Vector;publicclasStaticPrioAtyextendsDispatchMethodOverridepublicPCBgetNext(
23、Vector<PCB>q)/TODOAuto-generatedmethodstubPCBp;if(q.size()=0)p=null;elsWintmax=0;for(inti=0;i<q.size();i+)if(q.get(i).getPriority()>q.get(max).getPriority()max=i;)Systemout.println("max:"+max);p=q.get(max);q.remove(max);)returnp;Overridepublicinthandle(PCBp,Vector<PCB>q)/
24、TODOAuto-generatedmethodstubinttime=p.getServeTime();tryThreadsleep(time*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;HRRF.javapackagelab1;importjava.util.Vector;publicclassHRRFextendsDispatchMethodpublicvo
25、idcalculate(Vector<PCB>q)for(inti=0;i<q.size();i+)PCBtemp=q.get(i);temp.setPriority(this.getTime()-temp.getEnterTime()+0.0)/temp.getServeTime()+1);Systemout.println("time:"+this.getTime()+"calculatepriority:"+(double)(this.getTime()-temp.getEnterTime()+0.0)/temp.getServe
26、Time()+1);temp.refresh();OverridepublicPCBgetNext(Vector<PCB>q)calculate(q);/TODOAuto-generatedmethodstubif(q.size()=0)returnnull;intmax=0;for(inti=0;i<q.size();i+)if(q.get(i).getPriority()>q.get(max).getPriority()max=i;PCBtemp=q.get(max);q.remove(max);returntemp;Overridepublicinthandle(
27、PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime=p.getServeTime();tryThreadsleep(time*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;Timeslicepackagelab1;importjava.util.Vector;publicclassTimeSlic
28、eextendsDispatchMethodintslice=1;publicTimeSlice()this.needConfig=true;voidsetSlice(intslice)this.slice=slice;OverridepublicPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubPCBp;p=q.remove(0);elsep=null;returnp;)publicvoidsetConfig(Objecto)this.slice=(MainUI)o).getSlice();)Overridepublicin
29、thandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubtryThread.sleep(slice);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();if(p.getServeTime()-slice>0)tryThreadsleep(slice*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.se
30、tTime(p.getEnterTime(),p.getServeTime()slice,p.getPriority();q.addElement(p);returnslice;)elsWtry(Threadsleep(p.getServeTime()*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();inttime=p.getServeTime();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;七、體會與自我評價在這次課程設計中,黃強主要負責文檔的編寫,和講解PPT的制作,包括前期的設計文檔和PPT,后期的總結報告,還有就是系統(tǒng)的測試工作,朱文吉吉負責系統(tǒng)的設計和代碼的實現(xiàn)局部,在深入地進行程序的設計和,編寫工作,我對這個學期中學習的設計模式有了新的熟悉,在本次的程序設計當中,我們應用了MVC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度大型運動會安防系統(tǒng)合同
- 2024年度大數(shù)據(jù)分析服務合同標的明細
- 2024年專用:租賃合同保證金條款匯編
- 2024年度居民住宅鋁合金門窗安裝工程合同
- 2024年廢舊物資回收協(xié)議
- 2024工程合規(guī)審查中的黑白合同問題探討
- 04版智能硬件研發(fā)與制造分包合同
- 2024年國際貨運代理及倉儲物流合作合同
- 2024年度5G基站建設與運營合作協(xié)議
- 2024年一年級數(shù)學老師家長會
- 模擬法庭案例腳本:校園欺凌侵權案 社會法治
- 05 03 第五章第三節(jié) 投身崇德向善的道德實踐
- 安徽省合肥市第四十五中學2022-2023學年九年級上學期數(shù)學期中考試卷
- 樁基礎工程施工組織方案
- 供水運營管理實施方案(4篇)
- 水土保持工程質(zhì)量評定表
- 水電站基本構造原理與類型ppt版(共67)
- 秦朝統(tǒng)一PPT課件教學
- 《民族團結》- 完整版課件
- 醫(yī)院 交班站位圖
- 第七章 森林植被恢復與重建理論
評論
0/150
提交評論