汤小丹计算机操作系统慕课版课后题答案第四章:进程同步
生活随笔
收集整理的這篇文章主要介紹了
汤小丹计算机操作系统慕课版课后题答案第四章:进程同步
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一.簡答題
以互斥形式訪問的資源稱為臨界資源,訪問臨界資源的代碼稱為臨界區(qū)。
空閑讓進,忙則等待,有限等待,讓權等待
臨界資源指的是每次只允許一個進程進行訪問的軟硬件資源,故必須互斥訪問。
軟件算法,信號,信號量,TS,中斷,swap指令,管程等。
忙等指的是進程要訪問的臨界資源被其他進程占用,此進程沒有自旋鎖便處于自旋狀態(tài)即忙等狀態(tài)。
占用CPU資源,降低CPU效率。
皮特森算法是雙標志加一把鎖
首先說自已要(flagi = true),但是先謙讓把鑰匙給別人(key = j),若是別人也想要(flagj = true),別人也謙讓key = i,自己便可以訪問臨界資源
ps:while()中檢查的是若是別人想上,并且鑰匙是別人的,自己便會阻塞,否則自己會訪問臨界資源。
關中斷:訪問臨界區(qū)時關閉中斷。
TS:TS指令為每個臨界區(qū)加一個布爾變量,每次進入臨界區(qū)都必須使用TS指令測試變量。
swap指令:使用swap指令為每個進程設置一個局部變量key,使用swap指令交換key的值與臨界資源鎖的值,今兒判斷是否有進程正在訪問。
ps:硬件實現(xiàn)互斥都是使用鎖實現(xiàn)的,進程必須不斷測試鎖的值,不滿足讓權等待原則。
會導致信號量混亂,或者陷入死鎖,比如使用記錄型信號量進行p操作被中斷,s-value已經小于零,但是沒有阻塞隊列。
在PV操作時,把所有進程請求的資源都分配給進程,要么分配夠,要么一個也不分配。
解決了一個進程需要多個互斥資源才能執(zhí)行的問題。
若只有P,沒有V就會造z成進程死鎖,
若只有V,沒有P會造成信號量失效。
管程是代表共享數(shù)據結構,以及由對該共享數(shù)據結構實施操作的過程組成的資源管理程序,是操作系統(tǒng)的一個資源管理模塊。
特癥:
(1)抽象了臨界資源。
(2)對臨界資源的訪問只能調用管程進行。
(3)只允許一個進程進入管程。
作用:為了解決管程中的進程不能被阻塞,而其他進程不能訪問管程的問題。
含義:管程為何種阻塞的原因都設置了條件變量,進程若因此原因而阻塞,會把這個進程掛在此條件變量的隊列上,若是阻塞條件發(fā)生變換,則啟動一個進程。
二 .計算題
三.綜合應用題
本題精髓是使用兩個記錄型信號量在P1進程中記錄奇偶數(shù)個數(shù)。
本題王道書給的答案過于復雜,可以參考第7題給出更簡單的解
int i,j = 0 //i表是當前取號號碼,j表示叫號號碼
n = 10 //空位數(shù)
mutex_i ,mutex_j = 1 //互斥信號量
顧客
{
p(mutex_i)
p(n)
i++
//取號,待叫號,待獲得服務
v(mutex_i)
}
營業(yè)員{
if(j<I)
{
p(mutex_j)
v(n)
// 叫號,為j號服務
j++
v(mutex_j)
}
}
semaphore
ok_3= 1
mutex_1 = 1
mutex_2= 1
ok_1= 0
ok_2=0
p1
{
p(ok_3)
p(mutex_1)
…
v(mutex_1)
v(ok_1)
}
p2
{
p(ok_1)
p(mutex_1)
p(mutex_2)
…
v(mutex_1)
v(mutex_2)
v(ok_2)
}
p3
{
P(ok_2)
p(mutex_2)
…
v(mutex_2)
v(ok_3)
}
semaphore n = 4
semaphore choptick[5] = {1,1,1,1,1}
while(1)
{
p(n)
p(choptick[i])
p(choptick[i+1]%5)
eat…
v(n)
v(choptick[i])
v(choptick[i+1]%5)
}
總結
以上是生活随笔為你收集整理的汤小丹计算机操作系统慕课版课后题答案第四章:进程同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java面试题1 牛客:A派生出子类B,
- 下一篇: 域名卡密自助授权系统