




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、系統(tǒng)調(diào)用實(shí)習(xí)報(bào)告善良的大姐姐 2015.5.3目錄一:總體概述.3二:任務(wù)完成情況任務(wù)完成列表( Y/N).3具體Exercise的完成情況.3三:遇到的困難以及解決方法18四:收獲及感想19五:對(duì)課程的意見(jiàn)和建議19六:參考文獻(xiàn)193:總體概述自Iab4我們完成了虛擬內(nèi)存的實(shí)習(xí),可以運(yùn)行用戶程序之后,我們就考慮加入系統(tǒng)調(diào) 用。即,用戶程序可以通過(guò)特定的系統(tǒng)調(diào)用,陷入Nachos內(nèi)核,從而完成特定的目標(biāo)。本次lab 一共要求完成10個(gè)系統(tǒng)調(diào)用,包括兩大部分,文件系統(tǒng)相關(guān)Create,Open, Close,Read, Write ;用戶程序相關(guān)Exec, Fork,Yield,Join,Exi
2、t。需要在閱讀和理解源碼的基礎(chǔ)上,知道系統(tǒng)調(diào)用的執(zhí)行流程,進(jìn)一步修增源代碼,實(shí)現(xiàn)新增的系統(tǒng)調(diào)用功能。二:任務(wù)完成情況任務(wù)完成列表(Y/N)Exercise1Exercise2ExercisesExercise4Exercise5YesYesYesYesYes具體Exercise的完成情況Exercise 1 :源代碼閱讀任務(wù):閱讀與系統(tǒng)調(diào)用相關(guān)的源代碼,理解系統(tǒng)調(diào)用的實(shí)現(xiàn)原理。 完成情況:1. Syscall.h定義了每個(gè)系統(tǒng)調(diào)用對(duì)應(yīng)的系統(tǒng)調(diào)用號(hào) 聲明了每個(gè)系統(tǒng)調(diào)用概述:1)2)Exce ption.cc2.概述:對(duì)系統(tǒng)陷入進(jìn)行處理。1)從machine的2號(hào)寄存器讀入系統(tǒng)調(diào)用號(hào)2)3)執(zhí)行對(duì)
3、應(yīng)的操作代碼(需要自己完成)(如果需要)將返回值寫回 Machine的2號(hào)寄存器Starts3.概述:當(dāng)用戶程序執(zhí)行一個(gè)系統(tǒng)調(diào)用的時(shí)候,將參數(shù)放入exception.cc 執(zhí)行。以 Halt 為例:2號(hào)寄存器,然后跳轉(zhuǎn)到Halt:adldlu $2$0,SC_Hal.t syscallj$31,end Halt將系統(tǒng)調(diào)用 號(hào)放入2號(hào) 寄存器.globl Exit .ent Exit4. 總結(jié)當(dāng)用戶希望執(zhí)行一條系統(tǒng)調(diào)用的時(shí)候:1)2)3)4)5)6)在用戶程序中調(diào)用當(dāng)這條語(yǔ)句被OneInstruction 函數(shù)解析執(zhí)行時(shí),會(huì)判斷出這是一條系統(tǒng)調(diào)用,轉(zhuǎn) 入 start.s在start.s中找到系統(tǒng)
4、調(diào)用對(duì)應(yīng)的入口(可能需要自己增加),將系統(tǒng)調(diào)用號(hào)放入 mach ine的2號(hào)寄存器,并轉(zhuǎn)入 exce pti on.cc在exception.cc中,讀出2號(hào)寄存器中的系統(tǒng)調(diào)用號(hào),執(zhí)行對(duì)應(yīng)操作 必要時(shí),將返回值寫回2號(hào)寄存器,并注意, 指令回到用戶程序系統(tǒng)調(diào)用的下一條繼續(xù)執(zhí)行。將PC前進(jìn)。系統(tǒng)調(diào)用完成。為了執(zhí)行一條系統(tǒng)調(diào)用,我們需要完成的部分:1)自己寫一個(gè)用于測(cè)試的用戶程序的.c文件,序能夠被Nachos系統(tǒng)執(zhí)行。并修改test的Makefile,使得用戶程all: halt shell matnult sortpiytest RyteST2flfor lab 6mytest.o: nyte
5、st,c$(cc) S(CFLACS) -c nytest.cmytest: Eytest.o start.o$tlLD) LDFLACS) starto nytest - o -o mytestcof f .,/btn/coff2noff nytest.coff nytest第一步:增 加需要編譯 的文件名 稱。這兩個(gè) 是我新增的mytestZxO: mytestS.C$(CC) 5(CFLACS) -c nytest2.cmytest?: nytestZ.o start,o5(iLD) (ldflags) Start.0 niytestz.o -o.coff./bin/cqffinoff
6、nytestZ.caff nytest2第二步,增 加如何編譯 的信息。因?yàn)楸敬蝜ab需要寫的系統(tǒng)調(diào)用,在start.s中都已經(jīng)寫好了,因此我們不需要修改。同樣,syscall.h中,系統(tǒng)調(diào)用號(hào)和函數(shù)聲明也都寫好了。(但如果希望自己 新增系統(tǒng)調(diào)用,這兩個(gè)文件是需要修改的,修改方式可以參照別的系統(tǒng)調(diào)用) 補(bǔ)充exce ptio n.cc ,執(zhí)行對(duì)應(yīng)的系統(tǒng)調(diào)用操作。2)3)5Exercise 2:系統(tǒng)調(diào)用實(shí)現(xiàn)任務(wù):類比Halt的實(shí)現(xiàn),完成與文件系統(tǒng)相關(guān)的系統(tǒng)調(diào)用: Create, Open, Close,Write, Read。Syscall.h文件中有這些系統(tǒng)調(diào)用基本說(shuō)明。Exercise 3:
7、編寫用戶程序任務(wù):編寫并運(yùn)行用戶程序,調(diào)用 練習(xí)2中所寫系統(tǒng)調(diào)用,測(cè)試其正誤。EX2+EX3完成情況:首先,在完成了文件系統(tǒng)的lab之后,為了能夠讓userprog編譯通過(guò),需要修改system.h 的makefile,多include幾個(gè)頭文件以及聲明 extern變量。否則,會(huì)出現(xiàn):undefined reference *這種情況。#lfdef USEIRPROGRAM Stnclude maichtne*h include bitmaph include synchdisk,h*BitMap *bltpiap; Machine* machine; SynchDisk *synchDis
8、k;extern extern extern ffendlf其次,我們需要在 exce ption.cc中,加入系統(tǒng)調(diào)用入口:/create systen callelse (which = SystallException) (type = SC_Create) prlntf(nCreate systen call:iri);createFuiincOi/Open system callelse ifC(which = SyscsllException) & (type = SCjOpen) prlntfvoid Machine:PCAdv白nced()WrtteRegtster(PrevP
9、CReg , regtstersPCReg); WrlteRegtsterCPCReg,reglstersPCReg+stzeof(tnt); WrlteRegtster(NextPCReg,regttersNextPCReg+stieoflnt); 代碼:(從內(nèi)存中讀出文件名部分)Z/nane pointertnt base = machine-ReadRegister(4);tnt value:tnt count = 0;/determine the filename length first do naichlne-ReadrtenCbase+,l,&value); count +;)w
10、hlle(value != 0); printfCfvXenane length is %dncount);/now getting the filename!base = base - count;char f iIeNiaineC0Liftt;forCtnt 1 = 0;i ReadrtenC ba se+i,l, Rvalue); flleNapiel=is allocated. Is allocated.8 for main9 for main1 for Plain is allocated. thread natn starts running.Now Is testing crea
11、ting function; filename length Is 6 create the userprog-flie create succeed 1 thread main phys phys phys physa * txt nowpeg亡 page pagF page0123exited.,. for for for formain main natn mainIs Is is isclear * 匚 I ear. 匚 I ear. 匚 I ear,之后在userprog文件夾下,就出現(xiàn)了a.txt這個(gè)文件(因?yàn)槲沂怯?UNIX的文件系統(tǒng)來(lái)做這次lab的)2. OpenFileld
12、Open(char *name)概述:1)從4號(hào)寄存器讀入文件名指針2) 利用指針,從 Machine的mainmemory (內(nèi)存)中,讀出文件名3) 用文件名為參數(shù),調(diào)用filesystem的open函數(shù),打開文件,返回OpenFile指針(在 Nachos系統(tǒng)中,Open File相當(dāng)于是文件描述符)4)將 Open File 指針寫 回 machine 的 2 號(hào)寄存 (mach in e-WriteRegister(2,( in t) open file)5)PC前移代碼:(Openfile寫回部分)OpenFile *operftle = ftleSysten-opeini(ftI
13、eNane); Iftopenfile = NULL) prtntf(file is not exist!open failed.n);else prlntf open succeed Jn);/put the return value into 2-register ndichtne-HrtteRegister(2 , C i-nt)openflle); prlntf openfile pointer%dri, Clnt)openfile);(Open成功會(huì)配合之后的系統(tǒng)調(diào)用再進(jìn)行測(cè)試截圖)(打開失敗)phys page 8 phys page 9 phys page 10 for naln
14、 Is allocated, thread main starts running * * * Now ts testing opening filename length Is 6 open the userprog-file file Is not thread main phys phys phys physfor main for mainIS allocated.IS allocated.fuM tton:p肖eP3ge0123exist open exited.,. for for for formain main main maina,txt now failed * 4ISIs
15、IsIsclear * clear clear * clear.測(cè)試截圖:3. void Close(OpenFileld id)概述:1)2)從4號(hào)寄存器中讀出Open File的指針3)代碼:(從寄存器中讀出 Openfile指針+關(guān)閉 部分) int base - machne-ReadReglster(4);printf (* base=openflie pointer =%6n , base);調(diào)用filesystem的close方法,將open file關(guān)閉(自己編寫的 close方法,其中將傳 入的OpenFile指針delete掉)PC前移OperFtle *openfile
16、= (OpenFlle *)base: iprintfCclose the userprog-flle nown); bool success = flleSysten-Close(openfile);測(cè)試截圖:(Close配合open系統(tǒng)調(diào)用測(cè)試截圖)Create system call: filename length is 6 create the userprog-ftle a*txt now create succeed!Open system call: filenane length is 6 open the userprog-ftle a*txt now open succe
17、ed!openfile pointer=lS0468S36Close system call: base=openflle pointer=159468536 close closethe userprog-flle now succeed!創(chuàng)建文件4.int Read(char *buffer, int size, Op enFileld id)概述:1)2)3)4)5)6)代碼:ReadFurcf)從4號(hào)寄存器讀出來(lái)裝載字符串的指針從5號(hào)寄存器讀出需要讀取的字符串長(zhǎng)度從6號(hào)寄存器讀出OpenFile的指針調(diào)用open file的read函數(shù),從光標(biāo)位置讀出一定長(zhǎng)度的字符串,存入臨時(shí)數(shù)組當(dāng)中
18、將讀出來(lái)的內(nèi)容,寫回 machi ne的main memory中,寫入的位置就是字符串指針依 次往后。將open file的read函數(shù)的返回值,寫入 2號(hào)寄存器當(dāng)中。/getting write content start pointertnt buffer_base = machine-ReadRegtsterC43; /getting write content lengthtnt count = machine-AReadRegister(5); /getting the openftle pointertint fd = nachlre-ReadRegtter(e);printf C
19、 reading content length iscount);prtntf CreadtniQ the userprog-ftle nownOlPEnFll亡 *openftic = (OpenFile *)fd;prlntfCreading openfLle=%dn,fd); printf (* reading base-%dn* buffer base);IftopenflTe = MULL) prlntf Cftle Is not exist!open fatled. r ;else pIntf (open succeedM reading. . ;char con,tentcciu
20、nt ;tnt value:openfile-ReadCcontent.count); cantertcount = G;printf(ending cortent: sncontent;for(Int I = 0;1 WrlteMen(buffer base+i *1 * value);測(cè)試截圖:(見(jiàn)write部分,二者配合測(cè)試。)5. void Write(char *buffer, int size, OpenFileld id)概述:1)2)3)4)從4號(hào)寄存器讀出來(lái)裝載字符串的指針從5號(hào)寄存器讀出需要讀取的字符串長(zhǎng)度從6號(hào)寄存器讀出OpenFile的指針從machine的mainme
21、mory中,從字符串指針位置開始,連續(xù)讀出字符串長(zhǎng)度個(gè)字 符5)代碼:將讀出來(lái)的內(nèi)容,調(diào)用Open File的write方法,寫入文件當(dāng)中。votdl WrtteFuncO/getting write content start pointer tnt bufferbase = nachln色-AReadRegister(4); /getting write content lengthIrt count = riachtne - Re3dRegixster(5); /getting the openfile pointer int fd = nachtne-ReadRegi.sterC6)-
22、 printf( writing content length Is Sdn.count); /getting write content char contentcount;forCtnt i. = 0;i Readrtem(buffer_base+t * 1, fivaluie); content1 = Cchar)value;printf(write content! %sncontent);Iprlntf C writing the Lserprog- file 需s riown , fileName); OpenFile *openfile = (OpenFile *)fd;tf(o
23、penfi-Ie = NULL) prlntf(file is not existopen failed.n);else prlntf( open succeed! writing.n; /write In the fileopenfile-WrtteCcontent,count);測(cè)試截圖:a)單獨(dú)測(cè)試writeaddrspace.ccKau于匚亠 ww(ubuntu: */OS/beiyong/nachos-: phys page 11 for main Is allo匚白ted* thread nain starts running.,.成功寫入希望 寫入的內(nèi)容Create system
24、 call: filename length is 6 create the userprog-ftle a,txt now create succeed!Open system call: flTenane length is 6 open the userprog-ftle a.txt now open succeed!openfile potriter=139130832nowWrite system call: writing content length is write content: 12345 wrlttng the userprog-ftle open succeed! w
25、riting*, thread main exited* * *b)配合read 起測(cè)試Int nalnC)+*Int fdi,fd2A; char buffer10; for(t = 0J1 run。代碼:a) Fork之后調(diào)用的函數(shù):/(labC-exec processtng function) void! exec_fork_func(-Lnt name)char *flleNaine = new ctiar256; flleNane = (char *)nane;OpenFlIe *ex2 = flleSysten-Open(fT.leName); AddrSpace *spdceZ
26、 = new AddrSpaceCexZ); currentThreflid-spflice = space2;currentThread-sftlenane = ftleNane;/ set the irr / load page “space2-InitRegtsters(; spaceZ-RestoreStateC);ptntf(thE3d %.s starts running %sncuirrentThr( machine-aRunC);b)處理系統(tǒng)調(diào)用的代碼:ExecFun,c()/nane pointeInt base = fnachine-ReadRegilter(4);lnt
27、value;Int count = 0;/determine the fllenane length first do nachtne-ReadMenbase+i1,&value); count +; whil(value != 0);prlntf(filename length Is.count);/now getting the filename!base = base -匚oumt;char flleNanecount;for(int 1 = 0;l ReadMenibase+t、1value); ftl.eNane = (char)vatue;flleNanecount = 0 ;|T
28、hread *newthreadi = new Threedi(second thread!, i);/set relattonshlp pointer bool found = false;forCint t = 0;t childlThre3dt = NULL) currentThread-chtldThreadl = newthread; Rachlne-WrtteRegtster(2 , (int)inewthread); found = true;break;ifC!found) pintf(cuent thread ts full of children! Exec failed!
29、n); nachlne-PCAdv目nc亡d);retwriiii;newthread ofatherThread = currertThread;newthred Foirk(exec_fork_f jinc, (Int )f IkeNane);machine-pcAdvanced();測(cè)試截圖:2. int Join(S paceld id) 概述:1)2)3)(和之后的join+exit 起測(cè))從4號(hào)寄存器中讀出要等待的子線程的OpenFile指針找到自己的childThread數(shù)組中,這個(gè) Open File指針對(duì)應(yīng)的位置While循環(huán),當(dāng)這個(gè)位置不為 NULL時(shí),調(diào)用currentT
30、hread-Yield(),等待子線程結(jié) 束4)跳出while循環(huán)后,將子線程的結(jié)束狀態(tài)寫入2號(hào)寄存器,PC前移代碼:voidJolnFuincC)Int id = nachT.re-ReadRegT.ster(4);Thread *cthread = (Thread *)ld;bool found = false;ifit num;for(Int t = G;i iMaxThreadStze;! +) if(currentThread-3chiIdThireadi = cthread) nun - i;found = true;breakj|tfchtldThreadnun != NULL)
31、 prlntfC%s thread is waiting hts child thread: %s f currentThreaid-YieldC );thread: child thread i.s finished 3 Jotn suiccemachine PCAdv3iincecl();測(cè)試截圖:(配合Exec和Exit 一起測(cè))3. void Exit(int status)概述:由于Iab4虛擬內(nèi)存中,需要在 exit系統(tǒng)調(diào)用中釋放page和清空tlb,因此此處繼續(xù) 保留這兩個(gè)功能。判斷:如果當(dāng)前exit的線程不是主線程:如果當(dāng)前線程有父線程,將父線程中對(duì)應(yīng) 的自己設(shè)置為 NULL
32、(表明自己已經(jīng)要退出啦!),并且調(diào)用currentThread-Finish() 如果是主線程:PC前移1)2)3)測(cè)試截圖:(配合之前的 Exec和Exit)a)測(cè)試函數(shù):ftlncXuide syscaXl. hMytest 函數(shù):Create(a * txf ); /exit function test Exlt0);int navnC)Int Id:id = ExecC. ./test/nytest);/create function testzioin(ldl) ;|ExltCO);b)測(cè)試截圖:wviubuntu :/OS/beiyorg/nacllo5-3.4/code/iJse
33、rprog$ ,/iacho5 physPhys phyw phyg phys ph瀘 phys physPhys phyw ph瀘”./test/nytest2page page PM* PME page page page pag page p斫 p科亡for for for for for for for for for forPlain Plain rin natn natn main Plain natn nalnIs Is Is is is isJ15 IsIs Isallocated. allocated. allocated* allocated. allocated. all
34、ocated. allocated. allocated. allocated. allocated+9g10 for main is allocatedthread main starts running.Exec syten call: ftlenane length Is isnow Is change froE main ph瀘 phys ph瀘 ph瀘 physPhys phys ph瀘 phys ph瀘 ph瀘 thread second thread starts running ”/test/rtytestpmgE page page page page page page p
35、sgE page page P age12131415le17IS192021for for for for for for for for for for forsecond second second second second second second mfand second second secondto second thread thread thread thread thread thread thread thread thread thread threadIs Is isJ15佔(zhàn)Is tsIs is is is優(yōu)先級(jí)新的用寸主線程程此時(shí)執(zhí)行完了Exec,開始執(zhí)thrd
36、d. allocated, allocated. allocated. allocated. allocated, allocated, allocated, alLncated. allocated. allocated. allocated.now Is chdngm fron second thread to nam.Join systen call:main thread is watting his child thread: secord thread finishes.Mytest行Join系統(tǒng)調(diào)用。由于在等待的子線程還未結(jié)束,于是讓位 CPUnow Is change from
37、 main to second thread.now匚reate system call: filename length is 6 create the userpog-file a.txt create succeed IExit systen call:thread second thread exited* phys phys phys phys phys phys phys phys phys phys physP眄e page page page page page page page page12 n141516171819page ZO page 21far for for f
38、or far far for for for for farsecond second second second second second second second second second secondthread thread thread thread thread thread thread thread thread thread threadis clear, is clear. Is clear. Is clear* L5 clear * Is clear” is clear. Is clear. Is clear* is clear. is clear,吉執(zhí)行 myte
39、st中的內(nèi)容:e 個(gè)文件,然后Exit退 EXIT中會(huì)釋放物理頁(yè))tld=l has finished.now ts Chang亡 from second thread to matn+ ntn thread: child thread is finished! Join succeed3Exit system call: thread main exit年d phys phys phys phys phys phys phys physpage 0 P age 1 page 2 page 3 page 4 page 5 page 6 page 7for for for for for for
40、 for formain main main main main main main mainttsisIS Is ts Is15clear* cVcar * clear, clear. clear, clear* clear * clear,新線程執(zhí)行完畢了,切換到主線程。主線程由于上次 PC沒(méi)前移, 于是再次調(diào)用Joi n。此次成功了。4. void Fork(void (*func)()概述:1)從4號(hào)寄存器中讀出要執(zhí)行的用戶函數(shù)的起始PC2)3)新創(chuàng)建一個(gè)線程,并參照 Exec中的步驟,完成父子關(guān)系的建立 PC前移。4)在Fork的系統(tǒng)函數(shù)中,完成準(zhǔn)備工作:將父進(jìn)程的用戶空間(Page
41、table)拷貝到子進(jìn)程中;將 machi ne當(dāng)前的PC值修改為1)中的PC值,Next PC值修改為1)中的5)注意:PC值+4;將修改完成的這套寄存器值存放到新線程的寄存器當(dāng)中PC值,其余的都和父進(jìn)程相同!)Machine-Run(),就可以跳轉(zhuǎn)到用戶函數(shù)執(zhí)行了。(其中,除了兩個(gè)1)開始時(shí)刻,子進(jìn)程和父進(jìn)程的寄存器值,除了2)子進(jìn)程和父進(jìn)程使用同樣的3)子進(jìn)程和父進(jìn)程共享 machine的棧空間(因此子進(jìn)程不必重設(shè)棧空間) 代碼:PC不同,別的都相同。P agetable。voidForkFuncO/get the start position of the function tnt P
42、C_now = rnachtne-ReadReglster(4); space_pc *spacewtthpc = new space_pc; spacewlthpc * space = curreritThread*s pace; spacewithp匸-APC_now = PC_now;Thread *newthread = new Threadl(second thread, 1); /set relationship pointerbool found = false;for(T.nt t = Q;i chtIdThreadi = NULL) cur rentTh read-ch1.1
43、dTh read i = newthread; nachtne-WrtteRegister(Z,lnt)newthread); found = true;break;If(J found) prlntf(current thread Is full of children! Ex machlne-PCAdvancedC);return;newthread-fatherThread = currentThread;newthread-Fork(fork_func,(tnt)pmcewithpc);machine-aPCAdvanced);voidfork_funcClnt s)prlntf (n
44、ow preparing for fork. .n ,currentThread-getNc /set the new thread user space, the same as father thread printf(*stepl. Set the Sss user space as its father threads* space_pc *spacewithpc = (spa匚e_pc *s;AddrSpace *tnp = specewithpc-space;AddrSpace *space = new AddrSpacetnp);currentThread-ASpace = space:tfit PC_now = spacewithpc-PC_now;prlntf(Set the riachtne-PCReg to %d,NextPCReg to %dn /set the PC registers to the func It wil
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC/IEEE 8802-1AS:2021/AMD1:2025 EN Information technology - Telecommunications and information exchange between systems - Local and metropolitan area networks - Part 1A
- 【正版授權(quán)】 IEC 63522-24:2025 EN-FR Electrical relays - Tests and measurements - Part 24: Load transfer
- 2025年心理健康教育與心理輔導(dǎo)能力測(cè)試試題及答案
- 2025年心理測(cè)評(píng)師考試卷及答案
- 2025年商法知識(shí)競(jìng)賽考試試卷及答案
- 2025年國(guó)際法與國(guó)內(nèi)法考試題及答案
- 2025年法務(wù)會(huì)計(jì)相關(guān)考試題及答案
- 2025年城市規(guī)劃師執(zhí)業(yè)資格考試卷及答案
- 2025年計(jì)算機(jī)科學(xué)與技術(shù)職業(yè)資格考試試卷及答案
- 2025年建筑師職業(yè)認(rèn)證考試試卷及答案
- 拆除工程施工安全培訓(xùn)
- 《一本書讀懂Web3.0區(qū)塊鏈、NFT、元宇宙和DAO》讀書筆記
- 工廠管理工作流程
- 項(xiàng)目管理班子人員崗位職責(zé)及分工
- 稻谷加工礱谷及礱下物分離
- 物聯(lián)網(wǎng)技術(shù)及在油氣生產(chǎn)中的應(yīng)用(2015石油論壇)
- 數(shù)獨(dú)六宮格練習(xí)題
- 人工智能在招聘中的應(yīng)用
- 電子產(chǎn)品與輻射危害
- 柔性電子器件應(yīng)用
- (完整版)病例演講比賽PPT模板
評(píng)論
0/150
提交評(píng)論