操作系統(tǒng)實(shí)驗(yàn)5_第1頁(yè)
操作系統(tǒng)實(shí)驗(yàn)5_第2頁(yè)
操作系統(tǒng)實(shí)驗(yàn)5_第3頁(yè)
操作系統(tǒng)實(shí)驗(yàn)5_第4頁(yè)
操作系統(tǒng)實(shí)驗(yàn)5_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1010/19操作系統(tǒng)實(shí)驗(yàn)報(bào)告課程名稱(chēng)操作系統(tǒng)實(shí)驗(yàn)實(shí)驗(yàn)項(xiàng)目名稱(chēng)進(jìn)程的同步學(xué)號(hào)2012201425班級(jí)20122014姓名顏凡騰專(zhuān)業(yè)軟件工程學(xué)生所在學(xué)院軟件學(xué)院指導(dǎo)教師曹雪實(shí)驗(yàn)室名稱(chēng)地點(diǎn)21b哈爾濱工程大學(xué)軟件學(xué)院一、實(shí)驗(yàn)概述實(shí)驗(yàn)名稱(chēng)進(jìn)程的同步實(shí)驗(yàn)?zāi)康氖褂肊OS的信號(hào)量,編程解決生產(chǎn)者一消費(fèi)者問(wèn)題,理解進(jìn)程同步的意義。調(diào)試跟蹤EOS信號(hào)量的工作過(guò)程,理解進(jìn)程同步的原理修改EOS的信號(hào)量算法,使之支持等待超時(shí)喚醒功能(有限等待),加深理解進(jìn)程同步的原理。實(shí)驗(yàn)類(lèi)型設(shè)計(jì)二、實(shí)驗(yàn)環(huán)境OSLab三、實(shí)驗(yàn)過(guò)程使用EOS的信號(hào)量解決生產(chǎn)者一消費(fèi)者問(wèn)題:立即激活虛擬機(jī)窗口查看生產(chǎn)者-消費(fèi)者同步執(zhí)行的過(guò)程調(diào)試EOS言號(hào)量的工作過(guò)程:創(chuàng)建信號(hào)量豌39G{:wj333:39書(shū)4O0i4011402^403!404j405!406!40T408^405i項(xiàng)41L!3TAIUStiyiLLEStatusStatus,Hendle;=FsCreateStiDaphorEOLject1T^itialCountj心xiirumCounhName.flHandlz),PsSetLasiErrar(Trans1aleStatusloEitor(Status))re-rumECS_SUCCRSS(Stus)?Handle:NULL;KJSAPIBOOLReleaseSemaphore、INHANDLEHandle.ZJ1'1itrjiniiaiic.UJTFH.WL3^ejraphorcHondle213FJ21{2LSSTATUSJiatus;210PTOJDScmaphorcObjcct;ZITSEM_CR2ATE_P/MCresteFaran:力嬉中Eif(InitialCount<0||MaximunCount<-加returnFTTATUSTWALID-FAMETER;22V-1223224="創(chuàng)建信號(hào)星特象,//GreateFarax,InitialCcunt=initialCcuntCrcatcF^roji.=h電nimiH?匚wrtna.__._rtxr5*-.__.u._/\1l!_>,<■「inr11____*u.t".—0IIInitialCount>SaKimoCcunt'j'1?心2o!ZU232僉24:早〃++VOIDPslnilializeSemaphore(PSEMAPHORESemaphorejLONGInitialCountLONGMaxiwmCauntINININ)按F5繼續(xù)調(diào)試,到斷點(diǎn)處中斷。觀(guān)察PsInitializeSemaphore函數(shù)中用來(lái)初始化信號(hào)量結(jié)構(gòu)體成員的值,應(yīng)該和傳入CreateSemaphore函數(shù)的參數(shù)值是一致的25Y:26或I2^1*if^E_SUCCF.SS(St^lis)?[Sta*ue=PsRtleaseSana;bore(Semauhor%ReleaseCcunt,Rre^iousraunt);ObDtrtffijbJecl(SeLnapljurs).]272l涉掉returnStatus:四季LI275:usmtuxCo-sit=LhiU,甲頑=d皿慍LlLHt&aJ=i頑,皿4=DkD,Yu.lL,.3ilrij£t_SJlexl=DxQ.hw=OxD按F10單步調(diào)試PsInitializeSemaphore函數(shù)執(zhí)行的過(guò)程,查看信號(hào)量結(jié)構(gòu)體被初始化的過(guò)程。打開(kāi)“調(diào)用堆?!贝翱冢榭春瘮?shù)的調(diào)用層次。ErjfTLCt里ErjfTLCt里VoxunuiCo'jut~VoxunuiCo'jut~Illiati±l-IIl<w'Il<w'「?監(jiān)視名稱(chēng)裕自ri名稱(chēng)裕自ri迎h(huán)ore{unCount-&%WaitL…strinet^S...Count=Oxa^Maxim>unCount=Oxa,V&itListHt&d={Next=QkQ#Prev-OxO/查找鯨11w查掘gI厘監(jiān)祝監(jiān)翔名稱(chēng)值」芙型J*Sesiaphore{MiCdiiitt:=Ow^tfaitL...struct_S...Count-Oia.7MaximmnCouTtl=Cl*虬={ff?xt=OxdOJfbif^,Prev-。芯9O3£bafB}1柔查找皓果11國(guó)查我蘊(yùn)果m1圄監(jiān)演等待、釋放信號(hào)量:等待信號(hào)量(不阻塞)按F10單步調(diào)試,直到完成PsWaitForSemaphore函數(shù)中的所有操作??梢钥吹酱舜螆?zhí)行并沒(méi)有進(jìn)行等待,只是將Empty信號(hào)量的計(jì)數(shù)減少了1(由10變?yōu)榱?)就返回了。名稱(chēng)值類(lèi)型*SemaphoirefimCgjvt二Ox%WaitL一struct_S.,,Count=Oif&jMAJtimunCount-0m塵W&itListHe&d={=0x803ftafS,Frev=0x303ftaf8}}[泉查找結(jié)果l|錄查找結(jié)果z司蝴]

名稱(chēng)值類(lèi)型^Semaphore(jmCount=Di[務(wù)臨itL..Struct里-.Caunt-Otsa,UaXinumColirkt—門(mén)配色,AaitListHeid=[Next-OicSOGfLafQ,Frev=OK8D3fba£B:}ra-Li、■1^*11f—土-4DSri—b1-i*^un「名稱(chēng)值「名稱(chēng)值類(lèi)型*Semaphore(MiCauiLt=Oxa,WaitLa-.s+ruet_S...Ccimt=Ox*HIaximumCount二Oka,UHUitlhU={ITest=Dx8口3fbaf^Frev=011303fbafB1}胞視名稱(chēng)值類(lèi)型{iraCouiit-Owa,VaitL...stniil_S...Count=0i9jMl^imuniCouiit=ChtjWk3LiMLHsd={N鄰l=Qic8O3fbLfSjFrav-Qjc3O3fbTf6}J'者牝繇1]用查找結(jié)果2|肩1監(jiān)切釋放信號(hào)量(不換醒)按F10單步調(diào)試,直到完成PsReleaseSemaphore函數(shù)中的所有操作??梢钥吹酱舜螆?zhí)行沒(méi)有喚醒其它線(xiàn)程(因?yàn)榇藭r(shí)沒(méi)有線(xiàn)程在Full信號(hào)量上被阻塞),只是將Full信號(hào)量的計(jì)數(shù)增加了1(由0變?yōu)榱?)。

4/海甲269!|270f|riF*<」山洗視ifVUSJSUWE4/海甲269!|270f|riF*<」山洗視*ELRiCcuht=口jc虬HitL...struct_S..Count-ChtO,M^imuniCouzi*.=Ok.Fext=0x803fbbSfijFrsv-g*ELRiCcuht=口jc虬HitL...struct_S..Count-ChtO,M^imuniCouzi*.=Ok.Fext=0x803fbbSfijFrsv-g呂03fbb3B/查找結(jié)果1[阜查找盛虎貫町Status-FsReleasESEmaphorE(Semaphizre;,Rel^aseCDunt,PrEviousCoum):ObDtercJObjcct(Scnaphore?;*StmifilutreiintZaiuit-Oxa,f*itLsLt-IMtJm..rtutl:=。址LHJRlLUlCUU1LI■Dib^腿Eg渤=(Hext=(k明3比坪B,Fr做=OM8O3ft)b38}/…一EOMSOLE-1(PressCtrl+F1~F8toswitchconsoleuindou...)elcotiEtoEOSshell>rtwctoruiTiA:\EOSfipp.cxcProduceaGConsumea0Produce己1ProduceaZProducea3Producea4Consumea1Producea5Producea6Producea?Producea8Consumea2Producea9Producea10Producea11Producea1ZConsumea3Producea13等待信號(hào)量(阻塞)由丁開(kāi)始時(shí)生產(chǎn)者線(xiàn)程生產(chǎn)產(chǎn)品的速度較快,而消費(fèi)者線(xiàn)程消費(fèi)產(chǎn)品的速度

較虬所以當(dāng)緩沖池中所有的緩沖區(qū)都被產(chǎn)品占用時(shí),生產(chǎn)者在生產(chǎn)新的產(chǎn)品時(shí)就會(huì)被阻塞.在“調(diào)用堆棧”窗口中雙擊Producer函數(shù)所在的堆棧幀,綠色箭頭指向等待Empty信號(hào)量的代碼行,查看Producer函數(shù)中變量i的值為14,表示生產(chǎn)者線(xiàn)程正在嘗試生產(chǎn)14號(hào)產(chǎn)品。131return9r132135134憤//史產(chǎn)者'潢航n〃137131return9r132135134憤//史產(chǎn)者'潢航n〃137IU賦ProJuiwtPVOlDMg1黛(13&inti.14C-int]nlnd-ejc-141far(i-Q.iiITOOCT1必.aXIMT,i+*)(14S14&JeetIEa*>tySe?ap>hDreHandle4Ilf1NITEI.■■itfoorSa皿Igwt(Bui七Ilf1MITEI14S149l&Gprint£(^Proiiiz-e日Buffer[Enlnde-i]~LInIN特=*U*BUFESIZl.1R15Z155IM15&1&7GeIeAC?lni1ea(■utRrIggeScjngitor^CM,F(xiàn)rf?h長(zhǎng)5U0■?牛/"個(gè)It*Sleep(SM).1,*LL).在“調(diào)用堆棧”窗口中雙擊PsWaitForSemaphore函數(shù)的堆棧幀,查看Empty信號(hào)量計(jì)數(shù)(Semaphore->Count)的值為-1,所以會(huì)調(diào)用PspWait函數(shù)將生產(chǎn)者線(xiàn)程放入Empty信號(hào)量的等待隊(duì)歹0中進(jìn)行等待(讓出CPU)。激活虛擬機(jī)窗口查看輸出的結(jié)果。生產(chǎn)了從0到13的14個(gè)產(chǎn)品,但是只消費(fèi)了從0到13的14個(gè)產(chǎn)品,所以緩沖池中的10個(gè)緩沖區(qū)就都被占用了,這與之前調(diào)試的結(jié)果是一致的。CONSOLE-1(PressCtrltosuitchccnsoleuindou...)Ut:Iuutk:tuEOS>AiitnrnnA:KE(lSApp.fxpFx'uduce。GCnnmimpa0Pi'uduuta1Produceft2ri'uduue。3Produceft4Consumea.1HrnducefthProduceu6rroducea7Producea0ConsumeaAProducea9froducea10Producea11froducea1ZConsunea3Producea13

釋放信號(hào)量(喚醒)只有當(dāng)消費(fèi)者線(xiàn)程從緩沖池中消費(fèi)了一個(gè)產(chǎn)品,者線(xiàn)程才會(huì)被喚醒并繼續(xù)生產(chǎn)14號(hào)產(chǎn)品。查看Consumer函數(shù)中變量i的值為4。L尸由3[99L4TrciuKi-i*.LfiLLJLG3〃L5*NAlt.[KitinnrE±?uRi:C>VDtKPare*'^Lcr[1inc1.Ltr*Imibqrbidi]*”tluLT|foru?6,i<EKT^UNTl.w)(till4riFuji!|.TwMihiIffHm;hiBiit出a邊%]WEJ[TI.@W,iftr1IXJFtfitwIhir!h4?iCUurIii^is41JIZ|L”R?lHfAr??iJluiFto4Lik'RrlsarcScvqnarxE^-R-^Sa^h^rchn'd],^LE1EJ.).I?nLI3"鼻息-AJULlNla府如ferftrLK鼻鷹tM眼丸從而產(chǎn)生一個(gè)空緩沖區(qū)后,生產(chǎn)W!:■???btSSMIIF:XdwaiflkHdi■■■ynHqtiWLiiiiM從而產(chǎn)生一個(gè)空緩沖區(qū)后,生產(chǎn)W!:■???btSSMIIF:XdwaiflkHdi■■■ynHqtiWLiiiiMPbJ^Bw^hWU查看PsReleaseSemaphore函數(shù)中Empty信號(hào)量計(jì)數(shù)(Semaphore->Count)的值為-1,和生產(chǎn)者線(xiàn)程被阻塞時(shí)的值是一致的。鈕頒IM宜心■:L開(kāi),IFItFSF止乎虬fiim■瑚ivunKnmTwiTnBiiB,鈕頒IM宜心■:L開(kāi),IFItFSF止乎虬fiim■瑚ivunKnmTwiTnBiiB,?郵堆的■號(hào)做■?I-MdZ1AFJ£知.Hv!£■:!.加河1日?0fc<L*?MC&ilIMLL7I■frrpr;-gwc3ijii=irawcinrE-Mjft期Jfr?4JLus目sumoggi去?質(zhì)!L?r.gfcl?「'-JE^cjl.tai.fi此整他-apiaMSw田5武F的有.CMi按F10單步調(diào)試PsReleaseSemaphore函數(shù),直到在代碼行(第132行)PspWakeThread(&Semaphore->WaitListHead,STATUS_SUCCESS)^斷。此時(shí)Empty信號(hào)量計(jì)數(shù)的值已經(jīng)由-1增加為了0,需要調(diào)用PspWakeThread函數(shù)喚醒阻塞在Empty信號(hào)量等待隊(duì)列中的生產(chǎn)者線(xiàn)程(放入就緒隊(duì)列中),然后調(diào)用PspSchedule函數(shù)執(zhí)行調(diào)度,這樣生產(chǎn)者線(xiàn)程就得以繼續(xù)執(zhí)行。二日域J-<£L*q?vMW?t■jr二,4…".…4NJ1yJ、.plxutwcriiirfj.zEfrcmtMiiZ*iri頑ltd14Z"141L:^'u<=mAJL_NIMA框Jl27_LE-L!LeL3){/r//配曜當(dāng)悟.it*iui作pEiM5t}(->C>uitJ3日目配■拒制?-耳怕虧一鹽用司骨的「俄慚i//只做也耳新加I和11./fEHMtmer-Jmet+4W(tffwme-XMi:0>(J'EF*aMThr-4d^oitaBphoaT-*4iTLiE-!:l4eaXaTATrJ&_aUXt3SI1:/fK可度有魄押E■.翰有甘H-?.W?itPa?ThmidS-hr-fc.1e;Si3tu55^urcBSS)E-LnflblclKtErrj^TsC]rVStH*-):'?蕓工*1月憲土-+5'mHMttEA>1擊£?查看PsWaitForSemaphore函數(shù)中Empty信號(hào)量計(jì)數(shù)(Semaphore->Count)的值為0,和生產(chǎn)者線(xiàn)程被喚醒時(shí)的值是一致的。巨*1位理了蹄記拿割r號(hào)量.不懷弱沖■句畦,折鼠了*£]瞄的京二曲地閂照,洋LH1E.STATUSP^fiele-Me-rrwc^KiET(「:iw{NITCEW1的3241堆中S*-?<*5Et社saLFH

在“調(diào)用堆?!贝翱谥锌梢钥吹绞怯蒔roducer函數(shù)進(jìn)入的。激活Producer函數(shù)的堆棧幀,查看Producer函數(shù)中變量i的值為14,表明之前被阻塞的、正在嘗試生產(chǎn)14號(hào)產(chǎn)品的生產(chǎn)者線(xiàn)程已經(jīng)從PspWait函數(shù)返回并繼續(xù)執(zhí)行13&137:I13&137:I】:::v:LI】「IME3?】剖:】4§ULO^S沖ID站皿,[LnlL&Irulndci二ft,idtForSuiBLeOtj骸HgtySflwa^ord^Jl虬:NFISHU).■al1ForSlnglcOtjec■:(ItiteiHerdltj.1NITB),WftrSimil〔WftrSimil〔Vfill.-printfCProducea1>.BufferTlEiliL-jeK)=i;IvJndtM=(TnTh4eii+OitUFFW_3ia,1S1Relcascflutbi(lutciiliandib).1S1項(xiàng);154ISS.IS61571哭修改EOS的信號(hào)量算法在目前EOSKernel項(xiàng)目的ps/semaphore.c文件中,PsWaitForSemaphore函數(shù)的Milliseconds參數(shù)只能是INFINITE,PsReleaseSemaphore函數(shù)的ReleaseCount參數(shù)只能是1?,F(xiàn)在要求同時(shí)修改PsWaitForSemaphore函數(shù)和PsReleaseSemaphore函數(shù)中的代碼,使這兩個(gè)參數(shù)能夠真正起到作用,使信號(hào)量對(duì)象支持等待超時(shí)喚醒功能和批量釋放功能。修改PsWaitForSemaphore函數(shù):

修改PsReleaseSemaphore函數(shù)#八y.ci:suixMiApdiCML£+.,■***「■*q蝦8-q心-JM■<*fcK*aU-l*MdFW引鼻牛…J'whqb?h-*Mbrtl,JiiUSIld>dLEMliliM-fll??■H-*Mklh-ci1*#eriW■1L?iu—r■[■■JB1JH!150-改1!■?,14]Jv*3j§]j奸1■/鼻看祐曩主掌號(hào)此??liT茂%號(hào)1的蜂我障作fj/fSxnphnrr=■也nrtiF*+,//kf-r-Cww.li普INFm^Thi■口d心BwHari"-.項(xiàng)£r^7K_31XOS).ii再毗jmCtiun!>'0![jHMgJ'uCE-此HLB11+*.IXILiril1afiqt!rtirZ?n?^!irv-4rafil|.$(trfiaHdIMfRa-I'^ksLrTiu'VArllJLar^iwv-iLirtMaSTAT\?—號(hào)JCCL2T}_可Ji"我PvThr¥-*d^dwMnO,/丁牌RTRrlrnHvCni£n.l—IIEtrop^E"*-Cfiu=.T=-£葉5胃*Iri-StttdCfrj-jl.SejMui<ffUfTIBJllfflS.)■[*■nr'Pr"■*:Mr?<~f7iE-iKr-*KW*|v?!*1j:EYjflil,點(diǎn)川*Xn-i$i?ifLW單子雎*■K“住理1F野?尸?Eh*:iSiHl-uCj下tl墅巾It言量酋尊.的槌是瞞之恭L測(cè)試:按F5調(diào)試執(zhí)行原有的生產(chǎn)者-消費(fèi)者應(yīng)用程序項(xiàng)目,其結(jié)果如下所示將Producer函數(shù)中等待Empty信號(hào)量的代碼行WaitForSingleObject(EmptySemaphoreHandle,INFINITE);替換為while(WAIT_TIMEOUT==WaitForSingleObject(EmptySemaphoreHandle,300)){printf("Producerwaitforemptysemaphoretimeout\n");}將Consumer函數(shù)中等待Full信號(hào)量的代碼行WaitForSingleObject(FullSemaphoreHandle,INFINITE);替換為while(WAIT_TIMEOUT==WaitForSingleObject(FullSemaphoreHandle,300)){printf("Consumerwaitforfullsemaphoretimeout\n");}啟動(dòng)調(diào)試新的生產(chǎn)者-消費(fèi)者項(xiàng)目,查看在虛擬機(jī)中輸出的結(jié)果,驗(yàn)證信號(hào)量超時(shí)等待功能是否能夠正常執(zhí)行。

將消費(fèi)者線(xiàn)程修改為一次消費(fèi)兩個(gè)產(chǎn)品,來(lái)測(cè)試ReleaseCount參數(shù)是否能夠正常使用。四、思考題1、思考在ps/semaphore.c文件內(nèi)的PsWaitForSemaphore和PsReleaseSemaphore函數(shù)中,為什么要使用原子操作?可以參考本書(shū)第2章中的第2.6節(jié)。答:當(dāng)在執(zhí)行PsWaitForSemaphore和PsReleaseSemaphore函數(shù)的時(shí)候,是不允許cpu響應(yīng)外部中斷的,如果此時(shí)cpu響應(yīng)了外部中斷,就會(huì)產(chǎn)生不可預(yù)料的結(jié)果,無(wú)法正常完成函數(shù)的功能。2、繪制ps/semaphore.c文件內(nèi)PsWaitForSemaphore和PsReleaseSemaphore函數(shù)的流程圖。PsWaitForSemaphore流程圖:noPsReleaseSemaphor通數(shù)的流程圖:PsReleaseSema

phore函數(shù)開(kāi)始開(kāi)始原子操作no3、生產(chǎn)者線(xiàn)程和消費(fèi)者線(xiàn)程是如何使用Mutex、Empty言號(hào)量和Full信號(hào)量來(lái)實(shí)現(xiàn)同步的?在兩個(gè)線(xiàn)程函數(shù)中對(duì)這三個(gè)同步對(duì)象的操作能夠改變順序嗎?答:Mutex、Empty、Full三個(gè)信號(hào)量的初始值分別為1、10、0,當(dāng)出現(xiàn)一個(gè)生產(chǎn)者線(xiàn)程訪(fǎng)問(wèn)緩沖池時(shí),首先Empt彼減1,如果大丁0,就說(shuō)明還有剩余的緩沖區(qū)可以讓生產(chǎn)者放入產(chǎn)品,小于等丁0則生產(chǎn)者線(xiàn)程進(jìn)入等待隊(duì)列;再對(duì)Mutex減1,如果大丁等丁0,就說(shuō)明沒(méi)有線(xiàn)程占用著緩沖池,小丁0則生產(chǎn)者線(xiàn)程進(jìn)入等待隊(duì)列。生產(chǎn)完產(chǎn)品后,對(duì)Mutex值加1,解除封鎖;再對(duì)Full值加1,說(shuō)明生產(chǎn)了一個(gè)產(chǎn)品占用了一個(gè)緩沖區(qū)。消費(fèi)者線(xiàn)程也是這樣的,對(duì)信號(hào)量的操作順序與生產(chǎn)者線(xiàn)程是相反。不能對(duì)這三個(gè)同步對(duì)象的操作改變順序,否則可能造成死4、生產(chǎn)者在生產(chǎn)了13號(hào)產(chǎn)品后本來(lái)要繼續(xù)生產(chǎn)14號(hào)產(chǎn)品,可此時(shí)生產(chǎn)者為什么必須等待消費(fèi)者消費(fèi)了4號(hào)產(chǎn)品后,才能生產(chǎn)14號(hào)產(chǎn)品呢?生產(chǎn)者和消費(fèi)者是怎樣使用同步對(duì)象來(lái)實(shí)現(xiàn)該同步過(guò)程的呢?答:因?yàn)榕R界資源的訪(fǎng)問(wèn)是受限制的,程序中限定了緩沖池的大小值為10,只有緩沖池空余時(shí)生產(chǎn)者才能向里邊放產(chǎn)品,同時(shí)只有緩沖池有產(chǎn)品的時(shí)候消費(fèi)者才能向外取東西。當(dāng)生產(chǎn)者生產(chǎn)了13號(hào)產(chǎn)品后,共生產(chǎn)了從0到13的14個(gè)產(chǎn)品,但是只取走了從0到3的4個(gè)產(chǎn)品,所以緩沖池中的10個(gè)緩沖區(qū)就都被占用了,所以不能繼續(xù)生

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論