版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式系統(tǒng)及應(yīng)用第六章同步、互斥與通信主要內(nèi)容概述信號(hào)量郵箱和消息隊(duì)列管道ISRxTaskyPOSTPEND任務(wù)與ISR之間的同步(單向)TaskxTaskyPOSTPENDPOSTPEND任務(wù)與任務(wù)之間的同步(雙向)任務(wù)與任務(wù)之間的同步(單向)TaskxTaskyPOSTPEND以下一些機(jī)制也可用于同步與通信(在單處理器或多處理器系統(tǒng)中):全局變量共享內(nèi)存Sockets遠(yuǎn)程過(guò)程調(diào)用(RemoteProcedureCall)第一節(jié)
信號(hào)量信號(hào)量的種類及用途信號(hào)量的定義互斥信號(hào)量二值信號(hào)量計(jì)數(shù)信號(hào)量信號(hào)量機(jī)制的主要數(shù)據(jù)結(jié)構(gòu)典型的信號(hào)量操作什么是信號(hào)量信號(hào)量被定義為一個(gè)整形變量,在其上定義了以下三個(gè)操作:1、可以被初始化一個(gè)非負(fù)數(shù)2、wait操作(P操作)將信號(hào)量的值減1后,若該值為負(fù),則執(zhí)行wait操作的任務(wù)等待3、signal操作(V操作)將信號(hào)量的值增1后,若該值為非正,則執(zhí)行signal操作的任務(wù)喚醒
互斥信號(hào)量
WaitB(S):
/申請(qǐng)信號(hào)量ifS.value1;/當(dāng)前沒(méi)有其他任務(wù)使用信號(hào)量thenS.value=S.value-1=0/將信號(hào)量值修改為0,獨(dú)占共享資源elsebeginInsert(CALLER,S.L);/如果當(dāng)前有其他任務(wù)使用信號(hào)量,將該任務(wù)放入等待隊(duì)列Block(CALLER);/修改該任務(wù)的狀態(tài)為等待態(tài)(阻塞任務(wù))endSignalB(S):/釋放信號(hào)量ifS.Lqueueisempty;/如果等待序列為空,沒(méi)有其他任務(wù)等待使用該共享資源thenS.value=1;/釋放信號(hào)量elsebeginRemove(S.L,id);/如果有其他任務(wù)等待使用該共享資源,則從等待隊(duì)列中將該任務(wù)移除wakeup(id);/將該任務(wù)的狀態(tài)改為就緒態(tài)(喚醒任務(wù))end用信號(hào)量實(shí)現(xiàn)任務(wù)間的互斥varmutex:SharedSemaphore;beginmutex:=1;parbeginP1:……P2:…………Pi:repeatWait(mutex);“進(jìn)程Pi的臨界代碼段”;Signal(mutex);foreverPn:……parendendTask1Task2共享資源互斥信號(hào)量狀態(tài)圖互斥信號(hào)量狀態(tài)圖開(kāi)啟鎖定初始化值為1申請(qǐng)并獲得值為0釋放值為1申請(qǐng)(遞歸)并獲得鎖定數(shù)加1釋放(遞歸)鎖定數(shù)減1二值信號(hào)量可獲得不可獲得申請(qǐng)并獲得(值為0)釋放(值為1)初始化值為0二值信號(hào)量狀態(tài)圖Task1(){
……執(zhí)行一些操作;將信號(hào)量sem1置1;
申請(qǐng)信號(hào)量sem2;
…………}Task2(){……
申請(qǐng)信號(hào)量sem1;
執(zhí)行一些操作;將信號(hào)量sem2置1;…………}Task2申請(qǐng)信號(hào)量sem1失敗,系統(tǒng)切換到Task1sem1被置1后,Task2得到sem1并搶占Task1Task2運(yùn)行到某處時(shí)因某種原因被阻塞,系統(tǒng)切換到Task1用二值信號(hào)量實(shí)現(xiàn)兩個(gè)任務(wù)之間的雙向同步Task2優(yōu)先級(jí)高于Task1sem1和sem2的初始值均為0二值信號(hào)量實(shí)現(xiàn)同步計(jì)數(shù)信號(hào)量Task1Task2共享資源實(shí)例nTaskm共享資源實(shí)例1…………計(jì)數(shù)(一般)信號(hào)量同步原語(yǔ)Wait(S):S.value:=S.value-1;/有新任務(wù)來(lái)使用共享資源將信號(hào)量的值減1ifS.value<0/如果信號(hào)量的值為負(fù),表示共享資源已經(jīng)分配完畢thenbeginInsert(CALLER,S.L);/將該任務(wù)插入等待序列Block(CALLER);/將該任務(wù)狀態(tài)改為等待態(tài)(阻塞任務(wù))endSignal(S):S.value:=S.value+1;/任務(wù)使用完共享資源,將信號(hào)量的值加1,釋放一個(gè)信號(hào)量ifS.value<=0/如果信號(hào)量為負(fù),表示仍有等待該資源的任務(wù)被阻塞thenbeginRemove(S.L,id);/將等待隊(duì)列中的一個(gè)任務(wù)從隊(duì)列中移除wakeup(id);/將該任務(wù)的狀態(tài)修改為就緒態(tài),喚醒任務(wù)endS的絕對(duì)值表示在該信號(hào)量列表中已阻塞的任務(wù)數(shù)目計(jì)數(shù)信號(hào)量1234…………n生產(chǎn)者任務(wù)消費(fèi)者任務(wù)計(jì)數(shù)信號(hào)量使用實(shí)例:有界緩沖問(wèn)題計(jì)數(shù)信號(hào)量VarE,F:Semaphore;mutex:binarySemaphore;begin(*mainprogram*)F:=0;E:=n;mutex=1;parbeginproducer1;……producern;consumer1;……consumerm;parendend信號(hào)量機(jī)制的主要數(shù)據(jù)結(jié)構(gòu)SCB1SCB2…………信號(hào)量控制塊count信號(hào)量名字或IDTask1Task2……任務(wù)等待列表信號(hào)量機(jī)制的主要數(shù)據(jù)結(jié)構(gòu)信號(hào)量控制塊:管理所有創(chuàng)建的信號(hào)量,內(nèi)核在系統(tǒng)運(yùn)行時(shí)動(dòng)態(tài)分配和回收信號(hào)量控制塊互斥和二值信號(hào)量控制塊結(jié)構(gòu):Binary_Semaphore_Control_Blockwait_queue 任務(wù)等待隊(duì)列attributes 信號(hào)量屬性 lock_nesting_behavior試圖嵌套獲得時(shí)的規(guī)則wait_discipline 任務(wù)等待信號(hào)量的方式 priority_ceiling 優(yōu)先級(jí)天花板值lock 是否被占有holder 擁有者
nest_count 嵌套層數(shù)計(jì)數(shù)信號(hào)量控制結(jié)構(gòu)Counting_Semaphore_Control_Blockwait_queue 任務(wù)等待隊(duì)列attributes 計(jì)數(shù)信號(hào)量屬性maximum_count 最大計(jì)數(shù)值wait_discipline 任務(wù)等待信號(hào)量的方式count 當(dāng)前計(jì)數(shù)值信號(hào)量機(jī)制的主要數(shù)據(jù)結(jié)構(gòu)創(chuàng)建信號(hào)量功能:根據(jù)應(yīng)用傳遞的參數(shù)創(chuàng)建一個(gè)信號(hào)量參數(shù):信號(hào)量的名字、屬性和初始值等。內(nèi)核動(dòng)作:從空閑信號(hào)量控制塊鏈中分配一個(gè)信號(hào)量控制塊,并初始化信號(hào)量屬性。創(chuàng)建成功時(shí),為其分配唯一的ID號(hào)返回給應(yīng)用。如果已創(chuàng)建信號(hào)量數(shù)量已達(dá)到用戶配置的最大數(shù)量,就返回錯(cuò)誤。信號(hào)量的屬性信號(hào)量的屬性信號(hào)量的類型互斥信號(hào)量(MUTEX_SEMAPHORE)計(jì)數(shù)信號(hào)量(COUNTING_SEMAPHORE)二值信號(hào)量(BINARY_SEMAPHORE)任務(wù)等待信號(hào)量的方式先進(jìn)先出(FIFO)順序優(yōu)先級(jí)(PRIORITY)順序優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題的解決方法(只適用于互斥信號(hào)量)優(yōu)先級(jí)繼承算法(INHERIT_PRIORITY)優(yōu)先級(jí)天花板算法(PRIORITY_CEILING),需給出所有可能獲得此信號(hào)量的任務(wù)中優(yōu)先級(jí)最高的任務(wù)的優(yōu)先級(jí)。釋放信號(hào)量功能:釋放一個(gè)應(yīng)用指定的信號(hào)量。if 沒(méi)有任務(wù)等待這個(gè)信號(hào)量then 信號(hào)量的值加1else 將信號(hào)量分配給一個(gè)等待任務(wù)(將相應(yīng)的任務(wù)移出等待隊(duì)列,使其就緒)
如果使用了優(yōu)先級(jí)繼承或優(yōu)先級(jí)天花板算法,那么執(zhí)行該功能(系統(tǒng)調(diào)用)的任務(wù)的優(yōu)先級(jí)將恢復(fù)到原來(lái)的高度。刪除信號(hào)量功能:從系統(tǒng)中刪除應(yīng)用指定的一個(gè)信號(hào)量?jī)?nèi)核動(dòng)作:將信號(hào)量控制塊返還給系統(tǒng)刪除信號(hào)量的不一定是創(chuàng)建信號(hào)量的任務(wù)如果有任務(wù)正在等待獲得該信號(hào)量,執(zhí)行此功能將使所有等待這個(gè)信號(hào)量的任務(wù)回到就緒隊(duì)列中,且返回一個(gè)狀態(tài)碼指示該信號(hào)量已被刪除清除信號(hào)量的任務(wù)等待列表為了清除等待一個(gè)信號(hào)量的所有任務(wù),某些內(nèi)核支持Flush操作,以便釋放信號(hào)量等待任務(wù)列表中的所有任務(wù)。當(dāng)多個(gè)任務(wù)的執(zhí)行必須在某些點(diǎn)相遇時(shí),需要這樣的機(jī)制。SignalTaskTask2
二值信號(hào)量初值為0FlushTask1Task3第二節(jié)
郵箱和消息隊(duì)列通信方式概述消息隊(duì)列機(jī)制的主要數(shù)據(jù)結(jié)構(gòu)典型的消息隊(duì)列操作任務(wù)間的通信方式任務(wù)間的通信方式:
直接通信
間接通信
消息:內(nèi)存空間中一段長(zhǎng)度可變的緩沖區(qū),其長(zhǎng)度和內(nèi)容均可以由用戶定義,其內(nèi)容可以是實(shí)際的數(shù)據(jù)、數(shù)據(jù)塊的指針或空。
消息進(jìn)一步分為:郵箱和消息隊(duì)列消息隊(duì)列機(jī)制的主要數(shù)據(jù)結(jié)構(gòu)隊(duì)列控制塊隊(duì)列長(zhǎng)度QCB1隊(duì)列名或IDTask3Task4……接收任務(wù)等待列表Task1Task2……發(fā)送任務(wù)等待列表最大消息長(zhǎng)度QCB2……消息隊(duì)列及其相關(guān)的參數(shù)和支持?jǐn)?shù)據(jù)結(jié)構(gòu)SendingTaskReceivingTaskMessage1Message1Message1發(fā)送任務(wù)的內(nèi)存區(qū)域消息隊(duì)列的內(nèi)存區(qū)域接收任務(wù)的內(nèi)存區(qū)域1stcopy2ndcopy發(fā)送和接收消息的消息拷貝和內(nèi)存使用這種消息傳遞方法效率低、占用空間大一種效率更高的方式是傳遞消息指針消息的發(fā)送或接收的兩種方法number_of_messagemax_message_countnumber_of_messagemax_message_sizewait_disciplinewait_queuequeue_startqueue_inqueue_outqueue_endmessagemessagemessagemessagemessagemessagemessagemessagemessagemax_message_count消息隊(duì)列控制塊消息隊(duì)列緩沖區(qū)消息隊(duì)列機(jī)制的主要數(shù)據(jù)結(jié)構(gòu)消息隊(duì)列的環(huán)形緩沖消息隊(duì)列機(jī)制的主要數(shù)據(jù)結(jié)構(gòu)max_message_countqueue_endqueue_startqueue_outnumber_of_messagequeue_in消息指針消息隊(duì)列狀態(tài)圖非空滿隊(duì)列創(chuàng)建消息數(shù)為0消息隊(duì)列狀態(tài)圖消息發(fā)送消息數(shù)加1空消息發(fā)送消息數(shù)為1消息接收消息數(shù)為0消息接收消息數(shù)減1消息接收消息數(shù)減1消息發(fā)送消息數(shù)等于隊(duì)列長(zhǎng)度典型的消息隊(duì)列操作創(chuàng)建消息隊(duì)列發(fā)送普通消息發(fā)送緊急消息發(fā)送廣播消息接收消息刪除消息隊(duì)列獲取有關(guān)消息隊(duì)列的各種信息創(chuàng)建消息隊(duì)列創(chuàng)建消息隊(duì)列時(shí),調(diào)用者可以指定如下參數(shù):消息的最大長(zhǎng)度每個(gè)消息隊(duì)列中最多的消息數(shù)消息隊(duì)列的屬性任務(wù)等待消息時(shí)的排隊(duì)方式:FIFO或PRIORITY系統(tǒng)為新創(chuàng)建的消息隊(duì)列分配唯一的ID發(fā)送消息Msg3接收任務(wù)等待列表Msg2Msg1消息隊(duì)列發(fā)送普通消息-先進(jìn)先出(FIFO)次序Msg3接收任務(wù)等待列表Msg2Msg1消息隊(duì)列發(fā)送緊急消息-后進(jìn)先出(LIFO)次序接收消息Task4High消息隊(duì)列接收任務(wù)等待列表任務(wù)等待列表-基于優(yōu)先級(jí)的次序Task2mediumTask3mediumTask1LowTask4High消息隊(duì)列接收任務(wù)等待列表任務(wù)等待列表-先進(jìn)先出(FIFO)次序Task2mediumTask3mediumTask1Low刪除消息隊(duì)列從系統(tǒng)中刪除指定的消息隊(duì)列,釋放消息隊(duì)列控制塊及消息隊(duì)列緩沖區(qū)。任何知道此消息隊(duì)列ID號(hào)的代碼都可以刪除它。消息隊(duì)列被刪除后,所有等待從這個(gè)消息隊(duì)列接收消息的任務(wù)得到一個(gè)錯(cuò)誤信息表明消息隊(duì)列已被刪除都回到并回到就緒態(tài)。消息隊(duì)列的其他典型使用緊耦合的單向數(shù)據(jù)通信:發(fā)送任務(wù)發(fā)送消息后要求一個(gè)響應(yīng)信號(hào),表明接收任務(wù)已經(jīng)成功接收到消息。
Task1Task2
消息隊(duì)列的其他典型使用緊耦合的雙向數(shù)據(jù)通信:如果數(shù)據(jù)需要在任務(wù)之間雙向流動(dòng),則可以采用緊耦合的雙向數(shù)據(jù)通信模式(也稱為全雙工通信)。
Task1Task2第三節(jié)
管道概述管道機(jī)制的主要數(shù)據(jù)結(jié)構(gòu)典型的管道操作管道機(jī)制的典型應(yīng)用管道機(jī)制概述管道(pipe)是提供非結(jié)構(gòu)化數(shù)據(jù)交換和實(shí)現(xiàn)任務(wù)間同步的內(nèi)核對(duì)象。在傳統(tǒng)的實(shí)現(xiàn)中,管道是單向數(shù)據(jù)交換設(shè)施。
Task1Task2管道管道中的數(shù)據(jù)寫(xiě)描述符讀描述符向管道寫(xiě)數(shù)據(jù)從管道讀數(shù)據(jù)數(shù)據(jù)在管道內(nèi)像一個(gè)非結(jié)構(gòu)字節(jié)流,按FIFO的次序從管道中讀出。當(dāng)管道空時(shí),阻塞讀者,當(dāng)管道滿時(shí),阻塞寫(xiě)者。管道機(jī)制概述管道允許有多個(gè)讀者和寫(xiě)者。Task1Task5管道Task2Task3Task4Task6ISR1ISR2ISR3公共管道操作管道管道的狀態(tài)轉(zhuǎn)換圖非空滿創(chuàng)建管道無(wú)寫(xiě)入數(shù)據(jù)讀數(shù)據(jù),有剩余數(shù)據(jù)空寫(xiě)數(shù)據(jù)讀數(shù)據(jù),無(wú)數(shù)據(jù)留下寫(xiě)數(shù)據(jù),有剩余空間讀數(shù)據(jù)寫(xiě)數(shù)據(jù),無(wú)剩余空間管道機(jī)制的主要數(shù)據(jù)結(jié)構(gòu)管道控制塊BytecountDatabufferBuffersizeOutputpositionInputpositionTask3Task4……接收任務(wù)等待列表Task1Task2……發(fā)送任務(wù)等待列表典型的管道操作選擇(Select)操作
Select操作允許一個(gè)任務(wù)阻塞并等待一個(gè)或多個(gè)管道上的一個(gè)指定條件的發(fā)生。
Task1ISRTask2Task3Pipe1Pipe2Pipe3任務(wù)Task3等待從Pipe1和Pipe2這兩個(gè)管道讀數(shù)據(jù)并寫(xiě)到第三個(gè)管道Pipe3上。在這種情況下,當(dāng)頭兩個(gè)管道中的任意一個(gè)有數(shù)據(jù)時(shí),Select調(diào)用返回。管道機(jī)制的典型應(yīng)用TaskATaskBSelect操作Select操作管道C管道D任務(wù)A和任務(wù)B打開(kāi)兩個(gè)管道作為任務(wù)間的通信方式:打開(kāi)管道C作為從任務(wù)A到任務(wù)B的數(shù)據(jù)傳輸,打開(kāi)管道D作為從任務(wù)B到任務(wù)A的回應(yīng)。任務(wù)A等待管道C編程可寫(xiě),也等待管道D上來(lái)自任務(wù)B的回應(yīng)。兩個(gè)任務(wù)之間的同步管道主要用于任務(wù)到任務(wù)或ISR到任務(wù)的數(shù)據(jù)傳輸?shù)谒墓?jié)
事件概述事件機(jī)制的主要數(shù)據(jù)結(jié)構(gòu)典型的事件操作事件機(jī)制的典型應(yīng)用在嵌入式實(shí)時(shí)內(nèi)核中,事件是指一種表明預(yù)先定義的系統(tǒng)事件已經(jīng)發(fā)生的機(jī)制。事件機(jī)制用于任務(wù)與任務(wù)之間、任務(wù)與ISR之間的同步。其主要的特點(diǎn)是可實(shí)現(xiàn)一對(duì)多的同步。
一個(gè)事件就是一個(gè)標(biāo)志,不具備其它信息。一個(gè)或多個(gè)事件構(gòu)成一個(gè)事件集。事件集可以用一個(gè)指定長(zhǎng)度的變量(比如一個(gè)8bit,16bit或32bit的無(wú)符號(hào)整型變量,不同的操作系統(tǒng)其具體實(shí)現(xiàn)不一樣)來(lái)表示,而每個(gè)事件由在事件集變量中的某一位來(lái)代表。概述事件及事件集有以下特點(diǎn):事件間相互獨(dú)立事件僅用于同步,不提供數(shù)據(jù)傳輸功能事件無(wú)隊(duì)列,即多次發(fā)送同一事件,在未經(jīng)過(guò)任何處理的情況下,其效果等同于只發(fā)送一次。提供事件機(jī)制的意義在于:當(dāng)某任務(wù)要與多個(gè)任務(wù)或中斷服務(wù)同步時(shí),就需要使用事件機(jī)制。若任務(wù)需要與一組事件中的任意一個(gè)發(fā)生同步,可稱為獨(dú)立型同步(邏輯“或”關(guān)系)。任務(wù)也可以等待若干事件都發(fā)生時(shí)才同步,稱為關(guān)聯(lián)型同步(邏輯“與”關(guān)系)。概述“或”同步和“與”同步概述任務(wù)任務(wù)任務(wù)任務(wù)ISRISRORAND“與”型同步“或”型同步事件集事件集POSTPOSTPENDPEND用多個(gè)事件的組合發(fā)信號(hào)給多個(gè)任務(wù)概述任務(wù)任務(wù)任務(wù)ISRORAND事件集事件集事件集(8,16或32位)POSTPENDPEND術(shù)語(yǔ):發(fā)送事件集。指在一次發(fā)送過(guò)程中發(fā)往接收者(比如任務(wù))的一個(gè)或多個(gè)事件的組合。待處理事件集。指已被發(fā)送到一個(gè)接收者但還沒(méi)有被接收(即正在等待處理)的所有事件的集合。事件條件。指事件接收者在一次接收過(guò)程中期待接收的一個(gè)或多個(gè)事件的集合?!盎颉蓖剑捍幚硎录灰ㄊ录l件中的任一事件即可滿足要求;“與”同步:其二是待處理事件集必須包括事件條件中的全部事件方可滿足要求。
概述事件機(jī)制的主要數(shù)據(jù)結(jié)構(gòu)(1)事件集控制塊結(jié)構(gòu)(Event_set_Control_Block):
attribute事件集的屬性(排隊(duì)方式:FIFO或PRIORITY)event_set當(dāng)前事件集(指示被置位且未被接受的事件標(biāo)志位)eventset_condition_queue_and事件集”與”等待隊(duì)列eventset_condition_queue_or事件集”或”等待隊(duì)列
內(nèi)核為每個(gè)等待事件集的任務(wù)生成一個(gè)“任務(wù)事件集等待控制塊”(2)任務(wù)事件集等待控制塊結(jié)構(gòu)(Event_set_Task_Waited_Buddy)task等待任務(wù)的控制塊指針event_set任務(wù)當(dāng)前等待的事件集flag_node_array任務(wù)等待標(biāo)志節(jié)點(diǎn)數(shù)組任務(wù)等待標(biāo)志節(jié)點(diǎn)數(shù)組的長(zhǎng)度等于事件集的位數(shù),其中每個(gè)節(jié)點(diǎn)元素對(duì)應(yīng)一個(gè)等待的事件標(biāo)志典型的事件操作創(chuàng)建事件集刪除事件集發(fā)送事件(集)接收事件(集)獲取有關(guān)事件集的各種信息創(chuàng)建事件集、刪除事件集創(chuàng)
溫馨提示
- 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年仁愛(ài)科普版九年級(jí)地理上冊(cè)階段測(cè)試試卷含答案
- 2025年粵教版選修3歷史下冊(cè)階段測(cè)試試卷含答案
- 2024年度青海省公共營(yíng)養(yǎng)師之四級(jí)營(yíng)養(yǎng)師綜合練習(xí)試卷B卷附答案
- 2024年度青海省公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師全真模擬考試試卷B卷含答案
- 2024年度青海省公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師過(guò)關(guān)檢測(cè)試卷A卷附答案
- 2025年度苗圃基地苗木交易市場(chǎng)運(yùn)營(yíng)管理合同4篇
- 2025年北師大版八年級(jí)地理下冊(cè)月考試卷含答案
- 2024年度青海省公共營(yíng)養(yǎng)師之三級(jí)營(yíng)養(yǎng)師模擬考試試卷A卷含答案
- 二零二四年度新媒體平臺(tái)廣告創(chuàng)意策劃合同3篇
- 服務(wù)型企業(yè)的核心競(jìng)爭(zhēng)力服務(wù)流程優(yōu)化管理培訓(xùn)
- 2022年中國(guó)電信維護(hù)崗位認(rèn)證動(dòng)力專業(yè)考試題庫(kù)大全-上(單選、多選題)
- 紀(jì)委辦案安全培訓(xùn)課件
- 超市連鎖行業(yè)招商策劃
- 醫(yī)藥高等數(shù)學(xué)智慧樹(shù)知到課后章節(jié)答案2023年下浙江中醫(yī)藥大學(xué)
- 城市道路智慧路燈項(xiàng)目 投標(biāo)方案(技術(shù)標(biāo))
- 初中英語(yǔ)-Unit2 My dream job(writing)教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 【公司利潤(rùn)質(zhì)量研究國(guó)內(nèi)外文獻(xiàn)綜述3400字】
- 工行全國(guó)地區(qū)碼
- 新疆2022年中考物理試卷及答案
- 地暖工程監(jiān)理實(shí)施細(xì)則
- 頂部板式吊耳計(jì)算HGT-20574-2018
評(píng)論
0/150
提交評(píng)論