2023年銀行家算法實(shí)驗(yàn)報(bào)告2_第1頁
2023年銀行家算法實(shí)驗(yàn)報(bào)告2_第2頁
2023年銀行家算法實(shí)驗(yàn)報(bào)告2_第3頁
2023年銀行家算法實(shí)驗(yàn)報(bào)告2_第4頁
2023年銀行家算法實(shí)驗(yàn)報(bào)告2_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

操作系統(tǒng)原理課程設(shè)計(jì)——銀行家算法指導(dǎo)老師:周敏唐洪英楊宏雨楊承玉傅由甲黃賢英院系:計(jì)算機(jī)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系班級(jí):0237-6學(xué)號(hào):姓名:朱應(yīng)瑜同組者:陳源時(shí)間:2023/12/22---2023/12/28目錄TOC\o"1-3"\h\zHYPERLINK\l"_Toc"一、?設(shè)計(jì)目的 PAGEREF_Toc\h3HYPERLINK二、?設(shè)計(jì)內(nèi)容?PAGEREF_Toc\h3HYPERLINK\l"_Toc"三、銀行家算法的基本思想 PAGEREF_Toc\h3HYPERLINK\l"_Toc"(一)死鎖?PAGEREF_Toc\h3HYPERLINK\l"_Toc"(二)系統(tǒng)安全狀態(tài)?PAGEREF_Toc\h4HYPERLINK\l"_Toc"(三)銀行家算法避免死鎖?PAGEREF_Toc\h4HYPERLINK1、銀行家算法中的數(shù)據(jù)結(jié)構(gòu) PAGEREF_Toc\h4HYPERLINK\l"_Toc"2、銀行家算法 PAGEREF_Toc\h4HYPERLINK\l"_Toc"3、安全性算法?PAGEREF_Toc\h5HYPERLINK四、系統(tǒng)模塊間關(guān)系圖 PAGEREF_Toc\h6HYPERLINK五、系統(tǒng)子模塊結(jié)構(gòu)圖 PAGEREF_Toc\h7HYPERLINK六、輸入、輸出數(shù)據(jù) PAGEREF_Toc\h9HYPERLINK\l"_Toc"七、源程序及系統(tǒng)文獻(xiàn)使用說明 PAGEREF_Toc\h12HYPERLINK\l"_Toc"(一)源程序 PAGEREF_Toc\h12HYPERLINK(二)系統(tǒng)文獻(xiàn)使用說明 PAGEREF_Toc\h25HYPERLINK\l"_Toc"八、心得體會(huì)?PAGEREF_Toc\h26HYPERLINK九、參考文獻(xiàn)?PAGEREF_Toc\h26銀行家算法設(shè)計(jì)目的本課程設(shè)計(jì)是學(xué)習(xí)完《計(jì)算機(jī)操作系統(tǒng)》課程后,進(jìn)行的一次全面的綜合訓(xùn)練。通過這次課程設(shè)計(jì),讓我們更好地掌握操作系統(tǒng)的原理及實(shí)現(xiàn)方法,加深對(duì)操作系統(tǒng)基礎(chǔ)理論和重要算法的理解,加強(qiáng)動(dòng)手能力。設(shè)計(jì)內(nèi)容編制銀行家算法通用程序,并檢測(cè)所給狀態(tài)的系統(tǒng)安全性。三、銀行家算法的基本思想(一)死鎖在多道程序系統(tǒng)中,雖可借助于多個(gè)進(jìn)程的并發(fā)執(zhí)行,來改善系統(tǒng)的資源運(yùn)用率,提高系統(tǒng)的吞吐量,但也許發(fā)生一種危險(xiǎn)——死鎖。所謂死鎖,是指多個(gè)進(jìn)程在運(yùn)營過程中因爭(zhēng)奪資源而導(dǎo)致的一種僵局,當(dāng)進(jìn)程處在這種僵持狀態(tài)時(shí),若無外力作用,它們都將無法再向前推動(dòng)。產(chǎn)生死鎖的因素可歸結(jié)為如下兩點(diǎn):(1)競(jìng)爭(zhēng)資源。(2)進(jìn)程間推動(dòng)順序非法。死鎖的發(fā)生必須具有下列四個(gè)必要條件:(1)互斥條件。(2)請(qǐng)求和保持條件。(3)不剝奪條件。(4)環(huán)路等待條件。(二)系統(tǒng)安全狀態(tài)避免死鎖的實(shí)質(zhì)在于:系統(tǒng)在進(jìn)行資源分派時(shí),如何使系統(tǒng)不進(jìn)入不安全狀態(tài)。所謂安全狀態(tài),是指系統(tǒng)能按某種進(jìn)程順序(P1,P2,……,Pn)(稱<P1,P2,……,Pn>序列為安全序列),來為每個(gè)進(jìn)程Pi分派其所需資源,直至滿足每個(gè)進(jìn)程對(duì)資源的最大需求,使每個(gè)進(jìn)程都可順利的完畢。假如系統(tǒng)無法找到這樣一個(gè)安全序列,則稱系統(tǒng)處在不安全狀態(tài)。(三)銀行家算法避免死鎖為實(shí)現(xiàn)銀行家算法,系統(tǒng)中必須設(shè)立若干數(shù)據(jù)結(jié)構(gòu)。1、銀行家算法中的數(shù)據(jù)結(jié)構(gòu)(1)可運(yùn)用資源向量Available。這是一個(gè)具有m個(gè)元素的數(shù)組,其中的每一個(gè)元素代表一類可運(yùn)用的資源數(shù)目,其初始值是系統(tǒng)中所配置的該類所有可用資源的數(shù)目,其數(shù)值隨該類資源的分派和回收而動(dòng)態(tài)地改變。Available[j]=K,則表達(dá)系統(tǒng)中現(xiàn)有Rj類資源K個(gè)。(2)最大需求矩陣Max。這是一個(gè)n*m的矩陣,它定義了系統(tǒng)中n個(gè)進(jìn)程中的每一個(gè)進(jìn)程對(duì)m類資源的最大需求。假如Max[i,j]=K,則表達(dá)進(jìn)程i需要Rj類資源的最大數(shù)目為K。(3)分派矩陣Allocation。這也是一個(gè)n*m的矩陣,它定義了系統(tǒng)中每一類資源當(dāng)前已分派給每一進(jìn)程的資源數(shù)。假如Allocation[i,j]=K,則表達(dá)進(jìn)程i當(dāng)前已分得Rj類資源的數(shù)目為K。(4)需求矩陣Need。這也是一個(gè)n*m的矩陣,用以表達(dá)每一個(gè)進(jìn)程尚需的各類資源數(shù)。假如Need[i,j]=K,則表達(dá)進(jìn)程i還需要Rj類資源K個(gè),方能完畢其任務(wù)。上述三個(gè)矩陣存在如下關(guān)系:Nee(cuò)d[i,j]=Max[i,j]-Allocation[i,j]2、銀行家算法設(shè)Request[i]是進(jìn)程Pi的請(qǐng)求向量,假如Request[i,j]=K,表達(dá)進(jìn)程需要K個(gè)Rj類型的資源。當(dāng)Pi發(fā)出資源請(qǐng)求后,系統(tǒng)按下述環(huán)節(jié)進(jìn)行檢查:(1)假如Request[i,j]<=Need[i,j],便轉(zhuǎn)向環(huán)節(jié)(2);否則認(rèn)為犯錯(cuò),由于它所需要的資源數(shù)已超過它所宣布的最大值。(2)假如Request[i,j]<=Available[j],便轉(zhuǎn)向環(huán)節(jié)(3);否則,表達(dá)尚無足夠資源,Pi須等待。(3)系統(tǒng)試探著把資源分派給進(jìn)程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:Available[j]=Available[j]-Request[i,j];Allocation[i,j]=Allocation[i,j]+Request[i,j];Nee(cuò)d[i,j]=Need[i,j]-Request[i,j];(4)系統(tǒng)執(zhí)行安全性算法,檢查本次資源分派后,系統(tǒng)是否處在安全狀態(tài)。若安全,才正式將資源分派給進(jìn)程Pi,以完畢本次分派;否則,將本次的試探分派作廢,恢復(fù)本來的資源分派狀態(tài),讓進(jìn)程Pi等待。3、安全性算法系統(tǒng)所執(zhí)行的安全性算法可描述如下:(1)設(shè)立兩個(gè)向量:①工作向量Wo(hù)rk:它表達(dá)系統(tǒng)可提供應(yīng)進(jìn)程繼續(xù)運(yùn)營所需要的各類資源數(shù)目,它具有m個(gè)元素,在執(zhí)行安全算發(fā)開始時(shí),Work=Available;②Finish:它表達(dá)系統(tǒng)是否有足夠的資源分派給進(jìn)程,使之運(yùn)營完畢。開始時(shí)先做Finish[i]=false;當(dāng)有足夠資源分派給進(jìn)程時(shí),再令Finish[i]=true。(2)從進(jìn)程集合中找到一個(gè)能滿足下述條件的進(jìn)程:①Finish[i]=false;②Need[i,j]<=Work[j];若找到,執(zhí)行環(huán)節(jié)(3),否則,執(zhí)行環(huán)節(jié)(4)。(3)當(dāng)進(jìn)程Pi獲得資源后,可順利執(zhí)行,直至完畢,并釋放出分派給它的資源,故應(yīng)執(zhí)行:Wo(hù)rk[j]=Work[i]+Allocat(yī)ion[i,j];Finish[i]=true;gotostep2;(4)假如所有進(jìn)程的Finish[i]=true都滿足,則表達(dá)系統(tǒng)處在安全狀態(tài);否則,系統(tǒng)處在不安全狀態(tài)。四、系統(tǒng)模塊間關(guān)系圖五、系統(tǒng)子模塊結(jié)構(gòu)圖六、輸入、輸出數(shù)據(jù)執(zhí)行程序,輸入數(shù)據(jù)之前:現(xiàn)在請(qǐng)分別輸入相應(yīng)的進(jìn)程號(hào)、資源號(hào)和個(gè)數(shù):現(xiàn)在請(qǐng)選擇1或2:選擇了1后:由于未通過安全性測(cè)試,不予以分派,所以一切數(shù)據(jù)均無變化。點(diǎn)擊了1后:現(xiàn)在又請(qǐng)分別輸入其它需要測(cè)試的進(jìn)程號(hào)、資源號(hào)和個(gè)數(shù):現(xiàn)在請(qǐng)選擇1或2:選擇了1后:由于通過了安全性測(cè)試,并找到了一個(gè)安全序列,所以分派成功,有關(guān)數(shù)據(jù)均要發(fā)生變化。(請(qǐng)對(duì)照前后數(shù)據(jù)及所輸入的數(shù)據(jù)進(jìn)行比較)資源類型1的可運(yùn)用資源由4變成3;進(jìn)程2的資源類型1的已分派資源由2變成3;進(jìn)程2的資源類型1的已需求資源由1變成0;點(diǎn)擊了1后:七、源程序及系統(tǒng)文獻(xiàn)使用說明(一)源程序#include"stdafx.h"#include<iostream.h>#include<fstream.h>#include<windows.h>#include<stdlib.h>#defineMAX_PROCESS32//最大進(jìn)程數(shù)#defineMAX_COURCE64//最大資源類別intMAX_FACT_PROCESS;//實(shí)際總進(jìn)程數(shù)intMAX_FACT_COURCE;//實(shí)際資源類別數(shù)intAvailable[MAX_COURCE];//可運(yùn)用資源向量intMax[MAX_PROCESS][MAX_COURCE];//最大需求矩陣intAllocation[MAX_PROCESS][MAX_COURCE];//分派矩陣intNeed[MAX_PROCESS][MAX_COURCE];//需求矩陣intRequest_PROCESS;//發(fā)出請(qǐng)求的進(jìn)程intRequest_COURCE;//被請(qǐng)求資源類別intRequest_COURCE_NEMBER;//請(qǐng)求資源數(shù)boolloop=true;structCOMP{ intvalue; intnum;?intnext;};intflag=0;voidRead_Initiat(yī)e(void) ?//讀入初始化文檔{?ifstreaminfile("Initiate.txt");?if(!infile) {? cout<<"不能打開輸入文獻(xiàn):"<<"Initiate.txt"<<endl; ?exit(1); }?cout<<"開始讀入初始化文檔"<<endl; intch; intArray[MAX_PROCESS*MAX_COURCE*2]; intnum=0; while(infile>>ch)//初始化文檔的第一個(gè)數(shù)字為長(zhǎng)度 ?Array[num++]=ch; num=0;?MAX_FACT_COURCE=Array[num++]; for(intj=0;j<MAX_FACT_COURCE;j++)??Available[j]=Array[num++];?MAX_FACT_PROCESS=Array[num++]; for(inti=0;i<MAX_FACT_PROCESS;i++) {??for(intj=0;j<MAX_FACT_COURCE;j++)???Max[i][j]=Array[num++];?}?infile.close();}voidWrite_Initiate(void) ??//寫入初始化文檔(分派資源){ ofstreamoutfile("Initiate.txt"); if(!outfile) { ?cout<<"不能打開初始化文檔:"<<endl;??exit(1);?} intArray[MAX_PROCESS*MAX_COURCE*2]; intnum=0;?Array[num++]=MAX_FACT_COURCE;?for(inti=0;i<MAX_FACT_COURCE;i++) Array[num++]=Available[i];?Array[num++]=MAX_FACT_PROCESS;?for(i=0;i<MAX_FACT_PROCESS;i++)? for(intj=0;j<MAX_FACT_COURCE;j++)???Array[num++]=Max[i][j];?num=0;?outfile<<Array[num++]<<""; for(i=0;i<MAX_FACT_COURCE;i++) outfile<<Array[num++]<<""; outfile<<endl<<Array[num++]<<endl;?for(i=0;i<MAX_FACT_PROCESS;i++)?{ ?for(intj=0;j<MAX_FACT_COURCE;j++) outfile<<Array[num++]<<""; outfile<<endl; }?intm_delay=3000;?Sleep(m_delay);?outfile.close(); cout<<"修改初始化文檔成功!"<<endl;}voidAllocated_list(void)? //讀入已分派資源列表{ ifstreaminfile("Allocated_list.txt");?if(?。閚file)?{ cout<<"不能打開輸入文獻(xiàn):"<<"Allocated_list.txt"<<endl; exit(1); }?cout<<"開始讀入已分派資源列表"<<endl;?intch;?intnum=0; intArray[MAX_PROCESS*MAX_COURCE]; while(infile>>ch)? Array[num++]=ch; num=0; for(inti=0;i<MAX_FACT_PROCESS;i++) for(intj=0;j<MAX_FACT_COURCE;j++)? ?Allocation[i][j]=Array[num++];?infile.close();}voidSet_Need(void)? ? //設(shè)立需求矩陣{ cout<<"設(shè)立需求矩陣"<<endl;?for(inti=0;i<MAX_FACT_PROCESS;i++)? for(intj=0;j<MAX_FACT_COURCE;j++) ? Need[i][j]=Max[i][j]-Allocation[i][j];}voidWrite_Allocation(void)?? //修改資源分派列表(資源分派){?ofstreamoutfile("Allocated_list.txt");?if(!outfile)?{ cout<<"不能打開資源分派列表:"<<endl; exit(1);?}?for(inti=0;i<MAX_FACT_PROCESS;i++)?{? for(intj=0;j<MAX_FACT_COURCE;j++)?? outfile<<Allocation[i][j]<<"";? outfile<<endl; }?intm_delay=3000;?Sleep(m_delay); cout<<"修改資源分派列表成功!"<<endl;?outfile.close();}voidAllocate_Source(void)? //開始分派(已通過掃描和安全性檢測(cè)){?cout<<endl<<"開始給第"<<Request_PROCESS<<"個(gè)進(jìn)程分派第"<<Request_COURCE<<"類資源"<<Request_COURCE_NEMBER<<"個(gè)"<<endl;?Write_Initiate(); Write_Allocation();?intm_delay=3000; Sleep(m_delay); cout<<endl<<"祝賀您,資源分派已成功!"<<endl;}boolTest_Safty() ?//安全性檢測(cè){?cout<<endl<<"進(jìn)入安全性檢測(cè)!"<<endl; intWork[MAX_COURCE]; for(inti=0;i<MAX_FACT_COURCE;i++)?{??Work[i]=Available[i]; }?boolFinish[MAX_PROCESS][MAX_COURCE];?for(i=0;i<MAX_FACT_PROCESS;i++) for(intj=0;j<MAX_FACT_COURCE;j++) ?Finish[i][j]=false;?COMPArray[32];?for(i=0;i<MAX_FACT_PROCESS;i++) { ?Array[i].value=Need[i][Request_COURCE-1];?Array[i].num=i;?} for(i=0;i<MAX_FACT_PROCESS;i++) for(intj=i+1;j<MAX_FACT_PROCESS;j++)??{?? if(Array[i].value>=Array[j].value) ?{ ?? intt;? ??t=Array[j].value; ??Array[j].value=Array[i].value; ?Array[i].value=t; ???t=Array[j].num; ?? Array[j].num=Array[i].num; ? Array[i].num=t; }???elsecontinue; } intm_delay=3000;?Sleep(m_delay);?if(Finish[Request_PROCESS-1][Request_COURCE-1]==false&&Need[Request_PROCESS-1][Request_COURCE-1]<=Work[Request_COURCE-1]) { ?Work[Request_COURCE-1]=Work[Request_COURCE-1]+Allocation[Request_PROCESS-1][Request_COURCE-1];??Finish[Request_PROCESS-1][Request_COURCE-1]=true;?} else {??cout<<"未通過安全性測(cè)試,不與以分派"<<endl; ?returnfalse; }?for(i=0;i<MAX_FACT_PROCESS;i++) {??if(Array[i].num==Request_PROCESS-1) ?continue;??if(Array[i].num!=Request_PROCESS-1&&Finish[Array[i].num][Request_COURCE-1]==false&&Nee(cuò)d[Array[i].num][Request_COURCE-1]<=Work[Request_COURCE-1]) {? Wo(hù)rk[Request_COURCE-1]=Wo(hù)rk[Request_COURCE-1]+Allocation[Array[i].num][Request_COURCE-1];Finish[Array[i].num][Request_COURCE-1]=true;??}?}?for(i=0;i<MAX_FACT_PROCESS;i++) {? if(Finish[i][Request_COURCE-1]==true) continue; ?else? { ? cout<<"未通過安全性測(cè)試,不與以分派"<<endl;? returnfalse; }?}?cout<<endl<<"找到一個(gè)安全序列:"<<"P"<<Request_PROCESS<<"--->"; for(i=0;i<MAX_FACT_PROCESS;i++) {??if(Array[i].num==Request_PROCESS)? continue;??else ? cout<<"P"<<Array[i].num<<">"; } cout<<endl<<"已通過安全性測(cè)試?。?lt;<endl;?Allocate_Source(); returntrue;}boolRUN(void)? ??//執(zhí)行銀行家算法{?cout<<"*************************************************"<<endl<<"點(diǎn)擊1執(zhí)行!"<<endl<<"點(diǎn)擊2退出!"<<endl<<"*************************************************"<<endl;?cin>>flag; if(flag==2)?{ ?loop=false;??exit(0);?} if(flag==1)?{??cout<<"開始掃描請(qǐng)求信息!"<<endl;??intm_delay=3000;? Slee(cuò)p(m_delay);??if(Request_COURCE_NEMBER>Nee(cuò)d[Request_PROCESS-1][Request_COURCE-1])? {? cout<<endl<<"第"<<Request_PROCESS<<"個(gè)進(jìn)程請(qǐng)求第"<<Request_COURCE<<"類資源"<<Request_COURCE_NEMBER<<"個(gè)"<<endl;? ?cout<<"可是已超過該進(jìn)程尚需的該類資源的最大數(shù)量,所以不予以分派!!"<<endl;?? returnfalse; ?}? if(Request_COURCE_NEMBER>Available[Request_COURCE-1])??{???cout<<endl<<"第"<<Request_PROCESS<<"個(gè)進(jìn)程請(qǐng)求第"<<Request_COURCE<<"類資源"<<Request_COURCE_NEMBER<<"個(gè)"<<endl;? cout<<"可是系統(tǒng)中尚無足夠的資源,所以進(jìn)入等待隊(duì)列!!"<<endl;???returnfalse;??} ?else ?{???Available[Request_COURCE-1]=Available[Request_COURCE-1]-Request_COURCE_NEMBER; ?Allocation[Request_PROCESS-1][Request_COURCE-1]=Allocation[Request_PROCESS-1][Request_COURCE-1]+Request_COURCE_NEMBER; ??Need[Request_PROCESS-1][Request_COURCE-1]=Need[Request_PROCESS-1][Request_COURCE-1]-Request_COURCE_NEMBER; ??cout<<"掃描通過"<<endl;? ?Sleep(m_delay);? Test_Safty();??}?}?else?{? cout<<"輸入錯(cuò)誤,請(qǐng)重新輸入!"<<endl; ?RUN(); } returntrue;}voidmain(void){?inttflag;?inti; intj;?chartch; while(loop) {? Read_Initiate(); cout<<endl<<"資源個(gè)數(shù):"<<MAX_FACT_COURCE<<endl;? cout<<"可運(yùn)用資源"<<endl;??cout<<"資源類型"; for(i=0;i<MAX_FACT_COURCE;i++)? { ? cout<<i+1<<"";? }? cout<<endl;??cout<<""; ?for(i=0;i<MAX_FACT_COURCE;i++) cout<<Available[i]<<"";? cout<<endl<<"進(jìn)程個(gè)數(shù):"<<MAX_FACT_PROCESS<<endl;? cout<<"資源類型";??for(i=0;i<MAX_FACT_COURCE;i++) { cout<<i+1<<"";??}? cout<<endl;? for(i=0;i<MAX_FACT_PROCESS;i++)? {? ?cout<<"P"<<i+1<<":";???for(j=0;j<MAX_FACT_COURCE;j++) ? cout<<Max[i][j]<<""; ??cout<<endl;??}??intm_delay=3000;??Sleep(m_delay); cout<<"讀入成功"<<endl<<endl; Allocated_list();??cout<<"資源類型"; for(i=0;i<MAX_FACT_COURCE;i++)??{ ?cout<<i+1<<"";??} ?cout<<endl; for(i=0;i<MAX_FACT_PROCESS;i++) ?{ ?cout<<"P"<<i+1<<":"; ?for(j=0;j<MAX_FACT_COURCE;j++) cout<<Allocation[i][j]<<""; ?cout<<endl;??} Slee(cuò)p(m_delay); cout<<"讀入成功"<<endl<<endl; ?Set_Need();? cout<<"資源類型";? for(i=0;i<MAX_FACT_COURCE;i++)??{???cout<<i+1<<""; ?} ?cout<<endl;??for(i=0;i<MAX_FACT_PROCESS;i++) ?{ ?cout<<"P"<<i+1<<":";? for(j=0;j<MAX_FACT_COURCE;j++) ?cout<<Need[i][j]<<"";???cout<<endl;??}??Sleep(m_delay); ?cout<<"設(shè)立成功"<<endl;??cout<<endl<<"請(qǐng)輸入進(jìn)程號(hào)("<<"1~"<<MAX_FACT_PROCESS<<"):"; ?cin>>Request_PROCESS;??cout<<endl<<"請(qǐng)輸入資源號(hào)("<<"1~"<<MAX_FACT_COURCE<<"):";? cin>>Request_COURCE;? cout<<e

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論