版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、湖南師范大學(xué)工學(xué)院操作系統(tǒng)實(shí)驗(yàn)報(bào)告姓 名: 汪思源年 級(jí): 2011級(jí)專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)學(xué) 號(hào): 任課教師:肖柳明開(kāi)課時(shí)間:20122013學(xué)年第二學(xué)期 實(shí)驗(yàn)(一)可變分區(qū)管理1、 實(shí)驗(yàn)?zāi)康模?、加深對(duì)可變分區(qū)存儲(chǔ)管理的理解;2、提高用C語(yǔ)言編制大型系統(tǒng)程序的能力,特別是掌握C語(yǔ)言編程的難點(diǎn):指針和指針作為函數(shù)參數(shù);3、掌握用指針實(shí)現(xiàn)鏈表和在鏈表上的基本操作。2、 實(shí)驗(yàn)內(nèi)容:參照教材P123-P125的內(nèi)容,編寫(xiě)一個(gè)C程序,用char *malloc(unsigned size)函數(shù)向系統(tǒng)申請(qǐng)一次內(nèi)存空間(如size=1000,單位為字節(jié)),用循環(huán)首次適應(yīng)算法、最佳適應(yīng)算法和最壞適應(yīng)算
2、法,模擬UNIX可變分區(qū)存儲(chǔ)管理,實(shí)現(xiàn)對(duì)內(nèi)存區(qū)的分配和釋放管理。3、 程序分析與設(shè)計(jì):1、 算法思想和概要設(shè)計(jì):首先開(kāi)辟一塊內(nèi)存空間,在一次次的申請(qǐng)內(nèi)存中會(huì)將空間劃成若干個(gè)部分,慢慢的會(huì)將所編的算法體現(xiàn)出來(lái),其中包括循環(huán)首次適應(yīng)算法、最佳適應(yīng)算法、最壞適應(yīng)算法。在最佳與最壞適應(yīng)算法中,要將剩于的內(nèi)存空間按從小到大分配。2、 重要數(shù)據(jù)結(jié)構(gòu)和變量的說(shuō)明#define maxsize 1000using namespace std; typedef struct form unsigned fsize; char *faddr; struct form *n,*p;ff; ff *start; ff
3、 *head; int Ffree(unsigned size , char *addr)char * Fmalloc(unsigned size) void Fprintall(void)void Fsort()char *Fbestmalloc(unsigned size)char *Fworstmalloc(unsigned size)3、 重要模塊的詳細(xì)設(shè)計(jì)int Ffree(unsigned size , char *addr) ff *current=head; ff *s; do if(head-faddraddr)&(start-faddr-addr(signed)size)
4、s=(ff *)malloc(sizeof(ff); s-fsize=size; s-faddr=addr; s-n=head; s-p=head-p; head-p-n=s; head-p=s; head=head-p; return 2; else if(head-faddraddr¤t-faddr-addr=size) head-fsize=size+head-fsize; head-faddr=addr;return 2; else if(current-faddr+current-fsizen-faddraddr+size) s=(ff *)malloc(sizeof(f
5、f); s-faddr=addr; s-fsize=size; current-n-p=s; s-n=current-n;s-p=current; current-n=s; return 1; else if(current-faddr+current-fsize=addr¤t-n-faddraddr+size) current-fsize+=size; return 1; else if(current-faddr+current-fsizen-faddr=addr+size)current-n-faddr=addr; current-n-fsize=size+current-n
6、-fsize; return 1; else if(current-faddr+current-fsize=addr¤t-n-faddr=addr+size) current-fsize+=size+current-n-fsize; current-n=current-n-n; current-n-n-p=current; return 1; else current=current-n; while(current!=head); return 0; char * Fmalloc(unsigned size) ff *current; char *tmp; / int p=0;
7、current=start; do if(start-fsizesize) tmp=start-faddr; start-fsize-=size; start-faddr+=size; return tmp; else if(start-fsize=size) tmp=start-faddr; start-n-p=start-p; start-p-n=start-n; start-fsize=0; return tmp; else start=start-n; while(current!=start); return NULL; void Fprintall(void) ff *curren
8、t=start; /int i=0; do /coutfaddrfsizefaddr,current-fsize); coutn; while(current!=start); /return EXIT_SUCCESS; /system(PAUSE); 4、 源程序、注釋和結(jié)果#include#include#include#define Free 0 /空閑狀態(tài)#define Busy 1 /已用狀態(tài)#define OK 1 /完成#define ERROR 0 /出錯(cuò)#define MAX_length 236 /最大內(nèi)存空間為236KBusing std:cin;using std:co
9、ut;using std:endl;typedef int Status;int flag;typedef struct freearea/定義一個(gè)空閑區(qū)說(shuō)明表結(jié)構(gòu) long size; /分區(qū)大小 long address; /分區(qū)地址 int state; /狀態(tài)ElemType;/ 線性表的雙向鏈表存儲(chǔ)結(jié)構(gòu)typedef struct DuLNode ElemType data; struct DuLNode *prior; /前趨指針 struct DuLNode *next; /后繼指針DuLNode,*DuLinkList; DuLinkList block_first; /頭結(jié)點(diǎn)
10、DuLinkList block_last; /尾結(jié)點(diǎn)Status alloc(int);/內(nèi)存分配Status free(int); /內(nèi)存回收Status recycle_First_fit(int);/循環(huán)首次適應(yīng)算法Status Best_fit(int); /最佳適應(yīng)算法Status Worst_fit(int); /最壞適應(yīng)算法void show();/查看分配Status Initblock();/開(kāi)創(chuàng)空間表 Status Initblock()/開(kāi)創(chuàng)帶頭結(jié)點(diǎn)的內(nèi)存空間鏈表 block_first=(DuLinkList)malloc(sizeof(DuLNode); block
11、_last=(DuLinkList)malloc(sizeof(DuLNode); block_first-prior=NULL; block_first-next=block_last; block_last-prior=block_first; block_last-next=NULL; block_last-data.address=0; block_last-data.size=MAX_length; block_last-data.state=Free; return OK; /分配主存Status alloc(int ch) int request = 0; coutrequest
12、; if(request0 |request=0) cout分配大小不合適,請(qǐng)重試!endl; return ERROR; if(ch=2) /選擇最佳適應(yīng)算法 if(Best_fit(request)=OK) cout分配成功!endl; else cout內(nèi)存不足,分配失??!endl; return OK; if(ch=3) /選擇最壞適應(yīng)算法 if(Worst_fit(request)=OK) cout分配成功!endl; else cout內(nèi)存不足,分配失??!endl; return OK; else /默認(rèn)循環(huán)首次適應(yīng)算法 if(recycle_First_fit(request)=
13、OK) cout分配成功!endl; else cout內(nèi)存不足,分配失?。ata.size=request; temp-data.state=Busy; static DuLNode *p; p=block_first-next; while(p) if(p-data.state=Free & p-data.size=request) /有大小恰好合適的空閑塊 p-data.state=Busy; return OK; break; if(p-data.state=Free & p-data.sizerequest) /有空閑塊能滿足需求且有剩余 temp-prior=p-prior; t
14、emp-next=p; temp-data.address=p-data.address; p-prior-next=temp; p-prior=temp; p-data.address=temp-data.address+temp-data.size; p-data.size-=request; return OK; break; p=p-next; return ERROR;/最佳適應(yīng)算法Status Best_fit(int request) int ch; /記錄最小剩余空間 DuLinkList temp=(DuLinkList)malloc(sizeof(DuLNode); tem
15、p-data.size=request; temp-data.state=Busy; DuLNode *p=block_first-next; DuLNode *q=NULL; /記錄最佳插入位置 while(p) /初始化最小空間和最佳位置 if(p-data.state=Free & (p-data.size=request) ) if(q=NULL)q=p;ch=p-data.size-request;else if(q-data.size p-data.size)q=p;ch=p-data.size-request; p=p-next; if(q=NULL) return ERROR;
16、/沒(méi)有找到空閑塊 else if(q-data.size=request) q-data.state=Busy; return OK; else temp-prior=q-prior; temp-next=q; temp-data.address=q-data.address; q-prior-next=temp; q-prior=temp; q-data.address+=request; q-data.size=ch; return OK; return OK;/最壞適應(yīng)算法Status Worst_fit(int request) int ch; /記錄最大剩余空間 DuLinkList
17、 temp=(DuLinkList)malloc(sizeof(DuLNode); temp-data.size=request; temp-data.state=Busy; DuLNode*p=block_first-next; DuLNode*q=NULL; /記錄最佳插入位置 while(p) /初始化最大空間和最佳位置 if(p-data.state=Free & (p-data.size=request) ) if(q=NULL)q=p;ch=p-data.size-request;else if(q-data.size data.size)q=p;ch=p-data.size-re
18、quest; p=p-next; if(q=NULL) return ERROR;/沒(méi)有找到空閑塊 else if(q-data.size=request) q-data.state=Busy; return OK; else temp-prior=q-prior; temp-next=q; temp-data.address=q-data.address; q-prior-next=temp; q-prior=temp; q-data.address+=request; q-data.size=ch; return OK; return OK;/主存回收Status free(int fla
19、g) DuLNode *p=block_first;for(int i= 0; i next;elsereturn ERROR;p-data.state=Free; if(p-prior!=block_first & p-prior-data.state=Free)/與前面的空閑塊相連 p-prior-data.size+=p-data.size; p-prior-next=p-next; p-next-prior=p-prior;p=p-prior; if(p-next!=block_last & p-next-data.state=Free)/與后面的空閑塊相連 p-data.size+=
20、p-next-data.size; p-next-next-prior=p; p-next=p-next-next; if(p-next=block_last & p-next-data.state=Free)/與最后的空閑塊相連 p-data.size+=p-next-data.size; p-next=NULL; return OK; /顯示主存分配情況void show()int flag = 0; coutn主存分配情況:n; coutnext;cout分區(qū)號(hào)t起始地址t分區(qū)大小t狀態(tài)nn; while(p) cout flag+t; cout data.addresstt; cout
21、 data.sizedata.state=Free) cout空閑nn; else coutnext; cout+nn;/主函數(shù)int main() int ch,choice,addr; /ch:操作選擇標(biāo)記;chioce:算法選擇標(biāo)記 cout請(qǐng)輸入所使用的內(nèi)存分配算法:n; coutch;while(ch3) coutch; Initblock(); /開(kāi)創(chuàng)空間表 while(1) show();cout請(qǐng)輸入您的操作:; coutchoice; if(choice=1) alloc(ch); / 分配內(nèi)存 else if(choice=2) / 內(nèi)存回收 int flag; coutf
22、lag; free(flag); else if(choice=0) break; /退出 else /輸入操作有誤 cout輸入有誤,請(qǐng)重試!endl; continue; 選擇循環(huán)首次適應(yīng)算法已分配好兩個(gè)分區(qū)收回一個(gè)分區(qū)再次分區(qū)超過(guò)空閑分區(qū)的范圍。會(huì)從前面開(kāi)始循環(huán),直到找到合適的空間來(lái)分配最佳適應(yīng)算法現(xiàn)在有兩個(gè)分區(qū)時(shí)空閑的現(xiàn)在分配一個(gè)50KB大小的空間,會(huì)自動(dòng)選擇第一塊分區(qū),能夠滿足對(duì)大空間的需求最壞適應(yīng)算法現(xiàn)在有兩個(gè)分區(qū)時(shí)空閑的如果再分配一個(gè)50KB大小的塊,則會(huì)繼續(xù)從后面的空閑分區(qū)分出,使內(nèi)存缺乏大的空閑分區(qū)4、 實(shí)驗(yàn)結(jié)果與分析: 該程序主要實(shí)現(xiàn)了利用循環(huán)首次適應(yīng)算法、最佳適應(yīng)算法和最
23、壞適應(yīng)算法,模擬UNIX可變分區(qū)存儲(chǔ)管理,實(shí)現(xiàn)對(duì)內(nèi)存區(qū)的分配和釋放管理,所以在程序中我們首先劃分了一整塊大的內(nèi)存區(qū),然后再在這塊內(nèi)存區(qū)上實(shí)現(xiàn)各種算法所對(duì)應(yīng)的操作及其結(jié)果。在測(cè)試結(jié)果方面,對(duì)于執(zhí)行各種算法所顯示的結(jié)果,在結(jié)果顯示界面還是比較完善的,每一次的分配與釋放基本上都顯示出來(lái),而且針對(duì)題目中的要求,也對(duì)程序的顯示結(jié)果進(jìn)行了一些完善,將程序的運(yùn)行結(jié)果以盡可能簡(jiǎn)潔與清楚的方式顯示出來(lái)。5、 本次上機(jī)經(jīng)驗(yàn)及體會(huì): 1、 程序的設(shè)計(jì)可以達(dá)到我們預(yù)期的效果,在整個(gè)程序中盡管采用了雙向鏈表,但仍然沒(méi)有實(shí)現(xiàn)非連續(xù)地址的操作。在程序的測(cè)試中,也遇到了很多困難,整個(gè)程序的運(yùn)行顯示界面起初很讓人看不明白,所以
24、在程序的運(yùn)行顯示結(jié)果方面,可以更加的完善,讓其他人在運(yùn)行程序時(shí)可以一目了然。 2、經(jīng)驗(yàn)及體會(huì):首先沒(méi)理解題意,沒(méi)有分配一整塊,而是分配成不連續(xù)的若干個(gè)部分,后來(lái)經(jīng)過(guò)問(wèn)同學(xué),最后向老師尋問(wèn)才找到正確的意思,將這個(gè)題目完成。這次實(shí)驗(yàn)讓我知道,做題之前一定要理解清題意,從而避免做過(guò)多的無(wú)用功,沒(méi)效率也浪費(fèi)時(shí)間。實(shí)驗(yàn)(二)進(jìn)程調(diào)度模擬一、實(shí)驗(yàn)?zāi)康模?本實(shí)驗(yàn)?zāi)M在單處理機(jī)環(huán)境下的處理機(jī)調(diào)度,幫助理解進(jìn)程調(diào)度的概念,深入了解進(jìn)程控制塊的功能,以及進(jìn)程的創(chuàng)建、撤銷(xiāo)和進(jìn)程各個(gè)狀態(tài)間的轉(zhuǎn)換過(guò)程。二、實(shí)驗(yàn)內(nèi)容:1、實(shí)現(xiàn)進(jìn)程相關(guān)數(shù)據(jù)結(jié)構(gòu)(如進(jìn)程控制塊)的創(chuàng)建和查看功能;2、實(shí)現(xiàn)多種進(jìn)程調(diào)度算法:FCFS、SJF、時(shí)
25、間片輪轉(zhuǎn)調(diào)度算法。三、程序分析與設(shè)計(jì):1、算法思想和概要設(shè)計(jì):首先,在創(chuàng)建進(jìn)程前,我們要先弄懂創(chuàng)建進(jìn)程是個(gè)什么概念,即進(jìn)程包括哪幾個(gè)部分,接著再進(jìn)行創(chuàng)建(包括進(jìn)程名、進(jìn)程到達(dá)時(shí)間、運(yùn)行時(shí)間、當(dāng)前狀態(tài)及鏈表指針)。創(chuàng)建設(shè)完成后就進(jìn)行進(jìn)程調(diào)度,先分析各種調(diào)度算法的思想,在根據(jù)其思想進(jìn)行算法設(shè)計(jì)。2、重要數(shù)據(jù)結(jié)構(gòu)和變量說(shuō)明 struct pcb char pname; /進(jìn)程名 int arrivetime; /進(jìn)程到達(dá)時(shí)間 int runtime; /進(jìn)程運(yùn)行時(shí)間 int status; /進(jìn)程當(dāng)前的狀態(tài) pN; int currenttime; /系統(tǒng)當(dāng)前時(shí)間 int num; /進(jìn)程的個(gè)數(shù) f
26、loat zztime , dztime; /周轉(zhuǎn)時(shí)間與帶權(quán)周轉(zhuǎn)時(shí)間 void createProcess(); /建立進(jìn)程隊(duì)列,所有進(jìn)程初始狀態(tài)為就緒態(tài) void showProcess(); /查看就緒隊(duì)列中的進(jìn)程情況*/ void executeProcess1(); /先來(lái)先服務(wù)算法 void executeProcess2(); /短作業(yè)優(yōu)先調(diào)度算法 void executeProcess3(); /時(shí)間片輪轉(zhuǎn)調(diào)度算法 3、 重要模塊的詳細(xì)設(shè)計(jì) void executeProcess1() cout*使用先來(lái)先服務(wù)調(diào)度算法*endl; cout 進(jìn)程名 到達(dá)時(shí)間 運(yùn)行時(shí)間 完成時(shí)間
27、周轉(zhuǎn)時(shí)間 帶權(quán)周轉(zhuǎn)時(shí)間 endl; currenttime = 0; int log , t=1; for(int i=0;inum;) if(pi.status = 1) i+; continue; else log=i; for(int j=i+1;j pj.arrivetime & pj.status != 1) log=j; if(t=1) currenttime += plog.runtime-plog.arrivetime; t+; else if(currenttime = plog.arrivetime) currenttime += plog.runtime; else cu
28、rrenttime += plog.arrivetime; zztime = currenttime - plog.arrivetime; dztime = zztime / plog.runtime; cout plog.pname plog.arrivetime plog.runtime currenttime zztime dztime endl; plog.status = 1; void executeProcess2() cout*使用短作業(yè)優(yōu)先調(diào)度算法*endl; cout 進(jìn)程名 到達(dá)時(shí)間 運(yùn)行時(shí)間 完成時(shí)間 周轉(zhuǎn)時(shí)間 帶權(quán)周轉(zhuǎn)時(shí)間 endl; currenttime = 0;
29、 int log=0 ; for(int j=log+1;j pj.arrivetime & pj.status != 1) log=j; currenttime += plog.runtime-plog.arrivetime; plog.status = 1; zztime = currenttime - plog.arrivetime; dztime = zztime / plog.runtime; cout plog.pname plog.arrivetime plog.runtime currenttime zztime dztime endl; for(int i=0;inum;)
30、if(pi.status = 1) i+; continue; else log=i; for(int j=i+1;j pj.runtime & pj.status != 1) log=j; if(currenttime = plog.arrivetime) currenttime += plog.runtime; else currenttime += plog.arrivetime; zztime = currenttime - plog.arrivetime; dztime = zztime / plog.runtime; cout plog.pname plog.arrivetime
31、plog.runtime currenttime zztime dztime endl; plog.status = 1; void executeProcess3() int timepiece , max; cout*使用時(shí)間片輪轉(zhuǎn)調(diào)度算法*endlendl; cout*請(qǐng)輸入時(shí)間片大小*timepiece; cout 進(jìn)程名 到達(dá)時(shí)間 運(yùn)行時(shí)間 完成時(shí)間 周轉(zhuǎn)時(shí)間 帶權(quán)周轉(zhuǎn)時(shí)間 endl; for ( int i=0 ; inum ; i+) int flag = i; for ( int j=i+1 ; jnum ; j+) if ( pj.arrivetime pflag.arriv
32、etime) flag = j; if ( flag != i) int t = pflag.arrivetime; pflag.arrivetime = pi.arrivetime; pi.arrivetime = t; t = pflag.runtime; pflag.runtime = pi.runtime; pi.runtime = t; char c = pflag.pname; pflag.pname = pi.pname; pi.pname = c; int runtimeN; for (int i=0 , max = 0 , min =0 ; inum ; i+) runtim
33、ei = pi.runtime; if ( max pi.runtime) max = pi.runtime; currenttime = p0.arrivetime; for( int i=0 ; imax/timepiece + 1; i+ ) for (int j = 0 ; jnum ; j+) if( runtimej= timepiece) runtimej -= timepiece; currenttime += timepiece; if(runtimej = 0 & pj.status =0 ) pj.status = 1; zztime = currenttime - pj
34、.arrivetime; dztime = zztime / pj.runtime; cout pj.pname pj.arrivetime pj.runtime currenttime zztime dztime endl; 4、 源程序、注釋和結(jié)果 #include #include #define N 20using std:cout;using std:cin;using std:endl; struct pcb char pname; /進(jìn)程名 int arrivetime; /進(jìn)程到達(dá)時(shí)間 int runtime; /進(jìn)程運(yùn)行時(shí)間 int status; /進(jìn)程當(dāng)前的狀態(tài) pN;
35、int currenttime; /系統(tǒng)當(dāng)前時(shí)間 int num; /進(jìn)程的個(gè)數(shù) float zztime , dztime; /周轉(zhuǎn)時(shí)間與帶權(quán)周轉(zhuǎn)時(shí)間 void createProcess(); /建立進(jìn)程隊(duì)列,所有進(jìn)程初始狀態(tài)為就緒態(tài) void showProcess(); /查看就緒隊(duì)列中的進(jìn)程情況*/ void executeProcess1(); /先來(lái)先服務(wù)算法 void executeProcess2(); /短作業(yè)優(yōu)先調(diào)度算法 void executeProcess3(); /時(shí)間片輪轉(zhuǎn)調(diào)度算法 /建立進(jìn)程隊(duì)列,所有進(jìn)程初始狀態(tài)為就緒態(tài)void createProcess() coutnum; cout輸入num個(gè)的進(jìn)程名、到達(dá)時(shí)間、運(yùn)行時(shí)間endl; for(int i=0;ipi
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 綠色營(yíng)銷(xiāo) 課件
- 西京學(xué)院《電工電子實(shí)訓(xùn)》2022-2023學(xué)年期末試卷
- 西華師范大學(xué)《中學(xué)歷史教學(xué)論》2022-2023學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《知識(shí)產(chǎn)權(quán)法學(xué)》2023-2024學(xué)年期末試卷
- 西華師范大學(xué)《藝術(shù)采風(fēng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024-2025學(xué)年高中物理舉一反三系列專題2.1 溫度和溫標(biāo)(含答案)
- 西華師范大學(xué)《平面設(shè)計(jì)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《個(gè)人理財(cái)實(shí)務(wù)》2021-2022學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《創(chuàng)業(yè)管理》2022-2023學(xué)年第一學(xué)期期末試卷
- 西昌學(xué)院《英漢筆譯實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 七年級(jí)期中考試動(dòng)員主題班會(huì)
- 2022-2023學(xué)年福建省福州市福清市閩教版五年級(jí)上學(xué)期期中練習(xí)英語(yǔ)試卷(含聽(tīng)力音頻)
- 生活區(qū)消防自查記錄表
- 2024屆廣東省深圳市寶安區(qū)寶安中學(xué)物理九上期中質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 工業(yè)設(shè)計(jì)方法學(xué)
- GB/T 43218-2023煤炭測(cè)硫儀性能驗(yàn)收導(dǎo)則
- 創(chuàng)新方法大賽理論測(cè)試題庫(kù)(2018、2019、經(jīng)典題庫(kù))
- 湖北省武漢一初慧泉2023-2024+學(xué)年上學(xué)期9月同步練習(xí)Unit1-Unit+3九年級(jí)英語(yǔ)試卷
- 《中華商業(yè)文化》第五章
- 環(huán)境與健康及醫(yī)院環(huán)境
- (完整版)華為虛擬化技術(shù)方案
評(píng)論
0/150
提交評(píng)論