版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)七:同步機(jī)構(gòu)實(shí)驗(yàn)報(bào)告、實(shí)習(xí)內(nèi)容模擬實(shí)現(xiàn)用同步機(jī)構(gòu)避免發(fā)生進(jìn)程執(zhí)行時(shí)可能出現(xiàn)的與時(shí)間有關(guān)的錯(cuò)誤二、實(shí)習(xí)目的 進(jìn)程是程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過(guò)程,進(jìn)程是并發(fā)執(zhí)行的,也即系統(tǒng)中 的多個(gè)進(jìn)程輪流地占用處理器運(yùn)行。我們把若干個(gè)進(jìn)程都能進(jìn)行訪(fǎng)問(wèn)和修改的那些變量稱(chēng)為公共變量。 由于進(jìn)程 是并發(fā)地執(zhí)行的,所以,如果對(duì)進(jìn)程訪(fǎng)問(wèn)公共變量不加限制,那么就會(huì)產(chǎn)生“與 時(shí)間有關(guān)” 的錯(cuò)誤,即進(jìn)程執(zhí)行后所得到的結(jié)果與訪(fǎng)問(wèn)公共變量的時(shí)間有關(guān)。 為 了防止這類(lèi)錯(cuò)誤,系統(tǒng)必須要用同步機(jī)構(gòu)來(lái)控制進(jìn)程對(duì)公共變量的訪(fǎng)問(wèn)。 一般說(shuō), 同步機(jī)構(gòu)是由若干條原語(yǔ)同步原語(yǔ)所組成。 本實(shí)習(xí)要求學(xué)生模擬 PV 操 作同步機(jī)構(gòu)的實(shí)現(xiàn),模擬進(jìn)程
2、的并發(fā)執(zhí)行, 了解進(jìn)程并發(fā)執(zhí)行時(shí)同步機(jī)構(gòu)的作用。三、實(shí)習(xí)題目模擬 PV 操作同步機(jī)構(gòu),且用 PV 操作解決生產(chǎn)者消費(fèi)者問(wèn)題。提示:(1) PV操作同步機(jī)構(gòu),由P操作原語(yǔ)和V操作原語(yǔ)組成,它們的定義如下:P操作原語(yǔ)P (s):將信號(hào)量s減去1,若結(jié)果小于0,則執(zhí)行原語(yǔ)的進(jìn)程被置 成等待信號(hào)量 s 的狀態(tài)。V操作原語(yǔ)V (s):將信號(hào)量s加1,若結(jié)果不大于0,則釋放一個(gè)等待信號(hào) 量 s 的進(jìn)程。這兩條原語(yǔ)是如下的兩個(gè)過(guò)程:procedure p (var s: semaphore);begin s: = s-1;if s<0 then W (s)end pprocedure v (var s
3、: semaphore);egin s: = s+1;if s 0犬hen R (s)end v其中W (s)表示將調(diào)用過(guò)程的進(jìn)程置為等待信號(hào)量s的狀態(tài);R (s)表示釋放一個(gè)等待信號(hào)量s的進(jìn)程。在系統(tǒng)初始化時(shí)應(yīng)把semaphore定義為某個(gè)類(lèi)型,為簡(jiǎn)單起見(jiàn),在模擬實(shí)習(xí) 中可把上述的semaphore直接改成integer。(2) 生產(chǎn)者消費(fèi)者問(wèn)題。 假定有一個(gè)生產(chǎn)者和一個(gè)消費(fèi)者,生產(chǎn)者每次生產(chǎn)一件產(chǎn)品,并把生產(chǎn)的產(chǎn)品存入共享緩沖器以供消費(fèi)者取走使用。 消費(fèi)者每次從緩沖器內(nèi)取出一件產(chǎn)品去 消費(fèi)。禁止生產(chǎn)者將產(chǎn)品放入已滿(mǎn)的緩沖器內(nèi), 禁止消費(fèi)者從空緩沖器內(nèi)以產(chǎn)品。 假定緩沖器內(nèi)可同時(shí)存放 10件
4、產(chǎn)品。那么,用 PV 操作來(lái)實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者 之間的同步,生產(chǎn)者和消費(fèi)者兩個(gè)進(jìn)程的程序如下:B: array 0.9 of products;s1, s2; semaphore;s1: =10, s2: =0;IN, out: in teger;IN: =0; out: =0;cobeg inprocedure producer;c: products;beg inL1:Produce (c);P (S1);BIN: =C;IN: =(IN+1)mod 10;V (s2);goto L1end;procedure con sumer;x: products;beg inL2:p (S2);x
5、: =Bout;out: =(out+1) mod10;v (S1);con sume (x);goto L2end;coend.其中的semaphore和products是預(yù)先定義的兩個(gè)類(lèi)型,在模擬實(shí)現(xiàn)中semaphore用 integer代替,products 可用 integer或 char 等代替。(3) 進(jìn)程控制塊PCB。為了記錄進(jìn)程執(zhí)行時(shí)的情況,以及進(jìn)程讓出處理器后的狀態(tài),斷點(diǎn)等信息, 每個(gè)進(jìn)程都有一個(gè)進(jìn)程控制塊 PCB。在模擬實(shí)習(xí)中,假設(shè)進(jìn)程控制塊的結(jié)構(gòu)如 圖12-1。其中進(jìn)程的狀態(tài)有:運(yùn)行態(tài)、就緒態(tài)、等待態(tài)和完成態(tài)。當(dāng)進(jìn)程處于等 待態(tài)時(shí),在進(jìn)程控制塊PCB中要說(shuō)明進(jìn)程等待原因(
6、在模擬實(shí)習(xí)中進(jìn)程等待原 因是為等待信號(hào)量S1或22);當(dāng)進(jìn)程處于等待態(tài)或就緒態(tài)時(shí),PCB中保留了斷 點(diǎn)信息,一旦進(jìn)程再度占有處理器則就從斷點(diǎn)位置繼續(xù)運(yùn)行;當(dāng)進(jìn)程處于完成狀態(tài),表示進(jìn)程執(zhí)行結(jié)束。進(jìn)程名|L狀態(tài)等待原因 |斷點(diǎn) | 圖12-1進(jìn)程控制塊結(jié)構(gòu)(4) 處理器的模擬。計(jì)算機(jī)硬件提供了一組機(jī)器指令,處理器的主要職責(zé)是解釋執(zhí)行機(jī)器指令。 為了模擬生產(chǎn)者和消費(fèi)者進(jìn)程的并發(fā)執(zhí)行,我們必須模擬一組指令和處理職能。模擬的一組指令見(jiàn)圖12-2,其中每條指令的功能由一個(gè)過(guò)程來(lái)實(shí)現(xiàn)。用變量 PC來(lái)模擬“指令計(jì)數(shù)器”,假設(shè)模擬的指令長(zhǎng)度為1,每執(zhí)行一條模擬指令后,PC加1,提出下一條指令地址。使用模擬的指令
7、,可把生產(chǎn)者和消費(fèi)者進(jìn)程的 程序表示為圖12-3的形式。定義兩個(gè)一維數(shù)組PA0.4和SA0.4,每一個(gè)PAi存放生產(chǎn)者程序中的一 條模擬指令執(zhí)行的入口地址;每個(gè) SAi存放消費(fèi)者程序中的一條模擬指令執(zhí)行 的入口地址。于是模擬處理器執(zhí)行一條指令的過(guò)程為:取出PC之值,按PAPC或SAPC得模擬指令執(zhí)行的入口地址,將PC之值加1,轉(zhuǎn)向由入口地址確定的 相應(yīng)的過(guò)程執(zhí)行。(5) 程序設(shè)計(jì) 本實(shí)習(xí)中的程序由三部分組成:初始化程序、處理器調(diào)度程序、模擬處理器 指令執(zhí)行程序。各部分程序的功能及相互間的關(guān)系由圖12-4至圖12-7指出。模擬的指令功能p (S):執(zhí)行P操作原語(yǔ)v (S)執(zhí)行V操作原語(yǔ)putBI
8、N: =product; IN: = (IN+1) mod 10GETx: =Bout; out: =(out+1) mod 10produce輸入一個(gè)字符放入C中con sume打印或顯示x中的字符GOTO Lr pc: =lNOP空操作圖12-2 模擬的處理器指令序號(hào)生產(chǎn)者程序消費(fèi)者程序0producep (S2)1p (s1)GET2PUTv (S1)3v (S2)con sume4goto 0goto 0圖12-3生產(chǎn)者和消費(fèi)者程序初始化程序:模擬實(shí)習(xí)的程序從初始化程序入口啟動(dòng),初始化工作包括對(duì)信號(hào)量S1、S2賦初值,對(duì)生產(chǎn)者、消費(fèi)者進(jìn)程的 PCB初始化。處理器調(diào)度程序:在計(jì)算機(jī)系統(tǒng)中
9、,進(jìn)程并發(fā)執(zhí)行時(shí),任一進(jìn)程占用處理器執(zhí) 行完一條指令后就有可能被打斷而讓出處理器由其它進(jìn)程運(yùn)行。故在模擬系統(tǒng)中也類(lèi)似處理,每當(dāng)執(zhí)行一條模擬的指令后,保護(hù)當(dāng)前進(jìn)程的現(xiàn)場(chǎng),讓它成為非運(yùn) 行態(tài),由處理器調(diào)度程序按隨機(jī)數(shù)再選擇一個(gè)就緒進(jìn)程占用處理器運(yùn)行。四、實(shí)習(xí)報(bào)告(1) 實(shí)習(xí)題目。(2) 打印源程序并附上注釋。(3) 從鍵盤(pán)上輸入一組字符,由生產(chǎn)者每次讀入一個(gè)字符供消費(fèi)者輸出。運(yùn) 行模擬程序,打印依次讀入的字符和經(jīng)消費(fèi)者輸出的字符。(4) 把生產(chǎn)者和消費(fèi)者進(jìn)程中的P操作、V操作都改成空操作指令,觀察在 兩者不同步的情況下可能出現(xiàn)的與時(shí)間有關(guān)的錯(cuò)誤。 打印依次讀入的字符和經(jīng)消 費(fèi)者輸出的字符。1)實(shí)驗(yàn)
10、題目: 2)實(shí)驗(yàn)源代碼:模擬PV操作同步機(jī)構(gòu),且用PV操作解決生產(chǎn)者消費(fèi)者問(wèn)題。分為四個(gè)頭文件。1、a.h 頭文件代碼如下:#include<string.h>#include<ctype.h>#include<malloc.h> /* malloc()等 */#include<limits.h> /* INT_MAX等 */#i nclude<stdio.h> /* EOF(=AZ或 F6),NULL */#include<stdlib.h> /* atoi() */#include<io.h> /* eof
11、() */ #include<math.h> /* floor(),ceil(),abs() */ #include<process.h> /* exit() */#include <iostream> using namespace std;#include <time.h>#define BUF 10 /緩存的大小#define MAX 20 /最大可以輸入的字符2、b.h 頭文件代碼如下:/ 數(shù)據(jù)結(jié)構(gòu)的定義和全局變量typedef struct Pcbchar name10;/ 進(jìn)程名char state10; / 運(yùn)行狀態(tài)char rea
12、son10; /若阻塞,其原因 int breakp; /斷點(diǎn)保護(hù)struct Pcb *next; /阻塞時(shí)的順序Pcb,*link;int s1,s2; / 信號(hào)量 link p1;/ 生產(chǎn)者進(jìn)程 link c1;/ 消費(fèi)者進(jìn)程 char strMAX; / 輸入的字符串 char bufferBUF; / 緩沖池 int len; / 輸入長(zhǎng)度 int sp=0; /string 的指針 int in=0; / 生產(chǎn)者指針 int out=0; / 消費(fèi)者指針 char temp; / 供打印的臨時(shí)產(chǎn)品 char rec_pMAX;/ 生產(chǎn)記錄 int rp1=0;/ 生產(chǎn)記錄指針 ch
13、ar rec_cMAX;/ 消費(fèi)記錄 int rp2=0;/ 消費(fèi)記錄指針 link ready; / 就緒隊(duì)列 link b_s1; /s1 阻塞隊(duì)列 link b_s2; /s2 阻塞隊(duì)列 int pc; / 程序計(jì)數(shù)器 int count; / 字符計(jì)數(shù)器 int con_cnt; / 消費(fèi)計(jì)數(shù)器3、c.h 頭文件代碼如下:void init();/初始化void p(int s);/P操作void v(int s);/V操作void block(int s);/阻塞函數(shù)void wakeup(int s);/ 喚醒函數(shù)void control(); / 處理機(jī)調(diào)度void proces
14、sor();/ 處理機(jī)執(zhí)行void print(); / 打印函數(shù)void init() / 初始化s1=BUF;s2=0;p1=(link)malloc(sizeof(Pcb);/ 建立新的結(jié)點(diǎn) , 并初始化為生產(chǎn)者strcpy(p1->name,"Producer");strcpy(p1->state,"Ready");strcpy(p1->reason,"Null");p1->breakp=0;p1->next=NULL;c1=(link)malloc(sizeof(Pcb);/ 建立新的結(jié)點(diǎn) ,
15、并初始化為消費(fèi)者strcpy(c1->name,"Consumer");strcpy(c1->state,"Ready");strcpy(c1->reason,"Null");c1->breakp=0;c1->next=NULL;ready=p1;ready->next=c1;/ 初始化為生產(chǎn)進(jìn)程在前,消費(fèi)進(jìn)程在后c1->next=NULL;b_s1=NULL;b_s2=NULL;/ 阻塞進(jìn)程為 NULLpc=0;con_cnt=0; / 消費(fèi)計(jì)數(shù)器void p(int s)if(s=1) /
16、p(s1)s1-;if(s1<0)block(1); / 阻塞當(dāng)前生產(chǎn)進(jìn)程elseprintf("t* s1信號(hào)申請(qǐng)成功 !n");ready->breakp=pc; / 保存斷點(diǎn)else /p(s2)s2-;if(s2<0)block(2);/ 阻塞當(dāng)前消費(fèi)進(jìn)程elseprintf("t* s2信號(hào)申請(qǐng)成功 !n");ready->breakp=pc; / 保存斷點(diǎn)void v(int s)if(s=1) /v(s1)s1+;if(s1<=0)wakeup(1); / 喚醒生產(chǎn)進(jìn)程 ready->breakp=pc;
17、 / 保存斷點(diǎn)else /v(s2)s2+;if(s2<=0)wakeup(2);/ 喚醒消費(fèi)進(jìn)程ready->breakp=pc; / 保存斷點(diǎn)void block(int s)/ 阻塞函數(shù)的定義link p;int num1=0;int num2=0;if(s=1)/ 生產(chǎn)進(jìn)程strcpy(p1->state,"Block");/ 改變狀態(tài) strcpy(p1->reason,"S1");/ 說(shuō)明原因 p=b_s1;while(p)num1+;p=p->next;/p的值為NULL表示隊(duì)尾if(!b_s1)b_s1=p1
18、;elsep=p1;p1->next=NULL;printf("t* p1 生產(chǎn)進(jìn)程阻塞了 !n");ready->breakp=pc; / 保存斷點(diǎn) ready=ready->next;/ 在就緒隊(duì)列中去掉 , 指向下一個(gè) num1+;else/ 消費(fèi)進(jìn)程strcpy(c1->state,"Block");strcpy(c1->reason,"S2");p=b_s2;while(p)num2+;p=p->next;/p的值為NULL表示隊(duì)尾if(!b_s2)b_s2=c1;elsep=c1;rea
19、dy->breakp=pc; / 保存斷點(diǎn)ready=ready->next;/ 在就緒隊(duì)列中去掉 , 指向下一個(gè)c1->next=NULL;printf("t* c1 消費(fèi)進(jìn)程阻塞了 !n");num2+;printf("t* 阻塞的生產(chǎn)進(jìn)程個(gè)數(shù)為 :%dn",num1);printf("t* 阻塞的消費(fèi)進(jìn)程個(gè)數(shù)為 :%dn",num2);void wakeup(int s)/ 喚醒函數(shù)的定義link p;link q=ready;if(s=1) / 喚醒b_s1隊(duì)首進(jìn)程,生產(chǎn)進(jìn)程隊(duì)列p=b_s1;b_s1=b_s
20、1->next;/ 阻塞指針指向下一個(gè)阻塞進(jìn)程strcpy(p->state,"Ready");strcpy(p->reason,"Null");while(q)/ 插入就緒隊(duì)列q=p;p->next=NULL;printf("t* p1 生產(chǎn)進(jìn)程喚醒了 !n");else /喚醒b_s2隊(duì)首進(jìn)程,消費(fèi)進(jìn)程隊(duì)列p=b_s2;b_s2=b_s2->next;/ 阻塞指針指向下一個(gè)阻塞進(jìn)程strcpy(p->state,"Ready");strcpy(p->reason,&qu
21、ot;Null");while(q->next)/ 插入就緒隊(duì)列q=q->next;q->next=p;p->next=NULL;printf("t* c1 消費(fèi)進(jìn)程喚醒了 !n");void control() / 處理器調(diào)度程序int rd;int num=0;link p=ready;if(ready=NULL) / 若無(wú)就緒進(jìn)程 , 結(jié)束return;while(p) / 統(tǒng)計(jì)就緒進(jìn)程個(gè)數(shù)num+;printf("t* 就緒進(jìn)程個(gè)數(shù)為 :%dn",num);time_t t; srand(unsigned) ti
22、me(&t);rd=rand()%num;/ 隨機(jī)函數(shù)產(chǎn)生隨機(jī)數(shù) if(rd=1)p=ready; ready=ready->next; ready->next=p; p->next=NULL; strcpy(ready->state,"Run"); strcpy(ready->next->state,"Ready");else strcpy(ready->state,"Run");pc=ready->breakp;void processor() / 模擬處理器指令執(zhí)行 if(
23、strcmp(ready->name,"Producer")=0) /當(dāng)前進(jìn)程為生產(chǎn)者switch(pc)case 0:/produceprintf("t* 生產(chǎn)者生產(chǎn)了字符 %cn",strsp); rec_prp1=strsp;/ 添加到生產(chǎn)記錄 sp=(sp+1)%len;pc+;ready->breakp=pc; / 保存斷點(diǎn)break;case 1: /p(s1)pc+;p(1);break;case 2: /putbufferin=rec_prp1; / 放到緩沖區(qū) printf("t* %c 字符成功入駐空緩存 !n&
24、quot;,bufferin); rp1+;in=(in+1)%BUF;pc+;ready->breakp=pc; / 保存斷點(diǎn) break;case 3: /v(s2)pc+;printf("t*釋放一個(gè) s2 信號(hào)n");v(2);break;case 4:/goto01printf("t* 生產(chǎn)進(jìn)程 goto 0 操作 n");pc=0;count-; /剩余字符個(gè)數(shù)減 1printf("t*剩余字符 count=%d個(gè)n",count);ready->breakp=pc; / 保存斷點(diǎn)if(count<=0)
25、 / 生產(chǎn)結(jié)束printf("t* 生產(chǎn)者結(jié)束生產(chǎn) !n"); strcpy(p1->state,"Stop"); strcpy(p1->reason,"Null");ready->breakp=-1;ready=ready->next;/ 在就緒隊(duì)列中去掉else / 當(dāng)前進(jìn)程為消費(fèi)者switch(pc)case 0: /p(s2)pc+;p(2);break;case 1: /getprintf("t* 消費(fèi)者取字符 !n");temp=bufferout;out=(out+1)%BUF
26、;pc+;ready->breakp=pc; / 保存斷點(diǎn)break;case 2: /v(s1)pc+;printf("t* 釋放一個(gè) s1n");v(1);break;case 3: /consumeprintf("t* 消費(fèi)了字符 %cn",temp); rec_crp2=temp;/ 添加到消費(fèi)記錄 rp2+;con_cnt+;if(con_cnt>=len)strcpy(c1->state,"Stop");/ 完成態(tài) c1->breakp=-1;return; pc+;ready->breakp
27、=pc; / 保存斷點(diǎn) break;case 4: /goto0 printf("t* 消費(fèi)進(jìn)程 goto 0 操作 n"); pc=0;ready->breakp=pc; / 保存斷點(diǎn)void print()int i,j;printf(" 生產(chǎn)者消費(fèi)者模擬 n"); printf("*模擬過(guò)程的字符串為 :t");printf("%sn",&str);printf("*已生產(chǎn) :");for(j=0;j<=rp1;j+) printf("%c",rec
28、_pj);printf("n* 空緩存 :"); for(j=rp2;j<=rp1;j+) printf("%c",bufferj);printf("n* 已消費(fèi) :"); for(j=0;j<=rp2;j+) printf("%c",rec_cj);printf("n 進(jìn)程控制塊的信息 n"); printf("進(jìn)程名tt 狀態(tài)t等待原因t斷點(diǎn)n");printf("%st%st%stt%dnn",p1->name,p1->sta
29、te,p1->reason,p1->breakp);printf("%st%st%stt%dn",c1->name,c1->state,c1->reason,c1->bre akp);n");printf(" printf("1. 繼續(xù) 0. 退出 n"); scanf("%d",&i);if(i=0)exit(0);4、main 頭文件代碼如下:#include "a.h"#include "b.h"#include "c.h"void main()printf("* 生產(chǎn)者消費(fèi)者模擬 n");printf(" n");printf("* 請(qǐng)輸入字符串 :n");sca
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年水產(chǎn)養(yǎng)殖病害防控策略指南
- 2026青海西寧市城北區(qū)大堡子鎮(zhèn)中心衛(wèi)生院招聘衛(wèi)生專(zhuān)業(yè)技術(shù)人員的1人備考題庫(kù)含答案詳解
- 2026浙江寧波市鎮(zhèn)海中學(xué)國(guó)際部誠(chéng)招學(xué)科雙語(yǔ)教師備考題庫(kù)及完整答案詳解1套
- 2026年林下經(jīng)濟(jì)模式創(chuàng)新發(fā)展課
- 軟件開(kāi)發(fā)大數(shù)據(jù)模塊開(kāi)發(fā)規(guī)范手冊(cè)
- 2026福建三明市永安市羅坊鄉(xiāng)人民政府招聘編外聘用駕駛員1人備考題庫(kù)及完整答案詳解1套
- 2026年企業(yè)并購(gòu)法律盡調(diào)實(shí)務(wù)培訓(xùn)
- 職業(yè)健康促進(jìn)與企業(yè)健康管理未來(lái)趨勢(shì)
- 駐馬店2025年河南駐馬店市平輿縣人民醫(yī)院招聘人事代理人員28人筆試歷年參考題庫(kù)附帶答案詳解
- 金華2025年浙江金華義烏市人民檢察院司法雇員招錄6人筆試歷年參考題庫(kù)附帶答案詳解
- 江蘇省鹽城市大豐區(qū)四校聯(lián)考2025-2026學(xué)年七年級(jí)上學(xué)期12月月考?xì)v史試卷(含答案)
- 文化IP授權(quán)使用框架協(xié)議
- 2024年廣西壯族自治區(qū)公開(kāi)遴選公務(wù)員筆試試題及答案解析(綜合類(lèi))
- 湖北煙草專(zhuān)賣(mài)局招聘考試真題2025
- 人教部編五年級(jí)語(yǔ)文下冊(cè)古詩(shī)三首《四時(shí)田園雜興(其三十一)》示范公開(kāi)課教學(xué)課件
- AI領(lǐng)域求職者必看美的工廠(chǎng)AI面試實(shí)戰(zhàn)經(jīng)驗(yàn)分享
- 4.2《揚(yáng)州慢》課件2025-2026學(xué)年統(tǒng)編版高中語(yǔ)文選擇性必修下冊(cè)
- 捻線(xiàn)工三級(jí)安全教育(公司級(jí))考核試卷及答案
- 學(xué)校智慧校園建設(shè)協(xié)議
- 上海市中考物理基礎(chǔ)選擇百題練習(xí)
- 預(yù)制板粘貼碳纖維加固計(jì)算表格
評(píng)論
0/150
提交評(píng)論