版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、五、源程序(含注釋)清單#include #include #include #include unsigned _stdcall simulator(void *);unsigned _stdcall inspector(void *);LPVOID BASE_PTR;int Actnum=0;/主函數(shù),主要是用于啟動(dòng)用于模擬虛存活動(dòng)和進(jìn)行監(jiān)控的兩個(gè)線程;int main(int argc, char* argv)unsigned ThreadID2;_beginthreadex(NULL,0,simulator,NULL,0,&ThreadID0);_beginthreadex(NULL,
2、0,inspector,NULL,0,&ThreadID1);getchar();/輸入回車即可終止程序;return 0;/模擬一系列的虛存活動(dòng),作為一個(gè)獨(dú)立的線程運(yùn)行;unsigned _stdcall simulator(void *) DWORD OldProtect; int randnum; printf(Now the simulator procedure has been started.n); /產(chǎn)生一個(gè)隨機(jī)數(shù)種子; srand( (unsigned)time( NULL ) ); /在一個(gè)死循環(huán)中,用隨機(jī)數(shù)控制,不斷進(jìn)行虛存操作活動(dòng); while(1) Sleep(500
3、);/控制整個(gè)模擬和監(jiān)控的速度; while (Actnum!=0) Sleep(500);/等待,直到監(jiān)控線程捕捉到上一個(gè)模擬動(dòng)作后再繼續(xù)下一個(gè)動(dòng)作; randnum=7&rand(); switch(randnum)/注意各個(gè)動(dòng)作中的虛存指針均使用BASE_PTR;它在過(guò)程中由虛存分配 /函數(shù)動(dòng)態(tài)調(diào)整,如果某動(dòng)作不成功,則將不會(huì)被監(jiān)控線程監(jiān)控到; case 0: if (BASE_PTR=VirtualAlloc(NULL,1024*32,MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE) Actnum=1;/虛存的保留與提交; break; case 1: i
4、f (VirtualFree(BASE_PTR,1024*32,MEM_DECOMMIT) Actnum=2;/虛存的注銷; break; case 2: if (VirtualFree(BASE_PTR,0,MEM_RELEASE) Actnum=3;/虛存的注銷并釋放虛存空間; break; case 3: if (VirtualProtect(BASE_PTR,1024*32,PAGE_READONLY,&OldProtect) Actnum=4;/改變虛擬內(nèi)存頁(yè)的保護(hù); break; case 4: if (VirtualLock(BASE_PTR,1024*12) Actnum=5;
5、/鎖定虛擬內(nèi)存頁(yè); break; case 5: if (BASE_PTR=VirtualAlloc(NULL,1024*32,MEM_RESERVE,PAGE_READWRITE) Actnum=6;/虛存的保留; break; default: break; /end of switch /end of while return 0;/通過(guò)一個(gè)全局的變量來(lái)監(jiān)視另一模擬線程的模擬活動(dòng),并通過(guò)適當(dāng)?shù)男畔?查詢函數(shù),將存儲(chǔ)的使用和活動(dòng)情況打出報(bào)告;unsigned _stdcall inspector(void *)int QuOut=0;char para13000;MEMORYSTATUS
6、Vmeminfo;char tempstr100;MEMORY_BASIC_INFORMATION inspectorinfo1;int structsize = sizeof(MEMORY_BASIC_INFORMATION);printf(Hi , now inspector begin to workn);/在一個(gè)死循環(huán)中不斷通過(guò)一個(gè)全局變量(監(jiān)視器),來(lái)監(jiān)控模擬線程是否/有新的動(dòng)作,如果有,通過(guò)的API函數(shù)將相應(yīng)虛存處(通過(guò)共用BASE_PTR/實(shí)現(xiàn))的信息進(jìn)行檢查,從而驗(yàn)證該動(dòng)作對(duì)存儲(chǔ)使用的影響;while(1) Sleep(1000); if(Actnum!=0) /通過(guò)全局變量(
7、監(jiān)視器)Actnum,來(lái)獲取上一個(gè)虛存動(dòng)作的類型 /并相應(yīng)構(gòu)造監(jiān)控信息的頭部; switch(Actnum) case 1: memset (&inspectorinfo1, 0, structsize); VirtualQuery(LPVOID)BASE_PTR,&inspectorinfo1,structsize); strcpy(para1,目前執(zhí)行動(dòng)作:虛存的保留與提交n); break; case 2: memset (&inspectorinfo1, 0, structsize); VirtualQuery(LPVOID)BASE_PTR,&inspectorinfo1,struc
8、tsize); strcpy(para1,目前執(zhí)行動(dòng)作:虛存的除配n); break; case 3: memset (&inspectorinfo1, 0, structsize); VirtualQuery(LPVOID)BASE_PTR,&inspectorinfo1,structsize); strcpy(para1,目前執(zhí)行動(dòng)作:虛存的除配并釋放虛存空間n); break; case 4: memset (&inspectorinfo1, 0, structsize); VirtualQuery(LPVOID)BASE_PTR,&inspectorinfo1,structsize);
9、 strcpy(para1,目前執(zhí)行動(dòng)作:改變虛擬內(nèi)存頁(yè)的保護(hù)n); break; case 5: memset (&inspectorinfo1, 0, structsize); VirtualQuery(LPVOID)BASE_PTR,&inspectorinfo1,structsize); strcpy(para1,目前執(zhí)行動(dòng)作:鎖定虛擬內(nèi)存頁(yè)n); break; case 6: memset (&inspectorinfo1, 0, structsize); VirtualQuery(LPVOID)BASE_PTR,&inspectorinfo1,structsize); strcpy
10、(para1,目前執(zhí)行動(dòng)作:虛存的保留n); break; default: break; /實(shí)時(shí)顯示固定格式的相關(guān)材料;通過(guò)目前監(jiān)控到的動(dòng)作所發(fā)生 /的虛存地址,監(jiān)控該活動(dòng)對(duì)相應(yīng)存儲(chǔ)空間的影響; sprintf(tempstr,開(kāi)始地址:0X%xn,inspectorinfo1.BaseAddress); strcat(para1,tempstr); sprintf(tempstr,區(qū)塊大小(目前指針處向前同一屬性的塊):0X%xn,inspectorinfo1.RegionSize); strcat(para1,tempstr); sprintf(tempstr,目前狀態(tài):0X%xn,in
11、spectorinfo1.State); strcat(para1,tempstr); sprintf(tempstr,分配時(shí)訪問(wèn)保護(hù):0X%xn,inspectorinfo1.AllocationProtect); strcat(para1,tempstr); sprintf(tempstr,當(dāng)前訪問(wèn)保護(hù):0X%xn,inspectorinfo1.Protect); strcat(para1,tempstr); strcat(para1,(狀態(tài):10000代表未分配 ;1000代表提交 ;2000代表保留; )n); strcat(para1,(保護(hù)方式:0代表其它;1代表禁止訪問(wèn);2代表只
12、讀;4代表讀寫;n10代表可執(zhí)); strcat(para1, 行;20代表可讀和執(zhí)行; 40代表可讀寫和執(zhí)行;)n*n); /全局信息,報(bào)告目前系統(tǒng)和當(dāng)前進(jìn)程的存儲(chǔ)使用總體情況; GlobalMemoryStatus(&Vmeminfo); strcat(para1,當(dāng)前整體存儲(chǔ)統(tǒng)計(jì)如下n); sprintf(tempstr,物理內(nèi)存總數(shù):%d(BYTES)n,Vmeminfo.dwTotalPhys); strcat(para1,tempstr); sprintf(tempstr,可用物理內(nèi)存數(shù):%d(BYTES)n,Vmeminfo.dwAvailPhys); strcat(para1,
13、tempstr); sprintf(tempstr,頁(yè)面文件總數(shù):%d(BYTES)n,Vmeminfo.dwTotalPageFile); strcat(para1,tempstr); sprintf(tempstr,可用頁(yè)面文件數(shù):%d(BYTES)n,Vmeminfo.dwAvailPageFile); strcat(para1,tempstr); sprintf(tempstr,虛存空間總數(shù):%d(BYTES)n,Vmeminfo.dwTotalVirtual); strcat(para1,tempstr); sprintf(tempstr,可用虛存空間數(shù):%d(BYTES)n,Vme
14、minfo.dwAvailVirtual); strcat(para1,tempstr); sprintf(tempstr,物理存儲(chǔ)使用負(fù)荷:%dnnnn,Vmeminfo.dwMemoryLoad); strcat(para1,tempstr); printf(%s,para1);/顯示報(bào)告內(nèi)容 /(這里可以同時(shí)將報(bào)告內(nèi)容記錄進(jìn)日志文件); Actnum=0;/通知模擬線程可以進(jìn)行下一個(gè)模擬動(dòng)作; Sleep(500);/調(diào)節(jié)模擬和監(jiān)控的總體速度; /for if /for whilereturn 0;六、測(cè)試結(jié)果以及實(shí)驗(yàn)總結(jié)問(wèn)答題:1、如果調(diào)換分配、回收、內(nèi)存復(fù)位、加鎖、解鎖、提交的順序,
15、會(huì)有什么變化,分析原因?答:會(huì)造成用戶程序和非常駐的系統(tǒng)程序無(wú)法正常存儲(chǔ)于存儲(chǔ)器中,從而無(wú)法運(yùn)行。程序在計(jì)算機(jī)內(nèi)必須進(jìn)入主存中才能正常運(yùn)行,當(dāng)其要裝入主存時(shí),首先要為安分配一個(gè)適合的存儲(chǔ)空間。若調(diào)換上述操作的順序,則不能有效的把程序存入主存中。且計(jì)算機(jī)內(nèi)的存儲(chǔ)空間都是有限的,只有進(jìn)行了分配、回收、復(fù)位的操作后,存儲(chǔ)空間才能被循環(huán)利用,系統(tǒng)才能不斷的運(yùn)行不同的程序,不能把操作的順序調(diào)換。2、虛擬存儲(chǔ)有什么優(yōu)越性?答:(1)虛擬存儲(chǔ)可以大大提高存儲(chǔ)系統(tǒng)的整體訪問(wèn)帶寬,這也是其對(duì)于視頻網(wǎng)絡(luò)系統(tǒng)來(lái)說(shuō)最有價(jià)值的一個(gè)特點(diǎn)。視頻網(wǎng)絡(luò)的存儲(chǔ)系統(tǒng)一般是由多個(gè)存儲(chǔ)模塊組成,而虛擬存儲(chǔ)系統(tǒng)可以很好地進(jìn)行負(fù)載平衡,把
16、每一次數(shù)據(jù)訪問(wèn)所需要的帶寬合理地分配到各個(gè)存儲(chǔ)模塊上,這樣系統(tǒng)的整體訪問(wèn)帶寬就增大了。例如,一個(gè)存儲(chǔ)系統(tǒng)中有4個(gè)存儲(chǔ)模塊,每一個(gè)存儲(chǔ)模塊的訪問(wèn)帶寬為50MB/s,則這個(gè)存儲(chǔ)系統(tǒng)的總訪問(wèn)帶寬就可以接近各存儲(chǔ)模塊帶寬之和,即200MB/s。(2)虛擬存儲(chǔ)提供了一個(gè)大容量存儲(chǔ)系統(tǒng)的集中管理手段,由網(wǎng)絡(luò)中的一個(gè)環(huán)節(jié) (如服務(wù)器)進(jìn)行統(tǒng)一管理,避免了由于存儲(chǔ)設(shè)備擴(kuò)充而帶來(lái)的管理方面的麻煩。例如,使用一般的存儲(chǔ)系統(tǒng),當(dāng)在增加新的存儲(chǔ)設(shè)備時(shí),整個(gè)系統(tǒng)(包括網(wǎng)絡(luò)中的諸多用戶設(shè)備)都需要重新進(jìn)行繁瑣的配置工作,這樣才可以使這個(gè)新成員加入到存儲(chǔ)系統(tǒng)中。而使用虛擬存儲(chǔ)技術(shù),在增加新的存儲(chǔ)設(shè)備時(shí),只需要網(wǎng)絡(luò)管理員對(duì)存
17、儲(chǔ)系統(tǒng)進(jìn)行較為簡(jiǎn)單的系統(tǒng)配置更改,客戶端無(wú)需任何操作、只是感到存儲(chǔ)系統(tǒng)的容量增大了。(3)虛擬存儲(chǔ)技術(shù)為存儲(chǔ)資源管理提供了更好的靈活性。它可以將不同類型的存儲(chǔ)設(shè)備集中管理使用,保障了用戶以往購(gòu)買存儲(chǔ)設(shè)備的投資。(3)相關(guān)函數(shù)及其屬性的含義。Beginthreadex函數(shù)功能:創(chuàng)建新線程函數(shù)原型:unsigned long _beginthreadex返回值:0Sleep函數(shù)功能:對(duì)于指定的時(shí)間間隔掛起當(dāng)前的執(zhí)行線函數(shù)原型:VOID Sleep(DWORD dwMilliseconds); 返回值:無(wú) VirtualAlloc函數(shù)功能:在調(diào)用進(jìn)程的虛擬地址中保留、提交或保留且提交內(nèi)存區(qū)域。 函數(shù)
18、原型: LPVOID VirtualAlloc (LPVOID lpAddress, DWORD dwSize, DWORD flAllocationType, DWORD flProtect); 函數(shù)參數(shù): lpAddress:待分配空間的起始地址。若指定的內(nèi)存被保留,指定的地址將四舍五入到下一個(gè)64K邊界;若指定的內(nèi)存被保留且被提交,指定的地址將四舍五入到下一個(gè)頁(yè)面邊界。若為NULL,則由系統(tǒng)決定分配區(qū)域的地址。 dwSize:分配空間的大?。ㄒ宰止?jié)為單位) 。flAllocationType:MEM_COMMIT 或MEM_RESERVE 或兩者的組合flProtect:存取保護(hù)的類型(
19、參考測(cè)試數(shù)據(jù)的說(shuō)明部分) 。 返回值:調(diào)用成功則返回所分配頁(yè)面的基址,否則返回NULL。VirtualFree函數(shù)功能:釋放或注銷調(diào)用進(jìn)程虛擬空間中的頁(yè)面。在本實(shí)驗(yàn)中通過(guò)指定 dw ype,對(duì)內(nèi)存塊進(jìn)行釋放(MEM_DECOMMIT)或者回收(MEM_RELEASE)的操作。 函數(shù)原型: BOOL VirtualFree (LPVOID lpAddress, DWORD dwSize, DWORD dwFreeType);函數(shù)參數(shù): lpAddress:待釋放空間的起始地址。若 dwFreeType 參數(shù)中包含 MEM_RELE該頁(yè)面被保留時(shí),這個(gè)參數(shù)必須是通過(guò)VirtualAlloc函數(shù)返回
20、的基址。 dwSize:釋放空間的大?。ㄒ宰止?jié)為單位) 。若 dwFreeType參數(shù)中包含 MEM志,該參數(shù)值必須為 0。 dwFreeType:釋放類型,可以是 MEM_DECOMMIT 或 MEM_RELEASE。 返回值:調(diào)用成功則返回一個(gè)非零值,否則返回 0。VirtualProtect函數(shù)功能:改變虛擬內(nèi)存頁(yè)的保護(hù)方式HRESULT VirtualProtect ( in void* lpAddress, in SIZE_T dwSize, in DWORD flNewProtect, out DWORD* pflOldProtect);參數(shù): lpAddress in 一個(gè)指針,
21、指向要更保護(hù)屬性的虛擬內(nèi)存的基址。dwSize in 要更改的內(nèi)存頁(yè)面區(qū)域的大?。ㄒ宰止?jié)為單位)。flNewProtect in 要應(yīng)用的內(nèi)存保護(hù)的類型。pflOldProtect out 一個(gè)指針,該指針指向前一個(gè)內(nèi)存保護(hù)值。VirtualLock和VirtualUnlockVirtualLock函數(shù)功能:將調(diào)用進(jìn)程虛擬空間中的內(nèi)存加鎖。 函數(shù)原型:BOOL VirtualLock (LPVOID lpAddress, DWORD dwSize); 函數(shù)參數(shù): lpAddress:加鎖頁(yè)面區(qū)域基址。 dwSize:加鎖區(qū)域的大?。ㄒ宰止?jié)為單位) 。 返回值:調(diào)用成功則返回一個(gè)非零值,否則返回
22、 0VirtualUnlock 函數(shù)功能:將調(diào)用進(jìn)程虛擬空間中的內(nèi)存解鎖。 函數(shù)原型:BOOL VirtualUnlock (LPVOID lpAddress, DWORD dwSize); 函數(shù)參數(shù): lpAddress:解鎖頁(yè)面區(qū)域基址。 dwSize:解鎖區(qū)域的大?。ㄒ宰止?jié)為單位) 。 返回值:調(diào)用成功則返回一個(gè)非零值,否則返回 0。VirtualQuery函數(shù)功能:查詢進(jìn)程的虛擬內(nèi)存 HRESULT VirtualQuery ( in void* lpAddress, out void* lpBuffer, in SIZE_T dwLength, out SIZE_T* pResult
23、);函數(shù)參數(shù):lpAddress in 一個(gè)指針,指向要查詢的虛擬內(nèi)存中的地址。lpBuffer out 一個(gè)指針,指向包含指定內(nèi)存區(qū)域相關(guān)信息的結(jié)構(gòu)。dwLength in lpBuffer 指向的緩沖區(qū)的大?。ㄒ宰止?jié)為單位)。pResult out 一個(gè)指針,它指向信息緩沖區(qū)返回的字節(jié)數(shù)。GlobalMemoryStatus函數(shù)功能:獲得計(jì)算機(jī)系統(tǒng)中當(dāng)前使用的物理內(nèi)存和虛擬內(nèi)存的信息 函數(shù)原型:VOID GlobalMemoryStatus (LPMEMORYSTATUS lpBuffer); 函數(shù)參數(shù):lpBuffer是指向MEMORYSTATUS 結(jié)構(gòu)的指針,_MEMORYSTATUS
24、結(jié)構(gòu)用來(lái)存儲(chǔ)系統(tǒng)內(nèi)存信息, 返回值:無(wú)(在結(jié)構(gòu)變量中)成績(jī)VC+ (.NET 2010)/ virmemory.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。/#include stdafx.h#include #include #include #include unsigned _stdcall simulator(void *);unsigned _stdcall inspector(void *);LPVOID BASE_PTR;int Actnum=0;/主函數(shù),主要是用于啟動(dòng)用于模擬虛存活動(dòng)和進(jìn)行監(jiān)控的兩個(gè)線程;int main(int argc, char* argv)unsigned
25、 ThreadID2;_beginthreadex(NULL,0,simulator,NULL,0,&ThreadID0);_beginthreadex(NULL,0,inspector,NULL,0,&ThreadID1);getchar();/輸入回車即可終止程序;return 0;/模擬一系列的虛存活動(dòng),作為一個(gè)獨(dú)立的線程運(yùn)行;unsigned _stdcall simulator(void *) DWORD OldProtect; int randnum; printf(Now the simulator procedure has been started.n); /產(chǎn)生一個(gè)隨機(jī)數(shù)種
26、子; srand( (unsigned)time( NULL ) ); /在一個(gè)死循環(huán)中,用隨機(jī)數(shù)控制,不斷進(jìn)行虛存操作活動(dòng); while(1) Sleep(500);/控制整個(gè)模擬和監(jiān)控的速度; while (Actnum!=0) Sleep(500);/等待,直到監(jiān)控線程捕捉到上一個(gè)模擬動(dòng)作后再繼續(xù)下一個(gè)動(dòng)作; randnum=7&rand(); switch(randnum)/注意各個(gè)動(dòng)作中的虛存指針均使用BASE_PTR;它在過(guò)程中由虛存分配 /函數(shù)動(dòng)態(tài)調(diào)整,如果某動(dòng)作不成功,則將不會(huì)被監(jiān)控線程監(jiān)控到; case 0: if (BASE_PTR=VirtualAlloc(NULL,10
27、24*32,MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE) Actnum=1;/虛存的保留與提交; break; case 1: if (VirtualFree(BASE_PTR,1024*32,MEM_DECOMMIT) Actnum=2;/虛存的注銷; break; case 2: if (VirtualFree(BASE_PTR,0,MEM_RELEASE) Actnum=3;/虛存的注銷并釋放虛存空間; break; case 3: if (VirtualProtect(BASE_PTR,1024*32,PAGE_READONLY,&OldProtect
28、) Actnum=4;/改變虛擬內(nèi)存頁(yè)的保護(hù); break; case 4: if (VirtualLock(BASE_PTR,1024*12) Actnum=5;/鎖定虛擬內(nèi)存頁(yè); break; case 5: if (BASE_PTR=VirtualAlloc(NULL,1024*32,MEM_RESERVE,PAGE_READWRITE) Actnum=6;/虛存的保留; break; default: break; /end of switch /end of while return 0;/通過(guò)一個(gè)全局的變量來(lái)監(jiān)視另一模擬線程的模擬活動(dòng),并通過(guò)適當(dāng)?shù)男畔?查詢函數(shù),將存儲(chǔ)的使用和活動(dòng)
29、情況打出報(bào)告;unsigned _stdcall inspector(void *)int QuOut=0;char para13000;MEMORYSTATUS Vmeminfo;char tempstr100;MEMORY_BASIC_INFORMATION inspectorinfo1;int structsize = sizeof(MEMORY_BASIC_INFORMATION);printf(Hi , now inspector begin to workn);/在一個(gè)死循環(huán)中不斷通過(guò)一個(gè)全局變量(監(jiān)視器),來(lái)監(jiān)控模擬線程是否/有新的動(dòng)作,如果有,通過(guò)的API函數(shù)將相應(yīng)虛存處(通過(guò)
30、共用BASE_PTR/實(shí)現(xiàn))的信息進(jìn)行檢查,從而驗(yàn)證該動(dòng)作對(duì)存儲(chǔ)使用的影響;while(1) Sleep(1000); if(Actnum!=0) /通過(guò)全局變量(監(jiān)視器)Actnum,來(lái)獲取上一個(gè)虛存動(dòng)作的類型 /并相應(yīng)構(gòu)造監(jiān)控信息的頭部; switch(Actnum) case 1: memset (&inspectorinfo1, 0, structsize); VirtualQuery(LPVOID)BASE_PTR,&inspectorinfo1,structsize); strcpy(para1,目前執(zhí)行動(dòng)作:虛存的保留與提交n); break; case 2: memset (&
31、inspectorinfo1, 0, structsize); VirtualQuery(LPVOID)BASE_PTR,&inspectorinfo1,structsize); strcpy(para1,目前執(zhí)行動(dòng)作:虛存的除配n); break; case 3: memset (&inspectorinfo1, 0, structsize); VirtualQuery(LPVOID)BASE_PTR,&inspectorinfo1,structsize); strcpy(para1,目前執(zhí)行動(dòng)作:虛存的除配并釋放虛存空間n); break; case 4: memset (&inspect
32、orinfo1, 0, structsize); VirtualQuery(LPVOID)BASE_PTR,&inspectorinfo1,structsize); strcpy(para1,目前執(zhí)行動(dòng)作:改變虛擬內(nèi)存頁(yè)的保護(hù)n); break; case 5: memset (&inspectorinfo1, 0, structsize); VirtualQuery(LPVOID)BASE_PTR,&inspectorinfo1,structsize); strcpy(para1,目前執(zhí)行動(dòng)作:鎖定虛擬內(nèi)存頁(yè)n); break; case 6: memset (&inspectorinfo1
33、, 0, structsize); VirtualQuery(LPVOID)BASE_PTR,&inspectorinfo1,structsize); strcpy(para1,目前執(zhí)行動(dòng)作:虛存的保留n); break; default: break; /實(shí)時(shí)顯示固定格式的相關(guān)材料;通過(guò)目前監(jiān)控到的動(dòng)作所發(fā)生 /的虛存地址,監(jiān)控該活動(dòng)對(duì)相應(yīng)存儲(chǔ)空間的影響; sprintf(tempstr,開(kāi)始地址:0X%xn,inspectorinfo1.BaseAddress); strcat(para1,tempstr); sprintf(tempstr,區(qū)塊大小(目前指針處向前同一屬性的塊):0X%xn,inspectorinfo1.RegionSize); strcat(para1,tempstr); sprintf(tempstr,目前狀態(tài):0X%xn,inspectorinfo1.State); strcat(para1,tempstr)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度貨運(yùn)司機(jī)勞動(dòng)合同模板(含績(jī)效考核)
- 二零二五年度學(xué)校教師學(xué)生國(guó)際交流與合作聘用合同3篇
- 二零二五年度信息技術(shù)產(chǎn)品軟件售后服務(wù)合同書模板2篇
- 2025年度個(gè)人法律咨詢委托書范本4篇
- 二零二五年度廚房電氣設(shè)備安裝與維護(hù)承包協(xié)議4篇
- 2025版實(shí)習(xí)合同模板:實(shí)習(xí)期間解約與補(bǔ)償3篇
- 二零二五版舊機(jī)動(dòng)車交易車輛售后配件供應(yīng)合同3篇
- 2025版實(shí)習(xí)期員工勞動(dòng)合同-實(shí)習(xí)期間合同解除與續(xù)簽3篇
- 珠??萍紝W(xué)院《賈平凹文學(xué)創(chuàng)作研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度商業(yè)寫字樓租賃合同樣本
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第十一章運(yùn)動(dòng)技能的練習(xí)
- 蟲洞書簡(jiǎn)全套8本
- 射頻在疼痛治療中的應(yīng)用
- 四年級(jí)數(shù)學(xué)豎式計(jì)算100道文檔
- “新零售”模式下生鮮電商的營(yíng)銷策略研究-以盒馬鮮生為例
- 項(xiàng)痹病辨證施護(hù)
- 職業(yè)安全健康工作總結(jié)(2篇)
- 懷化市數(shù)字經(jīng)濟(jì)產(chǎn)業(yè)發(fā)展概況及未來(lái)投資可行性研究報(bào)告
- 07FD02 防空地下室電氣設(shè)備安裝
- 教師高中化學(xué)大單元教學(xué)培訓(xùn)心得體會(huì)
- 彈簧分離問(wèn)題經(jīng)典題目
評(píng)論
0/150
提交評(píng)論