版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)操作系統(tǒng)課程設(shè)計(jì)題目:生產(chǎn)者一消費(fèi)者問題專 業(yè):軟件工程年級(jí):2010級(jí)小組成員:絲上指導(dǎo)教師:時(shí) 間:地 點(diǎn):2012年5月摘要生產(chǎn)者消費(fèi)者問題(英語:Producer-consumer problem),也稱有限緩沖問 題(英語:Bounded-buffer problem ),是一個(gè)多線程同步問題的經(jīng)典案例。該 問題描述了兩個(gè)共享固定大小緩沖區(qū)的線程一一即所謂的“生產(chǎn)者”和“消費(fèi)者”在實(shí)際運(yùn)行時(shí)會(huì)發(fā)生的問題。生產(chǎn)者的主要作用是生成一定量的數(shù)據(jù)放到緩 沖區(qū)中,然后重復(fù)此過程。與此同時(shí),消費(fèi)者也在緩沖區(qū)消耗這些數(shù)據(jù)。該問題 的關(guān)鍵就是要保證生產(chǎn)者不會(huì)在緩沖區(qū)滿時(shí)加入數(shù)據(jù),消費(fèi)者也不會(huì)在
2、緩沖區(qū)中空時(shí)消耗數(shù)據(jù)。生產(chǎn)者消費(fèi)者模式是通過一個(gè)容器來解決生產(chǎn)者和消費(fèi)者的強(qiáng)耦合問題。生產(chǎn)者和消費(fèi)者彼此之間不直接通訊, 而通過阻塞隊(duì)列來進(jìn)行通訊,所以生產(chǎn)者生 產(chǎn)完數(shù)據(jù)之后不用等待消費(fèi)者處理, 直接扔給阻塞隊(duì)列,消費(fèi)者不找生產(chǎn)者要數(shù) 據(jù),而是直接從阻塞隊(duì)列里取,阻塞隊(duì)列就相當(dāng)于一個(gè)緩沖區(qū),平衡了生產(chǎn)者和消費(fèi)者的處理能力。444445557889141717錯(cuò)誤!未定義書簽。18目錄.概述.課程設(shè)計(jì)任務(wù)及要求設(shè)計(jì)任務(wù)設(shè)計(jì)要求分工日程表.算法及數(shù)據(jù)結(jié)構(gòu)算法的總體思想生產(chǎn)者模塊消費(fèi)者模塊.程序設(shè)計(jì)與實(shí)現(xiàn)程序流程圖程序代碼實(shí)驗(yàn)結(jié)果. 結(jié)論.收獲、體會(huì)和建議收獲.參考文獻(xiàn).概述本課題設(shè)計(jì)是完成了 “操
3、作系統(tǒng)原理”課程進(jìn)行的一次全面的綜合訓(xùn)練,通 過這次課程設(shè)計(jì),充分檢驗(yàn)學(xué)生對(duì)課程的掌握程度和熟練情況, 讓學(xué)生更好的掌 握操作系統(tǒng)的原理及其實(shí)現(xiàn)方法,加深對(duì)課程的基礎(chǔ)理論和算法的理解, 加強(qiáng)學(xué) 生的動(dòng)手能力。.課程設(shè)計(jì)任務(wù)及要求. 1設(shè)計(jì)任務(wù)通過研究Linux的進(jìn)程機(jī)制和信號(hào)量實(shí)現(xiàn)生產(chǎn)者消費(fèi)者問題的并發(fā)控制.說明:有界緩沖區(qū)內(nèi)設(shè)有20個(gè)存儲(chǔ)單元,放入/取出的數(shù)據(jù)項(xiàng)設(shè)定為1-20 這20個(gè)整型數(shù)。. 2設(shè)計(jì)要求(1)每個(gè)生產(chǎn)者和消費(fèi)者對(duì)有界緩沖區(qū)進(jìn)行操作后,實(shí)時(shí)顯示有界緩沖區(qū)的 全部?jī)?nèi)容、當(dāng)前指針位置和生產(chǎn)者/消費(fèi)者的標(biāo)識(shí)符。(2)生產(chǎn)者和消費(fèi)者各有兩個(gè)以上。(3)多個(gè)生產(chǎn)者或多個(gè)消費(fèi)者之間須有
4、共享對(duì)緩沖區(qū)進(jìn)行操作的函數(shù)代碼。提示:(1)有界緩沖區(qū)可用數(shù)組實(shí)現(xiàn)。3分工日程表周二卜午周四上午周四卜午周五上午周五卜午A分析題目討論,分工編寫代碼測(cè)試系統(tǒng)編寫文檔B分析題目討論,分工編寫代碼添加備注完善系統(tǒng)3,算法及數(shù)據(jù)結(jié)構(gòu)1算法的總體思想在同一個(gè)進(jìn)程地址空間內(nèi)執(zhí)行的兩個(gè)線程。生產(chǎn)者線程生產(chǎn)物品,然后將物品放置在一個(gè)空緩沖區(qū)中供消費(fèi)者線程消費(fèi)。 消費(fèi)者線程從緩沖區(qū)中獲得物品,然后釋放緩沖區(qū)。當(dāng)生產(chǎn)者線程生產(chǎn)物品時(shí),如果沒有空緩沖區(qū)可用,那么生產(chǎn)者線程必須等 待消費(fèi)者線程釋放出一個(gè)空緩沖區(qū)。當(dāng)消費(fèi)者線程消費(fèi)物品時(shí),如果沒有滿的緩 沖區(qū),那么消費(fèi)者線程將被阻塞,直到新的物品被生產(chǎn)出來。2生產(chǎn)者模
5、塊功能在同一個(gè)進(jìn)程地址空間內(nèi)執(zhí)行的兩個(gè)線程。生產(chǎn)者線程生產(chǎn)物品,然后將物品放置在一個(gè)空緩沖區(qū)中供消費(fèi)者線程消費(fèi)。當(dāng)生產(chǎn)者線程生產(chǎn)物品 時(shí),如果沒有空緩沖區(qū)可用,那么生產(chǎn)者線程必須等待消費(fèi)者線程釋放出一 個(gè)空緩沖區(qū)。數(shù)據(jù)結(jié)構(gòu)producer_semaphore/生產(chǎn)者的資源信號(hào)量(初始值為緩沖區(qū)的大小)Bufferpn /有界緩沖區(qū)Pn / 緩沖區(qū)目標(biāo)位置MAX_BUFFER/緩沖區(qū)上限buffer_mutex/互斥信號(hào)量Wait()/等待操作,用于申請(qǐng)資源Signal()/信號(hào)操作,用于釋放資源Sleep()/ 掛起算法void *producer_thread(void *tid)pthre
6、ad_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);/* 設(shè)置狀態(tài),PTHREAD_CANCEL_ENABLE是正常處理 cancel信號(hào)*/while(1)等待,需要生存*/sem_wait(&producer_semaphore); /* srand(int)time(NULL)*(int)tid);sleep(rand()%2+1); /*一個(gè)或兩個(gè)需要生產(chǎn) */while(produce_pointer+1)%20=consume_pointer); /*指針位置*/sem_wait(&buffer_mutex); /* 緩存區(qū) */buffer
7、produce_pointer=rand()%20+1;/*指針位置 */produce_pointer=(produce_pointer+1)%20; /*指針位置 */*判斷*/if(produce_pointer=0)printf( 生產(chǎn)者:%d 指針指向:%2d 生產(chǎn)產(chǎn)品號(hào):2dn,(int)tid,19,buffer19);/*輸出生產(chǎn)者,指針,緩存區(qū)*/fprintf(fd, 生產(chǎn)者:%d指針指向:%2d生產(chǎn)產(chǎn)品號(hào):2dn,(int)tid,19,buffer19);/*輸出生產(chǎn)者,指針,緩存區(qū)*/elseprintf( 生產(chǎn)者:%d 指針指向:%2d 生產(chǎn)產(chǎn)品號(hào):%2dn,(in
8、t)tid,produce_pointer-1,bufferproduce_pointer-1);/*輸出生產(chǎn)者,指針,緩存區(qū) */fprintf(fd, 生產(chǎn)者:%d 指針指向:%2d 生產(chǎn)產(chǎn)品號(hào):%2dn,(int)tid,produce_pointer-1,bufferproduce_pointer-1);/*輸出生產(chǎn)者,指針,緩存區(qū) */showbuf();sem_post(&buffer_mutex);sem_post(&consumer_semaphore); /*通知消費(fèi)者緩沖區(qū)不是空的*/srand(int)time(NULL)*(int)tid);sleep(rand()%5
9、+1); /*等待幾秒鐘,然后繼續(xù)生產(chǎn)*/return (void*)0);3.3消費(fèi)者模塊功能消費(fèi)者線程從緩沖區(qū)中獲得物品,然后釋放緩沖區(qū)。當(dāng)消費(fèi)者線程消費(fèi)物品 時(shí),如果沒有滿的緩沖區(qū),那么消費(fèi)者線程將被阻塞,直到新的物品被生產(chǎn)出來。數(shù)據(jù)結(jié)構(gòu)consumer_semaphore/消費(fèi)者的資源信號(hào)量(初始值為0)Bufferpn /有界緩沖區(qū)Pn /緩沖區(qū)目標(biāo)位置MAX_BUFFER緩沖區(qū)上限buffer_mutex/互斥信號(hào)量Wait()/等待操作,用于申請(qǐng)資源Signal。/信號(hào)操作,用于釋放資源Sleep() 掛起算法void *consumer_thread(void *tid)/*可
10、以被其他線程使用*/pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);/* 設(shè)置狀態(tài),PTHREAD_CANCEL_ENABLE 是忽略 cancel 信號(hào)*/while(1)sem_wait(&consumer_semaphore); /*通知消費(fèi)者消費(fèi) */srand(int)time(NULL)*(int)tid);sleep(rand()%2+1);/*一個(gè)或兩個(gè)來消費(fèi) */sem_wait(&buffer_mutex);printf( 消費(fèi)者:%d指針指向:%2d消費(fèi)產(chǎn)品號(hào):%2dn,(int)tid,consume_pointer
11、,bufferconsume_pointer);/*輸出消費(fèi)者,消費(fèi)者指針,緩存區(qū) */fprintf(fd, 消費(fèi)者:%d 指針指向:%2d 消費(fèi)產(chǎn)品號(hào):%2dn,(int)tid,consume_pointer,bufferconsume_pointer);/*輸出消費(fèi)者,消費(fèi)者指針,緩存區(qū) */bufferconsume pointer=0; /*消費(fèi)者指針指向 0*/consume_pointer=(consume_pointer+1)%20;showbuf();sem_post(&buffer_mutex);sem_post(&producer_semaphore);/*通知生產(chǎn)者緩
12、沖區(qū)不是空的*/srand(int)time(NULL)*(int)tid);sleep(rand()%5+1); /*等待幾秒鐘,然后繼續(xù)消費(fèi)*/return (void*)0);.程序設(shè)計(jì)與實(shí)現(xiàn)程序流程圖程序代碼#include#include#include#include#include#include#include#include#include #include#define NUM_THREADS_P 5#define NUM_THREADS_C 5#define MAX_BUFFER 20#define RUN_TIME 20int bufferMAX_BUFFER;/*定義
13、數(shù)據(jù)為生產(chǎn)者*/*定義數(shù)據(jù)為消費(fèi)者*/*定義數(shù)據(jù)為緩存區(qū)*/*定義運(yùn)行時(shí)間*/*定義最大緩存區(qū)*/int produce_pointer=0,consume_pointer=0;/*定義指針*/sem_t producer_semaphore,consumer_semaphore,buffer_mutex;/*定義信-號(hào)量,互斥*/pthread_t threads_pNUM_THREADS_P; /*聲明生產(chǎn)者線程 */pthread_t threads_cNUM_THREADS_C; /*聲明消費(fèi)者線程 */FILE* fd;void *producer_thread(void *tid)
14、;/* 聲明生產(chǎn)者線程 */void *consumer_thread(void *tid); /*聲明消費(fèi)者線程 */void showbuf(); /* 聲明 showbuf 方法*/void handler()int i; /* 定義 i*/for(i=0;iNUM_THREADS_P;i+)pthread_cancel(threads_pi);/*for 循環(huán),如果 iNUM_THREADS_P, 貝U pthread_cancel(threads_pi); 并且 i+*/for(i=0;iNUM_THREADS_C;i+)pthread_cancel(threads_ci);/*fo
15、r 循環(huán),如果 iNUM_THREADS_C,貝U pthread_cancel(threads_ci); 并且 i+*/int main()int i; /* 定義 i*/signal(SIGALRM,handler);/* 定義信號(hào)量 */fd=fopen(output.txt,w);/*打開一個(gè)文件用來保存結(jié)果*/sem_init(&producer_semaphore,0,MAX_BUFFER); /*放一個(gè)值名信號(hào)燈 */sem_init(&consumer_semaphore,0,0);sem_init(&buffer_mutex,0,1);for(i=0;iMAX_BUFFER;
16、i+)bufferi=0; /* 引發(fā)緩沖 */*創(chuàng)建線程*/for(i=0;iNUM_THREADS_P;i+)pthread_create(&threads_pi,NULL,(void*)producer_thread,(void*)(i+1);/*創(chuàng)建線程*/for(i=0;iNUM_THREADS_C;i+)pthread_create(&threads_ci,NULL,(void*)consumer_thread,(void *)(i+1);alarm(RUN_TIME);for(i=0;iNUM_THREADS_P;i+)pthread_join(threads_pi,NULL);
17、/*等待線程退出*/for(i=0;iNUM_THREADS_C;i+)pthread_join(threads_ci,NULL);/*等待線程退出*/sem_destroy(&producer_semaphore);/*清除信號(hào)燈*/sem_destroy(&consumer_semaphore);/*清除信號(hào)燈*/sem_destroy(&buffer_mutex);/*清除緩存區(qū)*/fclose(fd); /* 關(guān)閉文件 */return 0;void *producer_thread(void *tid)pthread_setcancelstate(PTHREAD_CANCEL_ENA
18、BLE,NULL);/*設(shè)置狀態(tài),PTHREAD_CANCEL_ENABLE 是正常處理cancel信號(hào)*/while(1) sem_wait(&producer_semaphore); /* 等待,需要生存 */srand(int)time(NULL)*(int)tid);sleep(rand()%2+1); /*一個(gè)或兩個(gè)需要生產(chǎn)*/while(produce_pointer+1)%20=consume_pointer); /*指針位置*/sem_wait(&buffer_mutex); /* 緩存區(qū) */bufferproduce_pointer=rand()%20+1; /*指針位置
19、*/produce_pointer=(produce_pointer+1)%20; /*指針位置*/*判斷*/if(produce_pointer=0)printf( 生產(chǎn)者:%d指針指向:%2d生產(chǎn)產(chǎn)品號(hào):2dn,(int)tid,19,buffer19);/*輸出生產(chǎn)者,指針,緩存區(qū)*/fprintf(fd, 生產(chǎn)者:%d 指針指向:%2d 生產(chǎn)產(chǎn)品 號(hào):2dn,(int)tid,19,buffer19);/*輸出生產(chǎn)者,指針,緩存區(qū)*/ elseprintf( 生產(chǎn)者:%d指針指向:%2d生產(chǎn)產(chǎn)品號(hào):%2dn,(int)tid,produce_pointer-1,bufferproduc
20、e_pointer-1);/*輸出生產(chǎn)者,指針,緩存區(qū) */fprintf(fd, 生產(chǎn)者:%d 指針指向:%2d 生產(chǎn)產(chǎn)品 號(hào):%2dn,(int)tid,produce_pointer-1,bufferproduce_pointer-1);/*輸出生產(chǎn)者,指針,緩存區(qū) */showbuf();sem_post(&buffer_mutex);sem_post(&consumer_semaphore); /* 通知消費(fèi)者緩沖區(qū)不是空的 */srand(int)time(NULL)*(int)tid);sleep(rand()%5+1); /*等待幾秒鐘,然后繼續(xù)生產(chǎn)*/return (void
21、*)0);void *consumer_thread(void *tid)/*可以被其他線程使用*/pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);/* 設(shè)置狀態(tài),PTHREAD_CANCEL_ENABLE 是忽略 cancel 信號(hào)*/while(1)sem_wait(&consumer_semaphore); /*通知消費(fèi)者消費(fèi) */srand(int)time(NULL)*(int)tid);sleep(rand()%2+1);/*一個(gè)或兩個(gè)來消費(fèi) */sem_wait(&buffer_mutex);printf( 消費(fèi)者:%d指針指
22、向:%2d消費(fèi)產(chǎn)品號(hào):%2dn,(int)tid,consume_pointer,bufferconsume_pointer);/*輸出消費(fèi)者,消費(fèi)者指針,緩存區(qū) */fprintf(fd, 消費(fèi)者:%d指針指向:%2d消費(fèi)產(chǎn)品號(hào):%2dn,(int)tid,consume_pointer,bufferconsume_pointer);/*輸出消費(fèi)者,消費(fèi)者指針,緩存區(qū) */bufferconsume_pointer=0; /*消費(fèi)者指針指向 0*/consume_pointer=(consume_pointer+1)%20;showbuf();sem_post(&buffer_mutex);
23、sem_post(&producer_semaphore); /*通知生產(chǎn)者緩沖區(qū)不是空的*/srand(int)time(NULL)*(int)tid);sleep(rand()%5+1); /*等待幾秒鐘,然后繼續(xù)消費(fèi)*/)return (void*)0);)/*查看緩沖區(qū)內(nèi)容*/void showbuf()int i; /* 定義 i*/printf(buffer:);/*輸出緩存區(qū) */fprintf(fd,buffer:);/*輸出緩存區(qū) */for(i=0;iMAX_BUFFER;i+)printf(%2d ,bufferi);/* 輸出緩存區(qū) i*/fprintf(fd,%2d
24、,bufferi); /*輸出緩存區(qū) i*/printf(nn);/*換行*/fprintf(fd,nn); /*換行 */實(shí)驗(yàn)結(jié)果文件()編揖(日 查看(Y)搜索(S)終端(工)幫助出)rootlocal.host 臬面#rootlocalhost 桌面 j#gcc 3.c -o 3 -Ipthread ./3rootlocalhost:/ 桌面生產(chǎn)者:5 緩沖區(qū):1指針指向:60 0 0 0生產(chǎn)產(chǎn)品號(hào):10 0 0 0 0生產(chǎn)者:3卷神區(qū):1指針指向:112 0 e e生產(chǎn)產(chǎn)品號(hào):120 0 0 0 0生產(chǎn)者:1 絳神區(qū):1指針指向:212 19 0 0生產(chǎn)產(chǎn)品號(hào):19o e o e e生
25、產(chǎn)者:4線神區(qū):1指針指向:312 19 19 0生產(chǎn)產(chǎn)品號(hào):190 0 0 0生產(chǎn)青:2領(lǐng)神區(qū):1指針指向:412 19 19 9生產(chǎn)產(chǎn)品號(hào):0 0 0 0,消費(fèi)者:1線神區(qū):0指針指向:012 19 19 9消費(fèi)產(chǎn)品號(hào):0 e o e津費(fèi)者:2線沖區(qū):0指針指向:1 0 19 19 9消費(fèi)產(chǎn)品號(hào):120 0 0 0 0造費(fèi)者:3綏神區(qū):0指針指向:20 0 19 9消費(fèi)產(chǎn)品號(hào):190 0 0 0 0消費(fèi)者:4 綏神區(qū):。指針指向:30 0 0 9消費(fèi)產(chǎn)品號(hào):190 0 0 0港費(fèi)者:5 鎂神區(qū):指針指向:40 0 0 0消費(fèi)產(chǎn)品號(hào):0 0 0 0生產(chǎn)者:1 緣神區(qū):。指針指向:5e e e
26、 e 18生產(chǎn)產(chǎn)品號(hào):18o e o e生產(chǎn)者:5線神區(qū):0指針指向:60 0 0 0 18生產(chǎn)產(chǎn)品號(hào):10 0 0文件(E)編輯(E)查看Q)搜索(S)終端(工)幫助(H)生產(chǎn)者:3緩沖區(qū):0指針指向:80 0 0 0生產(chǎn)產(chǎn)品號(hào):90 6 9 0生產(chǎn)者:2 緩沖區(qū):。指針指向:90 0 0 0生產(chǎn)產(chǎn)品號(hào):0 6 9 9消費(fèi)者:2緩沖區(qū):。指針指向:70 0 0 0消費(fèi)產(chǎn)品號(hào):0 0 9 9消費(fèi)者:4緩神區(qū):0指針指向:80 0 0 0消費(fèi)產(chǎn)品號(hào):0 0 0 9生產(chǎn)者:1 緩沖區(qū):。指針指向:100 0 0 0生產(chǎn)產(chǎn)品號(hào):1717消費(fèi)者:3緩神區(qū):0指針指向:90 0 0 0消費(fèi)產(chǎn)品號(hào):e e
27、 e o917生產(chǎn)者:3 緩沖區(qū):。指針指向:H0 0 0 0生產(chǎn)產(chǎn)品號(hào):130 0 0 0 1713生產(chǎn)者:4緩神區(qū):0指針指向:120 0 0 0生產(chǎn)產(chǎn)品號(hào):120 0 0 0 171312生產(chǎn)者:5緩沖區(qū):0指針指向:130 0 0 0生產(chǎn)產(chǎn)品號(hào):180 0 0 0 17131218生產(chǎn)者:2緩神區(qū):0指針指向:140 0 0 0生產(chǎn)產(chǎn)品號(hào):12e e 0 o 1713121812消費(fèi)者:2 緩沖區(qū):。指針指向:ie0 0 0 0消費(fèi)產(chǎn)品號(hào):170 0 0 0 0131812消費(fèi)者:5緩神區(qū):0指針指向:116 0 0 0消費(fèi)產(chǎn)品號(hào):136 0 0 0 0121812消費(fèi)者:4緩沖區(qū):0
28、指針指向:120 0 0 0消費(fèi)產(chǎn)品號(hào):120 0 0 0 01812.結(jié)論本次課程設(shè)計(jì)主要是對(duì)操作系統(tǒng)中線程,進(jìn)程同步互斥等知識(shí)的揉合應(yīng)用, 生產(chǎn)者-消費(fèi)者問題是一個(gè)著名的同步問題,原理易懂,但操作并不簡(jiǎn)單。本次 編寫的程序基本實(shí)現(xiàn)了設(shè)計(jì)要求的功能,但并沒有做到真正的完善,系統(tǒng)還有一 點(diǎn)小瑕疵,對(duì)于某些方面的小問題沒有能解決。 但這次課程設(shè)計(jì)通過我們組員的 努力還是基本完成了,對(duì)于自身的幫助非常大,無論是編寫程序還是設(shè)計(jì)等各方 面都有很大的提升。.收獲、體會(huì)和建議經(jīng)過2.5天的課程設(shè)計(jì),我們完成了一個(gè)生產(chǎn)者-消費(fèi)者問題的小程序,這 個(gè)程序主要考察的是是P、V操作,實(shí)驗(yàn)設(shè)一個(gè)共享緩沖區(qū),生產(chǎn)者和消費(fèi)者互 斥的使用,當(dāng)一個(gè)線程使用緩沖區(qū)的時(shí)候,另一個(gè)讓其等待直到前一個(gè)線程釋放 緩沖區(qū)為止。還有就是對(duì)進(jìn)程,線程的操作。實(shí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年科技研發(fā)項(xiàng)目保證金合同模板3篇
- 有關(guān)公司慰問信匯編7篇
- 軍訓(xùn)第二天心得體會(huì)
- 頂崗實(shí)習(xí)月報(bào)范文【五篇】
- 寫人物傳記的作文600字5篇
- 女工三八婦女節(jié)演講稿6篇
- 鄉(xiāng)鎮(zhèn)關(guān)于生態(tài)環(huán)境保護(hù)工作總結(jié)
- 九年級(jí)語文下冊(cè) 第三單元 10《唐雎不辱使命》教學(xué)實(shí)錄1 新人教版
- 網(wǎng)上學(xué)習(xí)作業(yè)答案
- 醫(yī)院護(hù)士實(shí)習(xí)報(bào)告(集錦15篇)
- 各種骨折英文名稱
- 加熱爐溫度控制系統(tǒng)
- 二次供水工程技術(shù)規(guī)程(CJJ140—2010 )
- 小說HOTEL介紹
- 設(shè)備故障處理流程圖
- 晨暉智能一卡通管理系統(tǒng)
- 應(yīng)急預(yù)案評(píng)審要素表
- 安全生產(chǎn)組織架構(gòu)圖
- 如何在CAD中快速繪制縱斷面圖
- 搞笑小品劇本《家長駕到》臺(tái)詞完整版 金牌喜劇班李海銀高海寶盛偉
- (完整版)高級(jí)管理人員年薪制管理辦法
評(píng)論
0/150
提交評(píng)論