操作系統(tǒng)課程設(shè)計(jì)報(bào)告資料_第1頁
操作系統(tǒng)課程設(shè)計(jì)報(bào)告資料_第2頁
操作系統(tǒng)課程設(shè)計(jì)報(bào)告資料_第3頁
操作系統(tǒng)課程設(shè)計(jì)報(bào)告資料_第4頁
操作系統(tǒng)課程設(shè)計(jì)報(bào)告資料_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上東莞理工學(xué)院操作系統(tǒng)課程設(shè)計(jì)報(bào)告學(xué) 院: 計(jì)算機(jī)學(xué)院 專 業(yè) 班 級: 13軟件工程1班 學(xué)號姓名評價提交時間: 2015/9/14 指導(dǎo)教師評閱意見:.項(xiàng)目名稱: 進(jìn)程與線程管理功能 一、設(shè)計(jì)目的用語言來模擬進(jìn)程和線程管理系統(tǒng),加深對進(jìn)程和線程的理解,掌握對進(jìn)程和線程各種狀態(tài)和管理的算法原理。二、環(huán)境條件系統(tǒng): WindowsXP、VMWare、Ubuntu Linux語言:C/C+開發(fā)工具:gcc/g+、Visual C+ 6.0三、設(shè)計(jì)內(nèi)容1. 項(xiàng)目背景計(jì)算機(jī)的硬件資源有限,為了提高內(nèi)存的利用率和系統(tǒng)的吞吐量,就要根據(jù)某種算法來管理進(jìn)程和線程的狀態(tài)從而達(dá)到目的。

2、進(jìn)程與線程管理功能完成基于優(yōu)先級的搶占式線程調(diào)度功能,完成進(jìn)程虛擬內(nèi)存管理功能。進(jìn)程與線程管理功能基本要求:完成基于優(yōu)先級的搶占式線程調(diào)度功能,完成進(jìn)程虛擬內(nèi)存管理功能。提高要求:(增加1項(xiàng)就予以加分)(1) 實(shí)現(xiàn)多種線程調(diào)度算法;(2)通過“公共信箱”進(jìn)行通信的機(jī)制,規(guī)定每一封信的大小為128字節(jié),實(shí)現(xiàn)兩個用戶進(jìn)程之間通過這個“公共信箱”進(jìn)行通信。(3) 實(shí)現(xiàn)多用戶進(jìn)程并發(fā)的虛擬內(nèi)存管理功能。(4) 實(shí)現(xiàn)用戶進(jìn)程間通信功能,并用生產(chǎn)者/消費(fèi)者問題測試進(jìn)程間通信功能的正確性。(5) 實(shí)現(xiàn)改進(jìn)型Clock頁面置換算法。(6) 實(shí)現(xiàn)Cache功能,采用FIFO替換算法。2. 擴(kuò)展內(nèi)容實(shí)現(xiàn)多種線程調(diào)

3、度算法:時間片輪轉(zhuǎn)調(diào)度算法4、 人員分工優(yōu)先級調(diào)度算法:鐘德新,莫友芝時間片輪轉(zhuǎn)調(diào)度算法:張德華,袁馬龍?jiān)O(shè)計(jì)報(bào)告由小組隊(duì)員共同完成。小組成員設(shè)計(jì)的代碼分工如下:鐘德新編寫的代碼:void Prinft()PCB *p;system(cls);/清屏p=run;/運(yùn)行隊(duì)列if(p!=NULL)p-next=NULL;cout當(dāng)前正在運(yùn)行的進(jìn)程:endl;cout進(jìn)程名稱t優(yōu)先數(shù)t還需要時間t已運(yùn)行時間t狀態(tài):endl;while(p!=NULL)coutprocnamettpritneedOftimettruntimettstatenext;coutendlendl;cout當(dāng)前的就緒隊(duì)列:en

4、dl; cout進(jìn)程名稱t優(yōu)先數(shù)t還需要時間t已運(yùn)行時間t狀態(tài):endl;p=ready;/就緒隊(duì)列while(p!=NULL)coutprocnamettpritneedOftimettruntimettstatenext;coutendlendl;cout當(dāng)前已經(jīng)完成的進(jìn)程:endl;/終止隊(duì)列cout進(jìn)程名稱t優(yōu)先數(shù)t還需要時間t已運(yùn)行時間t狀態(tài):endl; p=finish;while(p!=NULL)coutprocnamettpritneedOftimettruntimettstatenext; 這個函數(shù)是優(yōu)先級調(diào)度算法程序的界面函數(shù),主要為程序運(yùn)行時能夠直觀的顯示結(jié)果void i

5、nsert(PCB *p)PCB *S1,*S2;if(ready=NULL)/判斷隊(duì)列是否為空p-next = NULL;ready = p;/插入就緒隊(duì)列elseS1 = ready;S2 = S1;while(S1!=NULL)if(S1-pri = p-pri)/判斷優(yōu)先級大小S2 = S1;/置換位置S1 = S1-next; elsebreak;/跳出循環(huán)if(S2-pri = p-pri)S2-next = p;p-next = S1;elsep-next = ready;ready = p;這是程序優(yōu)先級排序的函數(shù),也是優(yōu)先級調(diào)度算法的核心思想函數(shù),對程序的優(yōu)先級通過指針進(jìn)行排

6、序,再將隊(duì)首的程序調(diào)入運(yùn)行隊(duì)列,通過置換的方法,將運(yùn)行隊(duì)列隊(duì)首即占用CPU的程序調(diào)入就緒隊(duì)列,如此循環(huán)直至所有程序終止為止。莫友芝編寫的代碼:void priority()run = ready;ready = ready-next;run-state = 運(yùn)行;while(run!=NULL) /*當(dāng)運(yùn)行隊(duì)列不空時,有進(jìn)程正在運(yùn)行*/Dtime(3);/調(diào)用延時函數(shù),延時3秒run-runtime=run-runtime+1;/運(yùn)行時間+1run-needOftime=run-needOftime-1;/完成需要時間-1run-pri=run-pri-1; /*/優(yōu)先級-1每運(yùn)行一次優(yōu)先數(shù)降

7、低1個單位*/if(run-needOftime=0) /*如所需時間為0將其插入完成隊(duì)列*/run-state = 完成;run-next = finish;finish = run;run=NULL; /*運(yùn)行隊(duì)列頭指針為空*/if(ready!=NULL) /*如就緒隊(duì)列不空*/run = ready;run-state = 運(yùn)行;ready = ready-next;else if(ready!=NULL)&(run-pri pri)/就緒隊(duì)列不為空,就緒隊(duì)列隊(duì)首優(yōu)先級大于運(yùn)行隊(duì)列隊(duì)首run-state=就緒;insert(run);/運(yùn)行中的進(jìn)程重新比較優(yōu)先級大小run = read

8、y;/對隊(duì)列隊(duì)首的進(jìn)程調(diào)入CPUrun-state = 運(yùn)行; ready = ready-next; Prinft(); /*輸出進(jìn)程PCB信息*/ 這是程序運(yùn)行時的實(shí)時程序,通過循環(huán)的方法在程序等候3秒后,調(diào)用德新設(shè)計(jì)的優(yōu)先級排序算法,進(jìn)行排序。void CTProcessOfPri()/創(chuàng)建進(jìn)程 PCB * Node; string c5=P1,P2,P3,P4,P5;/模擬設(shè)計(jì)5條進(jìn)程srand(int)time(0);/設(shè)置隨機(jī)種子for(int j = 0;j procname=cj;/為進(jìn)程名賦值Node-needOftime=1+(int)(15.0*rand()/(RAND_

9、MAX+1.0);/為進(jìn)程隨機(jī)分配占用CPU時間.Node-runtime = 0;/為運(yùn)行時間賦值Node-state =就緒;/設(shè)置初始狀態(tài)為“就緒”狀態(tài)Node-pri =1+(int)(20.0*rand()/(RAND_MAX+1.0);/為進(jìn)程隨機(jī)分配優(yōu)先數(shù). insert(Node);/出入就行隊(duì)列 隨機(jī)創(chuàng)建5個模擬程序,為其賦上初值后,調(diào)用優(yōu)先級排序函數(shù),進(jìn)行第一次排序張德華編寫的程序代碼: void insert(PCB *p)/時間片插入函數(shù) if(start-next=NULL) PCB *q=start; if(p-Arrive_timeArrive_time) sta

10、rt=p; p-next=q; q-next=NULL; end=q; else q-next=p; p-next=NULL; end=p; else PCB *q=start; PCB *s=start-next; while(s!=NULL) if(q-Arrive_time p-Arrive_time) p-next=q; start=p; return; else if(s-Arrive_time p-Arrive_time) q-next=p; p-next=s; return; else q=q-next; s=s-next; s-next=p; end=p; 這個是時間片插入函數(shù)

11、,也是輪轉(zhuǎn)調(diào)度模擬程序的核心函數(shù),首先對到達(dá)時間進(jìn)行排序,將隊(duì)首調(diào)入CPU后,運(yùn)行時間片的時間后,調(diào)入就緒隊(duì)列隊(duì)尾,等候下一次的資源.void firstin()/將就緒隊(duì)列的第一個進(jìn)程放入運(yùn)行隊(duì)列run=start; run-State=W;/改變其狀態(tài)start=start-next; 模擬占用CPU的函數(shù)void show(PCB *p)/輸出函數(shù) cout進(jìn)程名t到達(dá)時間t剩余時間t狀態(tài)n;/ if(run!=NULL)/如果運(yùn)行指針不為空,就輸出當(dāng)前正在運(yùn)行的進(jìn)程的PCBcoutnametArrive_timettNeed_timettStatenn; 這是一個程序初始值的輸出函數(shù),

12、驗(yàn)證輸入的各程序的初始值是否是預(yù)期輸入袁馬龍編寫的代碼:void create()/時間片算法創(chuàng)建進(jìn)程函數(shù) coutN; PCB *p; int Time_piece; start=NULL;/就緒隊(duì)列頭指針 finish=NULL;/完成隊(duì)列頭指針 run=NULL;/運(yùn)行隊(duì)列指針coutTime_piece; for(int i=1;i=N;i+)/輸入進(jìn)程名字和所需時間,創(chuàng)建進(jìn)程的PCB p=(PCB *)malloc(sizeof(PCB); cout請輸入第ip-name; coutp-Need_time; coutp-Arrive_time;Cpu_time=0; p-Count=

13、0;/計(jì)數(shù)器p-State=W;/進(jìn)程的初始狀態(tài)設(shè)為就緒W p-Time_piece=Time_piece;/時間片的初始值if(start!=NULL) insert(p);/若就緒隊(duì)列不為空,將其插入就緒隊(duì)列else/創(chuàng)建就緒隊(duì)列的第一個PCB p-next=start; start=p;/頭指針end=p;/尾指針 coutendlendlt使用時間片輪轉(zhuǎn)算法輸出結(jié)果:(W為就緒狀態(tài),F(xiàn)為終止?fàn)顟B(tài))n; coutnext; run-State=W; 這是一個設(shè)置程序運(yùn)行初始的條件函數(shù),如需要運(yùn)行的程序數(shù)目,程序名稱,運(yùn)行時間等,在調(diào)用德華設(shè)計(jì)的排序函數(shù)進(jìn)行排序,調(diào)入隊(duì)列中void rou

14、ndrobin()/時間片算法函數(shù)int m=0; while(run!=NULL) if(run-Arrive_timeCpu_time) Cpu_time=Cpu_time+1;/每運(yùn)行一次cputime加一else if(m=0) cout進(jìn)程nameNeed_time=run-Need_time-1;/每運(yùn)行一次needtime減一if(run-Need_time!=0) show(run); Cpu_time=Cpu_time+1;/每運(yùn)行一次cputime加一run-Count=run-Count+1;/每運(yùn)行一次計(jì)數(shù)器count加一if(run-Need_time=0)/若運(yùn)行完

15、后run-next=finish; finish=run;/將其插入完成隊(duì)列頭部run-State=F;/將其狀態(tài)改為完成態(tài)F show(run); cout進(jìn)程name結(jié)束nn; run=NULL;/將運(yùn)行隊(duì)列清空if(start!=NULL) firstin();/若就緒對列不空,將第一個進(jìn)程投入運(yùn)行cout進(jìn)程nameCount=run-Time_piece)/如果時間片到run-Count=0;/計(jì)數(shù)器置0 if(start!=NULL)/若就緒隊(duì)列不空run-State=W; insert2(run);/將進(jìn)程插入到就緒隊(duì)列中等待輪轉(zhuǎn)firstin();/將就緒隊(duì)列的第一個進(jìn)程投入運(yùn)

16、行cout進(jìn)程name開始nn; cout*n; 這是一個程序運(yùn)行結(jié)果的輸出函數(shù),輸出程序的結(jié)果內(nèi)容,在什么時間段完成,什么時間段到達(dá),以及程序的狀態(tài)等信息5、 設(shè)計(jì)過程進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨(dú)立單位。另有一種定義方法是“程序在處理器上的執(zhí)行”。為了模擬的方便,本設(shè)計(jì)采用這種定義。簡單地說,進(jìn)程包括三種狀態(tài):運(yùn)行狀態(tài)、就緒狀態(tài)、完成狀態(tài)優(yōu)先級調(diào)度算法:按照進(jìn)程的優(yōu)先級大小來調(diào)度,是高優(yōu)先級進(jìn)程得到優(yōu)先的處理的調(diào)度策略,可使用非搶占或可搶占兩種策略用C+模擬設(shè)計(jì)一個進(jìn)程模擬類class PCB public: string procname;/進(jìn)程名int pri

17、;/進(jìn)程優(yōu)先數(shù)string state;/進(jìn)程狀態(tài)int runtime;/進(jìn)程已運(yùn)行CPU時間int needOftime;/還需要時間PCB *next;/指針; 來記錄進(jìn)程的基本信息,如進(jìn)程名稱,優(yōu)先級,進(jìn)程狀態(tài),進(jìn)程運(yùn)行時間,進(jìn)程所需時間再設(shè)計(jì)模擬進(jìn)程所需要的各種算法,運(yùn)行調(diào)試結(jié)果時間片輪轉(zhuǎn)調(diào)度算法: 是一種最古老,最簡單,最公平且使用最廣的算法。每個進(jìn)程被分配一時間段,稱作它的時間片,即該進(jìn)程允許運(yùn)行的時間. 如果在時間片結(jié)束時進(jìn)程還在運(yùn)行,則CPU將被剝奪并分配給另一個進(jìn)程。如果進(jìn)程在時間片結(jié)束前阻塞或結(jié)束,則CPU當(dāng)即進(jìn)行切換。調(diào)度程序所要做的就是維護(hù)一張就緒進(jìn)程列表,當(dāng)進(jìn)程用完

18、它的時間片后,它被移到隊(duì)列的末尾.用C語言模擬設(shè)計(jì)一個類typedef struct node char name10; /進(jìn)程名int Time_piece;/時間片int Need_time; /還需要的時間int Count;/計(jì)數(shù)器char State;/進(jìn)程的狀態(tài)struct node *next;/鏈指針int Arrive_time;/到達(dá)時間 PCB;用這個類根據(jù)算法的基本思想來設(shè)計(jì)程序,模擬算法的運(yùn)行情況優(yōu)先級搶占式調(diào)度算法:(過程圖)時間片輪轉(zhuǎn)調(diào)度算法:(過程圖)六、運(yùn)行結(jié)果優(yōu)先級搶占式:時間片輪轉(zhuǎn)調(diào)度算法:七、結(jié)果分析程序的結(jié)果很好體現(xiàn)的進(jìn)程運(yùn)行的優(yōu)先級處理,對于優(yōu)先級高

19、的程序,采用搶占式,分配程序CPU使用,優(yōu)先級較低的進(jìn)入就緒隊(duì)列等待CPU資源而時間片輪轉(zhuǎn)調(diào)度算法也很好的實(shí)行預(yù)期情況,程序進(jìn)入CPU運(yùn)行時間片長度的時間后,調(diào)入就緒隊(duì)列隊(duì)尾,完成則進(jìn)入完成隊(duì)列。隊(duì)首調(diào)入CPU,占用資源,循環(huán)直到所有程序都進(jìn)入就緒隊(duì)列.八、設(shè)計(jì)總結(jié)1.設(shè)計(jì)基本實(shí)現(xiàn)了我們小組想要的功能和預(yù)測情況,雖然中間關(guān)于指針的使用我們做了許多的調(diào)試,但是我們還是做出來了。2.然后就是進(jìn)程算法的調(diào)用過程和知識,發(fā)現(xiàn)自己對知識的遺忘程度有點(diǎn)大,邊做邊補(bǔ),實(shí)驗(yàn)結(jié)束的會后發(fā)現(xiàn)自己的知識鞏固了不少。對操作系統(tǒng)的了解也更加深入了。3.和隊(duì)友合作然后團(tuán)隊(duì)意識有一定的提高附錄:優(yōu)先級搶占式調(diào)度算法:/優(yōu)先

20、級搶占式線程調(diào)度算法/#include stdlib.h #include #include #include using namespace std; int n; class PCB public: string procname;/進(jìn)程名int pri;/進(jìn)程優(yōu)先數(shù)string state;/進(jìn)程狀態(tài)int runtime;/進(jìn)程已運(yùn)行CPU時間int needOftime;/還需要時間PCB *next;/指針; PCB *run = NULL; /運(yùn)行隊(duì)列頭指針PCB *ready = NULL;/就緒隊(duì)列頭指針PCB *finish = NULL;/完成隊(duì)列頭指針/延時函數(shù),模擬C

21、PU占用時間/void Dtime(int t)/此代碼塊參考網(wǎng)上資料time_t current_time;time_t start_time;time(&start_time); dotime(& current_time);while(current_time-start_time)next=NULL;cout當(dāng)前正在運(yùn)行的進(jìn)程:endl;cout進(jìn)程名稱t優(yōu)先數(shù)t還需要時間t已運(yùn)行時間t狀態(tài):endl;while(p!=NULL)coutprocnamettpritneedOftimettruntimettstatenext;coutendlendl;cout當(dāng)前的就緒隊(duì)列:endl;

22、 cout進(jìn)程名稱t優(yōu)先數(shù)t還需要時間t已運(yùn)行時間t狀態(tài):endl;p=ready;/就緒隊(duì)列while(p!=NULL)coutprocnamettpritneedOftimettruntimettstatenext;coutendlendl;cout當(dāng)前已經(jīng)完成的進(jìn)程:endl;/終止隊(duì)列cout進(jìn)程名稱t優(yōu)先數(shù)t還需要時間t已運(yùn)行時間t狀態(tài):endl; p=finish;while(p!=NULL)coutprocnamettpritneedOftimettruntimettstatenext; /按優(yōu)先級大小插入就緒隊(duì)列void insert(PCB *p)PCB *S1,*S2;if

23、(ready=NULL)/判斷隊(duì)列是否為空p-next = NULL;ready = p;/插入就緒隊(duì)列elseS1 = ready;S2 = S1;while(S1!=NULL)if(S1-pri = p-pri)/判斷優(yōu)先級大小S2 = S1;/置換位置S1 = S1-next; elsebreak;/跳出循環(huán)if(S2-pri = p-pri)S2-next = p;p-next = S1;elsep-next = ready;ready = p;/實(shí)時運(yùn)行函數(shù)/void priority()run = ready;ready = ready-next;run-state = 運(yùn)行;wh

24、ile(run!=NULL) /*當(dāng)運(yùn)行隊(duì)列不空時,有進(jìn)程正在運(yùn)行*/Dtime(3);/調(diào)用延時函數(shù),延時3秒run-runtime=run-runtime+1;/運(yùn)行時間+1run-needOftime=run-needOftime-1;/完成需要時間-1run-pri=run-pri-1; /*/優(yōu)先級-1每運(yùn)行一次優(yōu)先數(shù)降低1個單位*/if(run-needOftime=0) /*如所需時間為0將其插入完成隊(duì)列*/run-state = 完成;run-next = finish;finish = run;run=NULL; /*運(yùn)行隊(duì)列頭指針為空*/if(ready!=NULL) /*

25、如就緒隊(duì)列不空*/run = ready;run-state = 運(yùn)行;ready = ready-next;else if(ready!=NULL)&(run-pri pri)/就緒隊(duì)列不為空,就緒隊(duì)列隊(duì)首優(yōu)先級大于運(yùn)行隊(duì)列隊(duì)首run-state=就緒;insert(run);/運(yùn)行中的進(jìn)程重新比較優(yōu)先級大小run = ready;/對隊(duì)列隊(duì)首的進(jìn)程調(diào)入CPUrun-state = 運(yùn)行; ready = ready-next; Prinft(); /*輸出進(jìn)程PCB信息*/ void CTProcessOfPri()/創(chuàng)建進(jìn)程 PCB * Node; string c5=P1,P2,P3,

26、P4,P5;/模擬設(shè)計(jì)5條進(jìn)程srand(int)time(0);/設(shè)置隨機(jī)種子for(int j = 0;j procname=cj;/為進(jìn)程名賦值Node-needOftime=1+(int)(15.0*rand()/(RAND_MAX+1.0);/為進(jìn)程隨機(jī)分配占用CPU時間.Node-runtime = 0;/為運(yùn)行時間賦值Node-state =就緒;/設(shè)置初始狀態(tài)為“就緒”狀態(tài)Node-pri =1+(int)(20.0*rand()/(RAND_MAX+1.0);/為進(jìn)程隨機(jī)分配優(yōu)先數(shù). insert(Node);/出入就行隊(duì)列 void main() cout*endl; co

27、ut* 優(yōu)先數(shù)調(diào)度算法*endl; cout*endl; cout按任意鍵開始創(chuàng)建進(jìn)程?endl; getchar();CTProcessOfPri();/新建進(jìn)程Prinft();/調(diào)用界面輸出函數(shù)coutendl; cout 按任意鍵開始運(yùn)行進(jìn)程模擬調(diào)度程序?next=NULL) PCB *q=start; if(p-Arrive_timeArrive_time) start=p; p-next=q; q-next=NULL; end=q; else q-next=p; p-next=NULL; end=p; else PCB *q=start; PCB *s=start-next; wh

28、ile(s!=NULL) if(q-Arrive_time p-Arrive_time) p-next=q; start=p; return; else if(s-Arrive_time p-Arrive_time) q-next=p; p-next=s; return; else q=q-next; s=s-next; s-next=p; end=p; void insert2(PCB *p) end-next=p;/將新的PCB插入在當(dāng)前就緒隊(duì)列的尾end=p; p-next=NULL; void show(PCB *p)/輸出函數(shù) cout進(jìn)程名t到達(dá)時間t剩余時間t狀態(tài)n;/ if(r

29、un!=NULL)/如果運(yùn)行指針不為空,就輸出當(dāng)前正在運(yùn)行的進(jìn)程的PCBcoutnametArrive_timettNeed_timettStatenn; void create()/時間片算法創(chuàng)建進(jìn)程函數(shù) coutN; PCB *p; int Time_piece; start=NULL;/就緒隊(duì)列頭指針 finish=NULL;/完成隊(duì)列頭指針 run=NULL;/運(yùn)行隊(duì)列指針coutTime_piece; for(int i=1;i=N;i+)/輸入進(jìn)程名字和所需時間,創(chuàng)建進(jìn)程的PCB p=(PCB *)malloc(sizeof(PCB); cout請輸入第ip-name; coutp-Need_time; coutp-Arrive_time;Cpu_time=0; p-Count=0;/計(jì)數(shù)器p-State=W;/進(jìn)程的初始狀態(tài)設(shè)為就緒W p-Ti

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論