操作系統(tǒng)課程設(shè)計(jì)之進(jìn)程調(diào)度_第1頁(yè)
操作系統(tǒng)課程設(shè)計(jì)之進(jìn)程調(diào)度_第2頁(yè)
操作系統(tǒng)課程設(shè)計(jì)之進(jìn)程調(diào)度_第3頁(yè)
操作系統(tǒng)課程設(shè)計(jì)之進(jìn)程調(diào)度_第4頁(yè)
操作系統(tǒng)課程設(shè)計(jì)之進(jìn)程調(diào)度_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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)介

目錄成績(jī)?cè)u(píng)定表任務(wù)書三.計(jì)目的意義、設(shè)計(jì)內(nèi)容四.計(jì)方案〔軟硬件環(huán)境,開發(fā)工具或語(yǔ)言選擇及思路〕五.程序功能模塊設(shè)計(jì)〔程序功能模塊劃分及層次等〕六.程序總控流程圖七.?dāng)?shù)據(jù)構(gòu)造設(shè)計(jì)八.程序代碼構(gòu)造〔函數(shù)調(diào)用關(guān)系或類層次關(guān)系〕九.程序主要代碼解析十.測(cè)試數(shù)據(jù)及測(cè)試結(jié)果十一.設(shè)計(jì)過(guò)程中遇到的問(wèn)題及解決方法十二.結(jié)論〔系統(tǒng)實(shí)現(xiàn)情況、系統(tǒng)特點(diǎn)、設(shè)計(jì)體會(huì)及收獲等〕十三.目前資料搜集情況〔含指定參考資料〕二.任務(wù)書:課程設(shè)計(jì)題目模擬進(jìn)程調(diào)度功能的設(shè)計(jì)與實(shí)現(xiàn)學(xué)院計(jì)算機(jī)學(xué)院專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)年級(jí)2022級(jí)參數(shù)和設(shè)計(jì)要求:運(yùn)用課堂學(xué)習(xí)的操作系統(tǒng)理論知識(shí),參考操作系統(tǒng)課程里講述的文件系統(tǒng)有關(guān)算法,用C、C++或JAVA語(yǔ)言編程,模擬實(shí)現(xiàn)普通操作系統(tǒng)的進(jìn)程調(diào)度功能。本課程設(shè)計(jì)目的如下:1)編程實(shí)現(xiàn)模擬操作系統(tǒng)進(jìn)程調(diào)度子系統(tǒng)的根本功能;理解進(jìn)程調(diào)度的概念,通過(guò)課程設(shè)計(jì)深化理解進(jìn)程控制塊的功能、進(jìn)程的創(chuàng)立、刪除以及進(jìn)程各個(gè)狀態(tài)間的轉(zhuǎn)換過(guò)程;實(shí)現(xiàn)先來(lái)先效勞、時(shí)間片輪轉(zhuǎn)、多級(jí)反響輪轉(zhuǎn)法對(duì)進(jìn)程進(jìn)展的調(diào)度過(guò)程;通過(guò)觀察有關(guān)的隊(duì)列構(gòu)造的內(nèi)容的動(dòng)態(tài)變化過(guò)程深化體會(huì)各個(gè)調(diào)度算法的特點(diǎn);從而可以更好的穩(wěn)固從書本上學(xué)到的知識(shí)。2)編程過(guò)程中需要建立隊(duì)列等構(gòu)造進(jìn)展各種操作,通過(guò)該次試驗(yàn),可以催促學(xué)生從實(shí)用的角度對(duì)?數(shù)據(jù)構(gòu)造?課程內(nèi)容進(jìn)展更深化理解和更純熟的應(yīng)用。3)實(shí)驗(yàn)編程語(yǔ)言要求使用java語(yǔ)言或C++語(yǔ)言。通過(guò)對(duì)調(diào)度功能的編程實(shí)現(xiàn),不但能有效訓(xùn)練學(xué)生對(duì)編程語(yǔ)言的純熟使用,還能促進(jìn)學(xué)生獨(dú)立考慮解決問(wèn)題、以及獨(dú)立查新獲取知識(shí)的才能。操作系統(tǒng)課程設(shè)計(jì)報(bào)告要求:按要求格式和紙張寫出設(shè)計(jì)報(bào)告,報(bào)告正文內(nèi)容如下:設(shè)計(jì)目的意義、設(shè)計(jì)內(nèi)容設(shè)計(jì)方案〔軟硬件環(huán)境,開發(fā)工具或語(yǔ)言選擇及思路等〕3、程序功能模塊設(shè)計(jì)〔程序功能模塊劃分及層次等〕4、程序總控流程圖4、數(shù)據(jù)構(gòu)造設(shè)計(jì)6、程序代碼構(gòu)造〔函數(shù)調(diào)用關(guān)系或類層次關(guān)系〕7、程序主要代碼解析8、測(cè)試數(shù)據(jù)及測(cè)試結(jié)果9、設(shè)計(jì)過(guò)程中遇到的問(wèn)題及解決方法10、結(jié)論〔系統(tǒng)實(shí)現(xiàn)情況、系統(tǒng)特點(diǎn)、設(shè)計(jì)體會(huì)及收獲等?!硤?bào)告字?jǐn)?shù)要求:3000評(píng)分標(biāo)準(zhǔn)〔1〕設(shè)計(jì)報(bào)告情況;〔2〕、運(yùn)行演示情況;〔3〕教師質(zhì)疑答復(fù)情況;〔4〕、算法難易程度;〔5〕、協(xié)作配合情況學(xué)生應(yīng)完成的工作:實(shí)現(xiàn)進(jìn)程調(diào)度子系統(tǒng)如下功能模塊:1〕實(shí)現(xiàn)進(jìn)程相關(guān)數(shù)據(jù)構(gòu)造〔如進(jìn)程控制塊task_struct〕的創(chuàng)立和查看功能。2〕實(shí)現(xiàn)多種進(jìn)程調(diào)度算法:先來(lái)先效勞算法、優(yōu)先級(jí)調(diào)度算法、時(shí)間片輪轉(zhuǎn)法、多級(jí)反響輪轉(zhuǎn)法等。3〕實(shí)現(xiàn)對(duì)執(zhí)行進(jìn)程的阻塞,對(duì)等待進(jìn)程的喚醒等功能。4〕實(shí)現(xiàn)相關(guān)隊(duì)列在進(jìn)程調(diào)度中的動(dòng)態(tài)變化過(guò)程。分組要求:可按班級(jí)自由組合小組成員,一組2-3人組成。注意:希望同組同學(xué)分工明確,團(tuán)結(jié)協(xié)作。每位同學(xué)需交課程設(shè)計(jì)報(bào)告〔主要寫自己負(fù)責(zé)部分〕。小組成員及分工情況:由學(xué)生填寫目前資料搜集情況〔含指定參考資料〕:著作:[1]張堯?qū)W,史美林.計(jì)算機(jī)操作系統(tǒng)教程第2版.清華大學(xué)出版社2000年著作:[2]張堯?qū)W.計(jì)算機(jī)操作系統(tǒng)教程第2版習(xí)題與實(shí)驗(yàn)指導(dǎo).2000年課程設(shè)計(jì)的工作方案:課程設(shè)計(jì)的時(shí)間為一周,上機(jī)時(shí)間共20學(xué)時(shí)。工作方案如下:星期一:準(zhǔn)備工作,理解、分析設(shè)計(jì)要求。總體方案設(shè)計(jì),確定組內(nèi)分工。星期二:程序模塊構(gòu)造設(shè)計(jì),模塊層次調(diào)用關(guān)系、模塊之間接口約定。星期三:程序設(shè)計(jì)、模塊測(cè)試。星期四:程序設(shè)計(jì)、模塊集成;總體測(cè)試;寫課程設(shè)計(jì)報(bào)告。星期五:完善程序和報(bào)告。向教師提交課程設(shè)計(jì)報(bào)告和程序。任務(wù)下達(dá)日期2022年6月20日完成日期2022年6月26日指導(dǎo)教師〔簽名〕學(xué)生〔簽名〕三.設(shè)計(jì)目的意義、設(shè)計(jì)內(nèi)容1.編程實(shí)現(xiàn)模擬操作系統(tǒng)進(jìn)程調(diào)度子系統(tǒng)的根本功能;理解進(jìn)程調(diào)度的概念,通過(guò)課程設(shè)計(jì)深化理解進(jìn)程控制塊的功能、進(jìn)程的創(chuàng)立、刪除以及進(jìn)程各個(gè)狀態(tài)間的轉(zhuǎn)換過(guò)程;實(shí)現(xiàn)先來(lái)先效勞、時(shí)間片輪轉(zhuǎn)、多級(jí)反響輪轉(zhuǎn)法對(duì)進(jìn)程進(jìn)展的調(diào)度過(guò)程;通過(guò)觀察有關(guān)的隊(duì)列構(gòu)造的內(nèi)容的動(dòng)態(tài)變化過(guò)程深化體會(huì)各個(gè)調(diào)度算法的特點(diǎn);從而可以更好的穩(wěn)固從書本上學(xué)到的知識(shí)。2.編程過(guò)程中需要建立隊(duì)列等構(gòu)造進(jìn)展各種操作,通過(guò)該次試驗(yàn),可以催促學(xué)生從實(shí)用的角度對(duì)?數(shù)據(jù)構(gòu)造?課程內(nèi)容進(jìn)展更深化理解和更純熟的應(yīng)用。3.實(shí)驗(yàn)編程語(yǔ)言要求使用java語(yǔ)言或C++語(yǔ)言。通過(guò)對(duì)調(diào)度功能的編程實(shí)現(xiàn),不但能有效訓(xùn)練學(xué)生對(duì)編程語(yǔ)言的純熟使用,還能促進(jìn)學(xué)生獨(dú)立考慮解決問(wèn)題、以及獨(dú)立查新獲取知識(shí)的才能。四.設(shè)計(jì)方案〔軟硬件環(huán)境,開發(fā)工具或語(yǔ)言選擇及思路等〕<1>設(shè)計(jì)環(huán)境平臺(tái):該軟件在WindowsXP,JDK1.6<2>開發(fā)工具:eclipse+designer<3>設(shè)計(jì)思路:1、進(jìn)程概念:進(jìn)程是被獨(dú)立分配資源的最小單位。進(jìn)程是動(dòng)態(tài)概念,必須程序運(yùn)行才有進(jìn)程的產(chǎn)生。2、進(jìn)程的狀態(tài)模型:〔1〕運(yùn)行:進(jìn)程已獲得處理機(jī),當(dāng)前處于運(yùn)行狀態(tài)?!?〕就緒:進(jìn)程已經(jīng)準(zhǔn)備好,一旦有處理器就可運(yùn)行?!?〕阻塞:進(jìn)程因?yàn)榘l(fā)生某事件而暫停執(zhí)行,亦即進(jìn)程的執(zhí)行受到阻塞。3、處理機(jī)調(diào)度:在多道程序設(shè)計(jì)系統(tǒng)中,內(nèi)存中有多道程序運(yùn)行,他們互相爭(zhēng)奪處理機(jī)這一重要的資源。處理機(jī)調(diào)度就是從就緒隊(duì)列中,按照一定的算法選擇一個(gè)進(jìn)程并將處理機(jī)分配給它運(yùn)行,以實(shí)現(xiàn)進(jìn)程并發(fā)地執(zhí)行。4、進(jìn)程調(diào)度算法的功能記錄系統(tǒng)中所有進(jìn)程的執(zhí)行情況選擇占有處理機(jī)的進(jìn)程進(jìn)展進(jìn)程的上下文切換5、進(jìn)程調(diào)度的算法:〔1〕先來(lái)先效勞算法:最先進(jìn)入等待隊(duì)列的進(jìn)程先執(zhí)行,進(jìn)程完畢后執(zhí)行下一個(gè)進(jìn)程。這是最簡(jiǎn)單的處理機(jī)調(diào)度算法,其根本思想是按照進(jìn)程進(jìn)入就緒隊(duì)列的先后順序調(diào)度并分配處理機(jī)執(zhí)行。先來(lái)先效勞調(diào)度算法是一種不可搶占的算法,先進(jìn)入就緒隊(duì)列的進(jìn)程,先費(fèi)培處理機(jī)運(yùn)行。一旦一個(gè)進(jìn)程占有了處理機(jī),它就一直運(yùn)行下去,知道該進(jìn)程完成工作或者因?yàn)榈却呈录荒芾^續(xù)運(yùn)行時(shí)才釋放處理機(jī)〔2〕優(yōu)先數(shù)算法:即進(jìn)程的執(zhí)行順序由高優(yōu)先級(jí)到低優(yōu)先級(jí)。系統(tǒng)或用戶按某種原那么為進(jìn)程指定一個(gè)優(yōu)先級(jí)來(lái)表示該進(jìn)程所享有確實(shí)調(diào)度優(yōu)先權(quán)。該算法核心是確定進(jìn)程的優(yōu)先級(jí)?!?〕時(shí)間片輪轉(zhuǎn)算法:固定時(shí)間片,每個(gè)進(jìn)程在執(zhí)行一個(gè)時(shí)間片后,輪到下一進(jìn)程執(zhí)行,知道所有的進(jìn)程執(zhí)行完畢。處理器同一個(gè)時(shí)間只能處理一個(gè)任務(wù)。處理器在處理多任務(wù)的時(shí)候,就要看懇求的時(shí)間順序,假設(shè)時(shí)間一致,就要進(jìn)展預(yù)測(cè)。挑到一個(gè)任務(wù)后,需要假設(shè)干步驟才能做完,這些步驟中有些需要處理器參與,有些不需要〔如磁盤控制器的存儲(chǔ)過(guò)程〕。不需要處理器處理的時(shí)候,這部分時(shí)間就要分配給其他的進(jìn)程。原來(lái)的進(jìn)程就要處于等待的時(shí)間段上。經(jīng)過(guò)周密分配時(shí)間,宏觀上就象是多個(gè)任務(wù)一起運(yùn)行一樣,但微觀上是有先后的,就是時(shí)間片輪換。(4)多級(jí)反響輪轉(zhuǎn)法:把系統(tǒng)中的所有進(jìn)程分成假設(shè)干個(gè)具有不同優(yōu)先級(jí)別的組,同一組的進(jìn)程都具有與所在組同樣的優(yōu)先級(jí)別,并且把每組進(jìn)程組織成一個(gè)先進(jìn)先出的隊(duì)列。在設(shè)計(jì)時(shí),按優(yōu)先級(jí)別越高的組中的進(jìn)程應(yīng)得時(shí)間片越短的原那么分配時(shí)間片。在調(diào)度時(shí),調(diào)度器每次都從優(yōu)先級(jí)別高的就緒隊(duì)列中隊(duì)首選擇就緒進(jìn)程。當(dāng)在高優(yōu)先級(jí)別的隊(duì)列中找不到就緒進(jìn)程時(shí),才到低優(yōu)先級(jí)別的就緒進(jìn)程隊(duì)列中選取。注:優(yōu)先數(shù)算法時(shí)間片輪轉(zhuǎn)法多級(jí)反響隊(duì)列調(diào)度法五.程序功能模塊設(shè)計(jì)1.模擬進(jìn)程調(diào)度算法模塊界面模塊進(jìn)程調(diào)度模塊事件模塊先來(lái)先效勞算法模塊優(yōu)先數(shù)算法模塊時(shí)間片輪轉(zhuǎn)算法模塊多級(jí)反響隊(duì)列調(diào)度法模塊六.程序總控流程圖開始開始創(chuàng)立進(jìn)程及屬性創(chuàng)立進(jìn)程及屬性選擇算法選擇算法先來(lái)先效勞算法優(yōu)先數(shù)算法時(shí)閭片輪轉(zhuǎn)法先來(lái)先效勞算法優(yōu)先數(shù)算法時(shí)閭片輪轉(zhuǎn)法多級(jí)反響隊(duì)列調(diào)度法顯示進(jìn)程執(zhí)行狀態(tài)顯示進(jìn)程執(zhí)行狀態(tài)完畢完畢七.?dāng)?shù)據(jù)構(gòu)造設(shè)計(jì)本組在實(shí)現(xiàn)進(jìn)程調(diào)度算法時(shí)采用了一個(gè)有特色的模擬方式———線程模擬進(jìn)程。數(shù)據(jù)構(gòu)造設(shè)計(jì)如下:創(chuàng)立JAVA中的thread對(duì)象,并將創(chuàng)立好的各個(gè)對(duì)象放入數(shù)據(jù)容器Vector〔〕中,各個(gè)調(diào)度算法對(duì)個(gè)進(jìn)程的排序,其實(shí)就是對(duì)vector中的thread對(duì)象排序,決定其執(zhí)行順序。八.程序代碼構(gòu)造〔函數(shù)調(diào)用關(guān)系或類層次關(guān)系〕開始執(zhí)行:publicclassMainThread——>彈出程序運(yùn)行窗口——>選擇進(jìn)程調(diào)度算法{comboBox.getSelectedItem()=="Pri;comboBox.getSelectedItem()=="T_Slice";comboBox.getSelectedItem()=="M_FB_Slice"}——>創(chuàng)立進(jìn)程:從窗體控件獲取相應(yīng)參數(shù)創(chuàng)立進(jìn)程newRefreshList(list_3,list_1,list_2,textField_3).run()——>對(duì)進(jìn)程進(jìn)展控制:阻塞〔首先判斷有無(wú)進(jìn)程在執(zhí)行:JOptionPane.showMessageDialog(null,"已經(jīng)無(wú)進(jìn)程處于運(yùn)行狀態(tài),請(qǐng)創(chuàng)立進(jìn)程!"),假設(shè)有,那么終止執(zhí),行將執(zhí)行進(jìn)程從就緒隊(duì)列調(diào)入等待隊(duì)列: v1.addElement(v2.get(0)); v11.addElement(v0.get(0)); v2.remove(0); v0.remove(0); list_2.setListData(v11); list_1.setListData(v0);〕;喚醒:將等待隊(duì)列中的進(jìn)程重新調(diào)入就緒隊(duì)列的對(duì)尾九.程序主要代碼解析publicvoidrun(){ if(MainForm.algorithm.equals("T_Slice")){ execute_T_Slice(); refresh(); }elseif(MainForm.algorithm.equals("M_FB_Slice")){ //S executeM_T_Slice(); refresh(); }else{ execute(); refresh(); } }publicvoidrefresh()//刷新列表,并且執(zhí)行下一個(gè)進(jìn)程{ MainForm.list_1.setListData(MainForm.v0); if(MainForm.v0.size()>0){ MainForm.textField_3.setText((String)MainForm.v0.get(0)); }else MainForm.textField_3.setText("無(wú)進(jìn)程"); if(k<MainForm.n){ ShowInfoshow=newShowInfo(); show.setVisible(true); Threadt=newThread(show); t.start(); }//進(jìn)程執(zhí)行過(guò)程}publicvoidexecute(){//FCFS和優(yōu)先級(jí)調(diào)度算法 intmaximum=progressBar.getMaximum(); progress=((CrtProcess)MainForm.v2.get(0)).getProgress(); label_3.setText(((CrtProcess)MainForm.v2.get(0)).getProcessName()); label_4.setText(((CrtProcess)MainForm.v2.get(0)).getUserName()); inti=progress; while(i<maximum){ try{ //intvalue=progressBar.getValue(); intvalue=progress; source=MainForm.resource; if(MainForm.resource==true){ progress=value+1; progressBar.setValue(progress); CrtProcessprocess=(CrtProcess)MainForm.v2.get(0); process.setProgress(progress); MainForm.v2.remove(0); MainForm.v2.add(0,process); Thread.sleep(DELAY); i++; prog++; }else{ this.setVisible(false); MainForm.resource=true; break; } }catch(InterruptedExceptionignoredException){ } } if(source==true){ MainForm.v2.remove(0); MainForm.v0.remove(0); k++;//記錄已經(jīng)執(zhí)行完畢的進(jìn)程 this.setVisible(false); //process.setFinished(true); }else{ k++; } source=true;}publicvoidexecute_T_Slice(){//時(shí)間片輪轉(zhuǎn)算法 intmaximum=progressBar.getMaximum(); inti=0; progress=((CrtProcess)MainForm.v2.get(0)).getProgress();label_3.setText(((CrtProcess)MainForm.v2.get(0)).getProcessName()); label_4.setText(((CrtProcess)MainForm.v2.get(0)).getUserName()); inttime=((CrtProcess)MainForm.v2.get(0)).getTime_Slice(); doublepercent=1.0; if(time>MainForm.cpuTime_Slice){ percent=MainForm.cpuTime_Slice/time;//進(jìn)度條的比例 } while(progress<maximum&&i<percent*maximum){ try{ intvalue=progressBar.getValue(); source=MainForm.resource; if(MainForm.resource==true){ progress=value+1; progressBar.setValue(progress); ((CrtProcess)MainForm.v2.get(0)).setProgress(progress); Thread.sleep(DELAY*time); i++; }else{ this.setVisible(false); MainForm.resource=true; break; } }catch(InterruptedExceptionignoredException){ } } if(source==true&&percent==1.0){ MainForm.v2.remove(0); MainForm.v0.remove(0); k++;//記錄已經(jīng)執(zhí)行完畢的進(jìn)程 this.setVisible(false); } if(source==true&&percent!=1.0){ CrtProcessprocess=(CrtProcess)MainForm.v2.get(0); process.setTime_Slice(time-(int)MainForm.cpuTime_Slice); MainForm.v2.remove(0); MainForm.v0.remove(0); MainForm.v2.addElement(process); MainForm.v0.addElement(process.getProcessName()); k++; MainForm.n++; this.setVisible(false); } if(source==false) k++; source=true;}publicvoidexecuteM_T_Slice(){ for(inti=0;i<MainForm.vector_Num;i++) size[i]=MainForm.vQueue[i].size(); intmaximum=progressBar.getMaximum(); inti=0; progress=((CrtProcess)MainForm.v2.get(0)).getProgress();label_3.setText(((CrtProcess)MainForm.v2.get(0)).getProcessName()); label_4.setText(((CrtProcess)MainForm.v2.get(0)).getUserName()); inttime=((CrtProcess)MainForm.v2.get(0)).getTime_Slice(); doublepercent=1.0; if(time>MainForm.cpuTime_Slice){ percent=MainForm.cpuTime_Slice/time;//進(jìn)度條的比例 } while(progress<maximum&&i<percent*maximum){ try{ intvalue=progressBar.getValue(); source=MainForm.resource; if(MainForm.resource==true){ progress=value+1; progressBar.setValue(progress); ((CrtProcess)MainForm.v2.get(0)).setProgress(progress); Thread.sleep(DELAY*time); i++; }else{ this.setVisible(false); MainForm.resource=true; break; } }catch(InterruptedExceptionignoredException){ } } if(source==true&&percent==1.0){ MainForm.v2.remove(0); MainForm.v0.remove(0); k++;//記錄已經(jīng)執(zhí)行完畢的進(jìn)程 this.setVisible(false); } if(source==true&&percent!=1.0){ if(k<n-1){ CrtProcessprocess=(CrtProcess)MainForm.v2.get(0); process.setTime_Slice(time-(int)MainForm.cpuTime_Slice); MainForm.v2.remove(0); MainForm.v0.remove(0); for(i=0;i<MainForm.vector_Num;i++){ sum1+=size[i]; if(k<=sum1){ sum2=sum1+size[i+1]; MainForm.v2.add(sum2-k,process); MainForm.v0.add(sum2-k,process.getProcessName()); break; } } k++; MainForm.n++; this.setVisible(false); }// if(k==n-MainForm.vQueue[MainForm.vector_Num-1].size()-1&&MainForm.vQueue[MainForm.vector_Num-1].size()!=1){// process1.setTime_Slice(time-(int)MainForm.cpuTime_Slice);// k=0;// this.setVisible(false);// } if(source==false) k++; source=true; } }十.測(cè)試數(shù)據(jù)及測(cè)試結(jié)果時(shí)間片算法創(chuàng)立進(jìn)程進(jìn)程名54321時(shí)

溫馨提示

  • 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ù)網(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)論