




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第三章、進(jìn)程管理
3.1 進(jìn)程的概念3.2 進(jìn)程的描述3.3 進(jìn)程狀態(tài)及其轉(zhuǎn)換3.4 進(jìn)程控制3.5 進(jìn)程互斥3.6 進(jìn)程同步3.7 進(jìn)程通信3.8 死鎖問(wèn)題3.9 線程23.7 進(jìn)程通信一、進(jìn)程通信:
進(jìn)程之間的信息交換、數(shù)據(jù)傳送。
低級(jí)通信:少量控制信息的交換,一個(gè)/幾個(gè)字節(jié)。
高級(jí)通信:高效、大量地傳送數(shù)據(jù),交換信息。二、進(jìn)程通信方式:1、主從式:(終端控制進(jìn)程與終端進(jìn)程)
1)主進(jìn)程可自由使用從進(jìn)程的資源和數(shù)據(jù);
2)從進(jìn)程動(dòng)作受主進(jìn)程控制;
3)主、從進(jìn)程的關(guān)系固定。2、會(huì)話式:(用戶進(jìn)程與磁盤管理進(jìn)程)
1)使用進(jìn)程要得到服務(wù)進(jìn)程的許可;
2)服務(wù)進(jìn)程自控地完成對(duì)使用進(jìn)程的服務(wù);
3)通信時(shí)二者有固定的連接關(guān)系。33、共享存儲(chǔ)區(qū)方式:(UNIXSystemV)
在存儲(chǔ)區(qū)中劃出一塊共享存儲(chǔ)區(qū),兩個(gè)進(jìn)程通過(guò)對(duì)申請(qǐng)的共享存儲(chǔ)區(qū)讀、寫(xiě)實(shí)現(xiàn)通信。4、消息或郵箱機(jī)制:
1)發(fā)送進(jìn)程和接收進(jìn)程之間有用于存放傳送消息的緩沖區(qū)或郵箱;
2)發(fā)送進(jìn)程向空緩沖區(qū)或郵箱發(fā)送信息,接收進(jìn)程從滿緩沖區(qū)或郵箱接收信息;
3)發(fā)送進(jìn)程和接收進(jìn)程之間沒(méi)有直接固定的聯(lián)系。4三、消息緩沖機(jī)制:(直接通信方式,多對(duì)一)消息緩沖區(qū): 進(jìn)程通信的基本單位,記錄消息的內(nèi)容等信息,為多個(gè)進(jìn)程共享,其數(shù)據(jù)結(jié)構(gòu)描述為:
TYPEmessagebuffer=record
sender_ptr; 指向發(fā)送進(jìn)程的指針
size; 消息長(zhǎng)度
text; 消息正文
next_ptr; 指向下一個(gè)消息緩沖區(qū)的指針
end56公用信號(hào)量mutex:對(duì)消息緩沖區(qū)的的訪問(wèn)采取互斥措施;
私有信號(hào)量Sm:消息緩沖區(qū)無(wú)消息時(shí),接收進(jìn)程不能接收,同步措施。發(fā)送進(jìn)程:Send(k,m)begin
向系統(tǒng)申請(qǐng)一個(gè)消息緩沖區(qū)
將發(fā)送消息m送到新消息緩沖區(qū) 把緩沖區(qū)鏈入接收進(jìn)程k的消息隊(duì)列
end接收進(jìn)程:Receive(n)begin
摘下消息隊(duì)列中消息n
把n復(fù)制到接收區(qū) 釋放消息緩沖區(qū)
end
P(mutex)
V(mutex) V(Sm)
P(Sm) P(mutex)
V(mutex)7四、郵箱通信:(間接通信方式,靈活)郵箱:發(fā)送進(jìn)程和接收進(jìn)程之間設(shè)置的大小固定的私有數(shù)據(jù)結(jié)構(gòu)(多個(gè)消息組成的隊(duì)列),由接收進(jìn)程所擁有。工作條件:發(fā)送至少有一個(gè)空格,接收時(shí)至少有一個(gè)滿格。特點(diǎn):發(fā)送、接收基本無(wú)時(shí)間限制。缺點(diǎn):占用大量?jī)?nèi)存,接口多,效率低。(公用信箱)8同步措施:設(shè)置一對(duì)私有信號(hào)量,記錄郵箱中空格滿格的數(shù)量Deposit(m)beginlocalx
選擇郵箱的一個(gè)空格x
把消息m放入空格x
置格x為滿標(biāo)志
end
Remove(m)beginlocalx
選擇郵箱的一個(gè)滿格x
取走消息m
置格x為空標(biāo)志
endP(formnum)V(mesnum)P(mesnum)V(formnum)9實(shí)例1:管道P66
以比特流方式傳送消息的通信管道,由文件系統(tǒng)的高速緩沖區(qū)構(gòu)成。10例:創(chuàng)建管道,父子進(jìn)程通過(guò)管道傳遞數(shù)據(jù)。#include<stdio.h>main(){intx,fd[2];charbuf[30],s[30];
pipe(fd);while((x=fork())==-1);if(x==0){sprintf(buf,"thisisanexample!");
write(fd[1],buf,30);
exit(0);}else{wait(0);
read(fd[0],s,30);printf("result:%s",s);}}11實(shí)例2:書(shū)例P1541、接收消息程序client.c2、發(fā)送消息程序server.c3、在msg.c中,創(chuàng)建三個(gè)子進(jìn)程:其中兩個(gè)調(diào)用client.c
另一個(gè)調(diào)用server.c
相互之間發(fā)送消息12接收消息程序client.c#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>#defineMSGKEY75structmsgform{longmtype;charmtext[256];};main(intargc,char*argv[]){structmsgformmsg;intmsgqid,pid,*pint;
msgqid=msgget(MSGKEY,0777|IPC_CREAT);printf("msgqid=%d\n\n",msgqid);pid=getpid();pint=(int*)msg.mtext;*pint=pid;msg.mtype=1;
msgsnd(msgqid,&msg,sizeof(int),0);
msgrcv(msgqid,(structmsgform)&msg,sizeof(msg),pid,0);pint=(int*)msg.mtext;pid=(int)*pint;printf("Client%s:receivefromServerprocess%d\n",argv[1],pid);}13發(fā)送消息程序server.c--1#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>#defineMSGKEY75structmsgform{longmtype;charmtext[256];};intmsgqid;main(){structmsgformmsg;inti,*pint;intpid;externcleanup();for(i=0;i<20;i++)signal(i,cleanup);
msgqid=msgget(MSGKEY,0777|IPC_CREAT);printf("msgqid=%d\n\n",msgqid);
14發(fā)送消息程序server.c--2for(;;){msgrcv(msgqid,(structmsgform*)&msg,256,1,0);pint=(int*)msg.mtext;pid=(int)*pint;printf("Server:receivefromClientprocess%d\n\n",pid);msg.mtype=pid;pint=(int*)msg.mtext;*pint=getpid();
msgsnd(msgqid,&msg,sizeof(int),0);}cleanup(){msgctl(msgqid,IPC_RMID,0);exit();}15msg.c#include<sys/types.h>#include<stdio.h>#include<unistd.h>main(){intpid1,pid2,pid3;pid1=vfork();if(pid1==0)/*子進(jìn)程2001*/
{printf("\nClient1process%4d:\n",getpid());execlp("/…/client","client","1",NULL);}else{pid2=vfork();if(pid2==0)/*子進(jìn)程2002*/
{printf("Client2process%4d:\n",getpid());execlp("/…/client","client","2",NULL);}
else{pid3=vfork();if(pid3==0)/*子進(jìn)程2000*/
{printf("Server3process%4d:\n",getpid());
execlp("/…/server","server",NULL);
}
else
{printf("\nThisisParentprocess%4d!\n",
getpid());
}
}
}
wait(0);
wait(0);
wait(0);
}16子進(jìn)程2001子進(jìn)程2002子進(jìn)程2000TYPE:1TEXT:2001TYPE:1TEXT:2002TYPE:
2001TEXT:
2000TYPE:
2002TEXT:
2000消息隊(duì)列書(shū)例P16317實(shí)例3:和控制臺(tái)的通信i18①用戶進(jìn)程PiCCP的接口用戶進(jìn)程發(fā)出問(wèn)題:P_write(m)Begin
P(rq)
把m插入RQ隊(duì)列
V(rq)
V(question)EndCCP接收問(wèn)題:U_receive(m)Begin
P(question)
P(rq)
把m從RQ隊(duì)列取出
V(rq)End19②
CCP與DCP的接口CCP向outbuf送問(wèn)題:
outbuf_empty=1Write(y)Begin
P(outbuf_empty) copy(outbuffromy)
V(outbuf_full)EndDCP從outbuf中接收:
outbuf_full=0Receive(k)Begin
P(outbuf_full) copy(outbuftok)
V(outbuf_empty)End20③
DCP與顯示器的通信顯示器控制進(jìn)程DCP:
D_busy=1初始化{清除outbuf,echo=false}Beginif(outbuf滿)then
receive(k)
P(D_busy)
把k送入顯示器數(shù)據(jù)緩沖區(qū)
V(D_ready)else echo=true
echobuf中字符置入顯示器緩沖區(qū)fiEnd顯示器動(dòng)作DP:
D_ready=0Repeat if(echo=true)then
打印顯示器緩沖區(qū)中字符
else
P(D_ready)
打印顯示器緩沖區(qū)中消息
V(D_busy)Until(顯示器關(guān)機(jī))21④
KCP與鍵盤的通信鍵盤控制進(jìn)程KCP:
T_busy=1初始化{清除inbuf、echobuf}Begin
P(T_ready)
從鍵盤數(shù)據(jù)緩沖區(qū)x中取出字符x.m
Send(x.m)
將x.m送入echobuf
V(T_busy)End鍵盤動(dòng)作KP:
T_ready=0Repeat
P(T_busy)
把鍵入字符送入鍵盤數(shù)據(jù)緩沖區(qū)x
V(T_ready)Until(終端關(guān)閉)22⑤
CCP與KCP的接口KCP向inbuf送回答:
inbuf_empty=1Send(k)Begin
P(inbuf_empty) copy(inbuffromk)
V(inbuf_full)EndCCP從inbuf中接收回答:
inbuf_full=0Read(x)Begin
P(inbuf_full) copy(inbuftox)V(inbuf_empty)End23⑥
CCP用戶進(jìn)程Pi的接口CCP發(fā)出回答:S_answer(a,i)Begin
P(sqi)
把a(bǔ)插入SQi隊(duì)列
V(sqi)
V(answeri)End用戶進(jìn)程接收回答:P_read(a)Begin
P(answeri)
P(sqi)
把a(bǔ)從SQi隊(duì)列取出
V(sqi)
End24會(huì)話控制進(jìn)程CCP的動(dòng)作描述Localk,m,xRepeat
U_receive(m)
將消息m的進(jìn)程標(biāo)號(hào)置入k中 將消息m解碼變換到x
write(x)
read(x)
將x編碼到m
S_answer(m,k)Until(CCP結(jié)束)253.8 死鎖問(wèn)題一、死鎖的定義
指多個(gè)進(jìn)程因競(jìng)爭(zhēng)資源而造成的僵局,即各自等待對(duì)方的資源,而在得到對(duì)方資源前又不會(huì)釋放自己擁有的資源,在無(wú)外力作用下,各進(jìn)程將永遠(yuǎn)不能向前推進(jìn)。26二、死鎖的起因1、資源競(jìng)爭(zhēng): 可剝奪性資源(CPU、內(nèi)存) 非剝奪性資源(打印機(jī)):分配后不能強(qiáng)行收回。272、進(jìn)程推進(jìn)順序非法:合法非法28三、產(chǎn)生死鎖的必要條件:1、互斥條件:2、不剝奪條件:3、部分分配條件(請(qǐng)求和保持):4、環(huán)路條件: 防止死鎖發(fā)生,破壞四個(gè)必要條件中的一個(gè)或多個(gè)即可(主要是第3、4個(gè),第1、2條受資源特性的限制)。29四、死鎖的排除方式1、死鎖的預(yù)防2、死鎖的避免3、死鎖的檢測(cè)和恢復(fù)301、死鎖的預(yù)防——破壞四個(gè)必要條件中的一個(gè)或多個(gè)2)有序資源使用法——打破“環(huán)路條件”
內(nèi)容:把資源編號(hào)排序,要求進(jìn)程必須按編號(hào)遞增的順序申請(qǐng)資源:
m個(gè)資源,R1<R2<…<Rm,進(jìn)程P1保持了Ri,只能申請(qǐng)Rj,(j>i);
原理:總有一個(gè)進(jìn)程占據(jù)較高序號(hào)的資源,其后申請(qǐng)的資源必空閑,從而滿足需要一直往前推進(jìn),再釋放已用資源。
編號(hào)原則:常用資源低序號(hào),不常用資源高序號(hào);
缺點(diǎn):序號(hào)順序相對(duì)穩(wěn)定限制新設(shè)備;當(dāng)一個(gè)進(jìn)程的資源使用順序和編號(hào)順序不一致時(shí),資源閑置浪費(fèi);限制用戶的編程自由。1)預(yù)先靜態(tài)分配法——打破“部分分配條件”
內(nèi)容:進(jìn)程一次性申請(qǐng)和分配全部所需資源,未全部滿足則等待。
缺點(diǎn):資源嚴(yán)重浪費(fèi);進(jìn)程延遲運(yùn)行。312、死鎖的避免思路:在動(dòng)態(tài)分配資源的過(guò)程中預(yù)測(cè)出發(fā)生死鎖的可能性,加以避免。判斷此次分配是否會(huì)導(dǎo)致系統(tǒng)進(jìn)入“不安全狀態(tài)”?安全狀態(tài):系統(tǒng)至少存在一個(gè)安全序列不會(huì)發(fā)生死鎖。例:進(jìn)程需求量已分配空閑資源A1053B42C92
把空閑的3個(gè)中的2個(gè)分給B
把空閑的3個(gè)中的2個(gè)分給C安全的分配:不安全分配:32銀行家算法基本模式: 將進(jìn)程分為若干步,每一步使用的資源固定,當(dāng)進(jìn)程每一步申請(qǐng)資源時(shí),將請(qǐng)求、分配、釋放、空閑的情況結(jié)合起來(lái)計(jì)算,看是否符合分配條件。數(shù)據(jù)結(jié)構(gòu):
n個(gè)并發(fā)進(jìn)程P1…Pn共享m個(gè)資源R1…Rm: 可用資源向量Available[m]:Available[j]—資源Ri現(xiàn)有的空閑個(gè)數(shù) 最大需求矩陣Max[n*m]:Max[i,j]—進(jìn)程Pi對(duì)資源Rj的最大需要數(shù) 分配矩陣Allocation[n*m]:Allocation[i,j]—進(jìn)程Pi已獲得資源Rj的數(shù)量 需求矩陣Need[n*m]:Need[i,j]—進(jìn)程Pi還需要資源Rj的數(shù)量
Need[i,j]=Max[i,j]-Allocation[i,j]333435例:五個(gè)進(jìn)程共享三類資源A、B、C,每類資源數(shù)量為10、5、7。時(shí)刻T0的資源分配情況如下:MaxAllocationNeedAvaillableABCABCABCABCP0753010743332P1322200122P2902302600P3222211011P44330024311057-725 = 33236
對(duì)T0時(shí)刻進(jìn)行安全性分析后,可以找到一個(gè)安全序列{P1,P3,P4,P2,P0},則系統(tǒng)安全。T0WorkNeedAllocationWork+AllocationFinishABCABCABCABCP1332122200532trueP3532011211743trueP4743431002745trueP27456003021047trueP010477430101057true37P1發(fā)出請(qǐng)求Req(1,0,2)
<=Need(1,2,2)及Availlable(3,3,2)
為P1試探分配,修改Availlable、Allocation、Need
T1時(shí)刻進(jìn)行安全性分析,找到安全序列{P1,P3,P4,P0,P2}說(shuō)明系統(tǒng)安全,可以為P1實(shí)施分配T1WorkNeedAllocationWork+AllocationFinishABCABCABCABCP1230020302532trueP3532011211743trueP4743431002745trueP0745743010755trueP27556003021057trueT033212220038P4發(fā)出請(qǐng)求Req(3,3,0):
Req(3,3,0)<=Need(4,3,1)
Req(3,3,0)>Availlable(2,3,0),不能分配,等待。
P0發(fā)出請(qǐng)求Req(0,2,0):
Req(0,2,0)<=Need(7,4,3)
Req(0,2,0)<=Availlable(2,3,0),試探分配,修改數(shù)據(jù):AllocationNeedAvaillableABCABCABCP0030723210P1302020P2302600P3211011P4002431無(wú)法滿足任何進(jìn)程不能分配393、死鎖的檢測(cè)和恢復(fù)1)死鎖的檢測(cè):判斷死鎖是否發(fā)生?2)死鎖的恢復(fù): 終止各進(jìn)程,或逐個(gè)終止,直至先后釋放的資源能夠滿足剩余進(jìn)程的需要。403.9 線程一、線程的引入
為實(shí)現(xiàn)持續(xù)的并發(fā)執(zhí)行,引入進(jìn)程,但由于各種原因,若干進(jìn)程間會(huì)出現(xiàn)頻繁調(diào)度、切換,進(jìn)行上下文切換的開(kāi)銷花去不少CPU時(shí)間,降低并發(fā)的效率。
進(jìn)程的性質(zhì):
1、是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位—PCB。
2、是程序?qū)δ硞€(gè)數(shù)據(jù)集在處理機(jī)上的執(zhí)行過(guò)程。
把兩個(gè)特點(diǎn)分開(kāi),由進(jìn)程負(fù)責(zé)資源的管理,由進(jìn)程創(chuàng)建的若干個(gè)線程完成運(yùn)行的特性,線程共享所屬進(jìn)程的資源,減少線程間切換的花銷。進(jìn)程上下文
進(jìn)程執(zhí)行活動(dòng)過(guò)程的靜態(tài)描述,是進(jìn)程執(zhí)行所依賴的環(huán)境。
當(dāng)系統(tǒng)調(diào)度新進(jìn)程占有處理機(jī)時(shí),新老進(jìn)程的上下文發(fā)生轉(zhuǎn)換。42二、線程的概念
進(jìn)程內(nèi)的基本調(diào)度單位; 是相對(duì)獨(dú)立的執(zhí)行單元(子任務(wù));進(jìn)程線程資源分配的基本單位。處理機(jī)調(diào)度的基本單位,與資源分配無(wú)關(guān),多個(gè)線程共享所屬進(jìn)程的資源。不同進(jìn)程有不同的虛擬地址空間,有外存掛起狀態(tài)。同一進(jìn)程內(nèi)的線程共享同一地址空間,無(wú)外存掛起狀態(tài)。進(jìn)程存在的標(biāo)志:進(jìn)程控制塊PCB上下文切換時(shí)間長(zhǎng)線程的存在標(biāo)志:線程控制表TCB及相關(guān)堆棧和寄存器上下文切換時(shí)間短43線程控制塊TCB的內(nèi)容1、線程的狀態(tài);2、CPU現(xiàn)場(chǎng)信息:
PC、PSW、通用寄存器、堆棧指針44三、線程的特點(diǎn)1、由進(jìn)程所創(chuàng)建,一個(gè)進(jìn)程至少創(chuàng)建一個(gè)線程,線程也可以創(chuàng)建線程;2、線程不擁有資源,只共享所屬進(jìn)程的資源;3、同一進(jìn)程下的線程運(yùn)行在相同的地址空間;4、線程之間需要互斥和同步機(jī)制;5、線程有生命期,在生命期中有狀態(tài)的變化;6、類似程序,但一般不是完整的程序。45四、線程的狀態(tài)1、就緒:具備運(yùn)行條件,只等CPU;2、執(zhí)行:占有CPU運(yùn)行;3、阻塞:因?yàn)槟呈录尦鯟PU,等待;46五、線程的優(yōu)點(diǎn)1、創(chuàng)建和撤消線程、線程切換的開(kāi)銷小,提高了并發(fā)效率;一個(gè)進(jìn)程的開(kāi)銷大約是一個(gè)線程開(kāi)銷的30倍左右.2、線程共享同一地址空間的內(nèi)存和文件,減少了通信的開(kāi)銷;3、減少用戶等待時(shí)間,提高系統(tǒng)響應(yīng)速度;4、促使用戶設(shè)計(jì)出邊界清晰、模塊獨(dú)立性好的程序。47六、線程的使用范圍1、多處理機(jī)系統(tǒng):
用戶程序根據(jù)功能劃分成不同線程,放在不同處理機(jī)上運(yùn)行。2、單處理機(jī)系統(tǒng):
1)多個(gè)用戶對(duì)文件服務(wù)器提出文件訪問(wèn)請(qǐng)求;
2)前臺(tái)和后臺(tái)的分工處理;
3)異步處理;
4)加快執(zhí)行速度;
5)組織復(fù)雜的工作;48七、線程的分類1、用戶級(jí)線程:
用戶程序在用戶空間執(zhí)行線程庫(kù),創(chuàng)建、調(diào)度、撤消線程,操作系統(tǒng)內(nèi)核只管理進(jìn)程; 用戶級(jí)線程調(diào)度只進(jìn)行線程上下文切換,不涉及處理機(jī)狀態(tài),與內(nèi)核無(wú)關(guān);2、系統(tǒng)級(jí)線程:
操作系統(tǒng)內(nèi)核進(jìn)行管理,內(nèi)核提供系統(tǒng)調(diào)用和應(yīng)用程序接口創(chuàng)建、調(diào)度、撤消線程; 負(fù)責(zé)進(jìn)程和線程的調(diào)度;49例:Linux下的多線程程序example.c#include<stdio.h>#include<pthread.h>voidthread(void)
{inti;
for(i=0;i<3;i++)
printf("Thisisapthread.\n");
}intmain(void)
{pthread_tid;
inti,ret;
ret=pthread_create(&id,NULL,(void*)thread,NULL);
if(ret!=0)
{
printf("Createpthreaderror!\n");exit(1);
}
for(i=0;i<3;i++)
printf("Thisisthemainprocess.\n");
pthread_join(id,NULL);
return(0);
}50相關(guān)函數(shù)函數(shù)pthread_create用來(lái)創(chuàng)建一個(gè)線程:
第一個(gè)參數(shù)為指向線程標(biāo)識(shí)符的指針,第二個(gè)參數(shù)用來(lái)設(shè)置線程屬性,第三個(gè)參數(shù)是線程運(yùn)行函數(shù)的起始地址,最后一個(gè)參數(shù)是運(yùn)行函數(shù)的參數(shù)。 創(chuàng)建線程成功后,新創(chuàng)建的線程則運(yùn)行參數(shù)三和參數(shù)四確定的函數(shù),原來(lái)的線程則繼續(xù)運(yùn)行下一行代碼。函數(shù)pthread_join用來(lái)等待一個(gè)線程的結(jié)束:
第一個(gè)參數(shù)為被等待的線程標(biāo)識(shí)符,第二個(gè)參數(shù)為一個(gè)用戶定義的指針,它可以用來(lái)存儲(chǔ)被等待線程的返回值。 這個(gè)函數(shù)是一個(gè)線程阻塞的函數(shù),調(diào)用它的函數(shù)將一直等待到被等待的線程結(jié)束為止,當(dāng)函數(shù)返回時(shí),被等待線程的資源被收回。編寫(xiě)運(yùn)行Linux下的多線程程序,需要使用頭文
溫馨提示
- 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è)學(xué)院《高等數(shù)學(xué)(Ⅱ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025屆江西省上饒市實(shí)驗(yàn)中學(xué)數(shù)學(xué)七年級(jí)第一學(xué)期期末達(dá)標(biāo)檢測(cè)試題含解析
- 2024年延安市志丹縣公益性崗位招聘考試真題
- Relap5仿真計(jì)算程序簡(jiǎn)介
- 2025年picc靜脈置管指南試題
- 部編人教版三年級(jí)語(yǔ)文下冊(cè)《花鐘》示范公開(kāi)課教學(xué)課件(第1課時(shí))
- 教育為根創(chuàng)新為魂內(nèi)窺鏡護(hù)理的臨床實(shí)踐
- 大數(shù)據(jù)時(shí)代下的教育創(chuàng)新個(gè)性化學(xué)習(xí)平臺(tái)的機(jī)遇和挑戰(zhàn)分析
- 地震知識(shí)培訓(xùn)課件
- 教育政策如何助力教育資源均衡配置
- 2025年質(zhì)量員(市政工程)專業(yè)技能練習(xí)題庫(kù)及答案(完整版)
- 客戶投訴管理和考核辦法
- 云計(jì)算安全性能測(cè)試報(bào)告
- 外泌體相關(guān)課件
- 譫妄狀態(tài)患者的護(hù)理常規(guī)
- DB3402-T 78-2024 高標(biāo)準(zhǔn)農(nóng)田數(shù)字化建設(shè)規(guī)范
- 2025年湖北省中考?xì)v史模擬試卷附答案
- 高血壓腦出血治療指南
- 病人隱私保護(hù)與信息安全培訓(xùn)
- 生物安全管理體系文件
- 2025年電信智能云服務(wù)交付工程師(網(wǎng)大版)備考試題庫(kù)大全-上(單選題)
評(píng)論
0/150
提交評(píng)論