操作系統(tǒng)實(shí)驗(yàn)報(bào)告.doc
約25頁DOC格式手機(jī)打開展開
操作系統(tǒng)實(shí)驗(yàn)報(bào)告,頁數(shù):15字?jǐn)?shù):5066實(shí)驗(yàn)一、哲學(xué)家就餐問題一、問題描述哲學(xué)家就餐問題是有dijkatra提出并解決的典型同步問題。該問題描述的是有五個(gè)哲學(xué)家共用一張圓桌,分別坐在周圍的五張椅子上,圓桌上有五個(gè)碗和五只筷子,他們的生活方式是交替的進(jìn)行思考和就餐。平時(shí),一個(gè)哲學(xué)家進(jìn)行思考,饑餓時(shí)便試圖取用其左右最靠近他...


內(nèi)容介紹
此文檔由會(huì)員 usactu 發(fā)布
操作系統(tǒng)實(shí)驗(yàn)報(bào)告
頁數(shù):15 字?jǐn)?shù):5066
實(shí)驗(yàn)一、哲學(xué)家就餐問題
一、問題描述
哲學(xué)家就餐問題是有Dijkatra提出并解決的典型同步問題。該問題描述的是有五個(gè)哲學(xué)家共用一張圓桌,分別坐在周圍的五張椅子上,圓桌上有五個(gè)碗和五只筷子,他們的生活方式是交替的進(jìn)行思考和就餐。平時(shí),一個(gè)哲學(xué)家進(jìn)行思考,饑餓時(shí)便試圖取用其左右最靠近他的筷子,只有在他拿到兩只筷子時(shí)才能進(jìn)餐。進(jìn)餐完,放下筷子繼續(xù)思考。
二、問題分析
該問題可用記錄型信號(hào)量或者是AND型信號(hào)量解決。
記錄型信號(hào)量解決
經(jīng)分析可知,放在桌子上的筷子是臨界資源,在一段時(shí)間內(nèi)只允許一位哲學(xué)家使用,為了實(shí)現(xiàn)對(duì)筷子的互斥使用,可以用一個(gè)信號(hào)量表示一只筷子,由這五個(gè)信號(hào)量組成信號(hào)量數(shù)組。當(dāng)哲學(xué)家饑餓時(shí)總是先拿其左邊的筷子,成功后,再去拿右邊的筷子,又成功后方可就餐。進(jìn)餐完,又先放下他左邊的筷子,再放下右邊筷子。這個(gè)算法可以保證不會(huì)有兩個(gè)相鄰的哲學(xué)家同時(shí)就餐,但有可能引起死鎖。
AND型信號(hào)量解決
在哲學(xué)家就餐過程中,要求每個(gè)哲學(xué)家先獲得兩個(gè)臨界資源后方能就餐,這在本質(zhì)上就是AND同步問題,故用AND信號(hào)量機(jī)制可獲得最簡(jiǎn)潔的解法。
三、程序偽代碼
#include
#include
#include
#define N 5 /* 哲學(xué)家的個(gè)數(shù) */
#define P(S) WaitForSingleObject(S, INFINITE) // 定義Windows下的P操作
#define V(S) ReleaseSemaphore(S, 1, NULL) // 定義Windows下的V操作
typedef HANDLE Semaphore; // 信號(hào)量的Windows原型
HANDLE hThread[N]; // 線程計(jì)數(shù)
Semaphore S[N]; // N根筷子, N個(gè)信號(hào)量
// 對(duì)每個(gè)哲學(xué)家的線程
DWORD WINAPI Philosopher(LPVOID para)
{
添加代碼
}
int main(int argc, char *argv[])
{
DWORD tid;
int i=0;
char sTmp[32];// 初始化信號(hào)量
for (i=0; i {
頁數(shù):15 字?jǐn)?shù):5066
實(shí)驗(yàn)一、哲學(xué)家就餐問題
一、問題描述
哲學(xué)家就餐問題是有Dijkatra提出并解決的典型同步問題。該問題描述的是有五個(gè)哲學(xué)家共用一張圓桌,分別坐在周圍的五張椅子上,圓桌上有五個(gè)碗和五只筷子,他們的生活方式是交替的進(jìn)行思考和就餐。平時(shí),一個(gè)哲學(xué)家進(jìn)行思考,饑餓時(shí)便試圖取用其左右最靠近他的筷子,只有在他拿到兩只筷子時(shí)才能進(jìn)餐。進(jìn)餐完,放下筷子繼續(xù)思考。
二、問題分析
該問題可用記錄型信號(hào)量或者是AND型信號(hào)量解決。
記錄型信號(hào)量解決
經(jīng)分析可知,放在桌子上的筷子是臨界資源,在一段時(shí)間內(nèi)只允許一位哲學(xué)家使用,為了實(shí)現(xiàn)對(duì)筷子的互斥使用,可以用一個(gè)信號(hào)量表示一只筷子,由這五個(gè)信號(hào)量組成信號(hào)量數(shù)組。當(dāng)哲學(xué)家饑餓時(shí)總是先拿其左邊的筷子,成功后,再去拿右邊的筷子,又成功后方可就餐。進(jìn)餐完,又先放下他左邊的筷子,再放下右邊筷子。這個(gè)算法可以保證不會(huì)有兩個(gè)相鄰的哲學(xué)家同時(shí)就餐,但有可能引起死鎖。
AND型信號(hào)量解決
在哲學(xué)家就餐過程中,要求每個(gè)哲學(xué)家先獲得兩個(gè)臨界資源后方能就餐,這在本質(zhì)上就是AND同步問題,故用AND信號(hào)量機(jī)制可獲得最簡(jiǎn)潔的解法。
三、程序偽代碼
#include
#include
#include
#define N 5 /* 哲學(xué)家的個(gè)數(shù) */
#define P(S) WaitForSingleObject(S, INFINITE) // 定義Windows下的P操作
#define V(S) ReleaseSemaphore(S, 1, NULL) // 定義Windows下的V操作
typedef HANDLE Semaphore; // 信號(hào)量的Windows原型
HANDLE hThread[N]; // 線程計(jì)數(shù)
Semaphore S[N]; // N根筷子, N個(gè)信號(hào)量
// 對(duì)每個(gè)哲學(xué)家的線程
DWORD WINAPI Philosopher(LPVOID para)
{
添加代碼
}
int main(int argc, char *argv[])
{
DWORD tid;
int i=0;
char sTmp[32];// 初始化信號(hào)量
for (i=0; i
TA們正在看...
- 2011年注冊(cè)會(huì)計(jì)師注會(huì)經(jīng)濟(jì)法課后作業(yè)大全.doc
- 市場(chǎng)營(yíng)銷學(xué).ppt
- “教師作風(fēng)建設(shè)”自我剖析.doc
- introductiontoenglishlearning.ppt
- 英語網(wǎng)上學(xué)習(xí)指導(dǎo).ppt
- 保潔員工培訓(xùn)實(shí)施標(biāo)準(zhǔn)作業(yè)規(guī)程與技巧.doc
- 深圳家政服務(wù)行業(yè)可行性分析方案.pdf
- 房地產(chǎn)營(yíng)銷策劃報(bào)告及方案.docx
- 房地產(chǎn)營(yíng)銷策劃方案.doc
- 計(jì)算機(jī)網(wǎng)絡(luò)與通信課件chapter1.ppt