寫(xiě)一個(gè)無(wú)死鎖、無(wú)饑餓的哲學(xué)家進(jìn)餐問(wèn)題的解。
5個(gè)哲學(xué)家圍坐在圓桌邊。每人前面有一支筷子。當(dāng)一個(gè)哲學(xué)家思考時(shí),他不影響其他同事。一段時(shí)間后,他需要用餐了,而且試圖拿到最靠近他的兩支筷子。當(dāng)他拿到兩支筷子后,就開(kāi)始用餐。用畢放下筷子,重新開(kāi)始思考。
死鎖:當(dāng)5個(gè)人同時(shí)拿自己左邊的一支筷子。再要拿右邊的筷子時(shí)。他們的要求會(huì)被無(wú)休止的推遲。這就發(fā)生了死鎖。
饑餓:當(dāng)5個(gè)人同時(shí)拿自己左邊的一支筷子,看到右邊不可用。同時(shí)放下自己左邊的一支筷子。等一會(huì),又同時(shí)拿起右邊的筷子。這樣不停忙著。但都無(wú)法進(jìn)展。就發(fā)生了饑餓。
有一個(gè)閱覽室,共有100個(gè)座位,讀者進(jìn)入時(shí)必須先在一張登記表上登記,該表為每一座位列一表目,包括座號(hào)和讀者姓名等,讀者離開(kāi)時(shí)要消掉登記的信息,試問(wèn):
(1)為描述讀者的動(dòng)作,應(yīng)編寫(xiě)幾個(gè)程序,設(shè)置幾個(gè)進(jìn)程?
(2)試用PV操作描述讀者進(jìn)程之間的同步關(guān)系。