一、課堂筆記
第二章 、進(jìn)程管理
2-1 進(jìn)程與PCB
2.1進(jìn)程的基本概念
要點(diǎn)
1.分析程序執(zhí)行順序、以及并發(fā)的特征
2.進(jìn)程的概念、特征與狀態(tài)
3.進(jìn)程控制塊及其組織
程序順序執(zhí)行時的特征

進(jìn)程






經(jīng)典同步問題
1. 生產(chǎn)者—消費(fèi)者問題:
多個生產(chǎn)者和消費(fèi)者對n個緩 沖區(qū)的使用。?
1. 無論生產(chǎn)者、消費(fèi)者使用緩沖池時應(yīng)保證 互斥使用(互斥信號量mutex )
2. 生產(chǎn)者和消費(fèi)者間交叉有序:
?? 有序的控制最根源在產(chǎn)品數(shù)量上。
?? 設(shè)置兩個信號量: 分別針對生產(chǎn)者、消費(fèi)者設(shè)置不同 的信號量,empty和full分別表示緩沖 池中空緩沖池和滿緩沖池(即產(chǎn)品)的 數(shù)量。
分析:互斥信號量mutex用來保證對緩沖池的互斥使用,即在放一個產(chǎn)品的同時不能同時去拿。 empty和full用來控制 “空”和“產(chǎn)品”。初始時空為n,產(chǎn)品為0,當(dāng)生產(chǎn)者生產(chǎn)一個產(chǎn)品后空-1,產(chǎn)品+1;這就可以用記錄型信號量來控制。
buffer: array [ 0, …, n-1] of item; in, out: integer :=0, 0;
Var mutex, empty, full: semaphore :=1, n, 0;
生產(chǎn)者 :?
repeat … produce an item in nexp; …
buffer(in):=nexp; in:=(in+1) mod n;
until? false;
wait(mutex);
signal(mutex);
wait(empty);
signal(full);
消費(fèi)者 :
?repeat
nextc:=buffer(out); out:=(out+1) mod n;
consume the item in nexc;? ? ? ? ? ? ? ??
wait(mutex);
signal(mutex);
wait(full);
signal(empty);
?until? false;?
1. 每個程序中用于實(shí)現(xiàn)互斥的wait(mutex)和 signal(mutex)必須成對地出現(xiàn)。
?2. 控制順序的信號量empty和full的wait和 signal操作,成對地出現(xiàn)在不同的進(jìn)程中。
?3. 在每個程序中的多個wait操作順序不能顛倒。 且應(yīng)先執(zhí)行對資源信號量的wait操作,再執(zhí)行 對互斥信號量的wait操作,否則可能引起進(jìn)程 死鎖。
?4. 模擬交替執(zhí)行過程,檢查控制是否正確。