版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、操作系統(tǒng)實(shí)驗(yàn)三:銀行家算法的實(shí)現(xiàn)一、 基本信息:a) 實(shí)驗(yàn)題目:銀行家算法的實(shí)現(xiàn)b) 完成人姓名:韓璐璐c) 學(xué)號(hào):71114115d) 報(bào)告日期:2016.5.27二、 實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)實(shí)驗(yàn),加深對(duì)多實(shí)例資源分配系統(tǒng)中死鎖避免方法銀行家算法的理解,掌握Windows環(huán)境下銀行家算法的實(shí)現(xiàn)方法,同時(shí)鞏固利用Windows API進(jìn)行共享數(shù)據(jù)互斥訪問(wèn)和多線程編程的方法。三、 實(shí)驗(yàn)內(nèi)容1. 在Windows操作系統(tǒng)上,利用Win32 API編寫(xiě)多線程應(yīng)用程序?qū)崿F(xiàn)銀行家算法。2. 創(chuàng)建n個(gè)線程來(lái)申請(qǐng)或釋放資源,只有保證系統(tǒng)安全,才會(huì)批準(zhǔn)資源申請(qǐng)。3. 通過(guò)Win32 API提供的信號(hào)量機(jī)制,實(shí)現(xiàn)共享數(shù)據(jù)
2、的并發(fā)訪問(wèn)。四、程序運(yùn)行時(shí)的初值和運(yùn)行結(jié)果(系統(tǒng)截圖)五、源程序并附上注釋#include #include #include #include using namespace std;int r3 = 3, 3, 2 ;/系統(tǒng)擁有的資源int r0 = 0, r1 = 0, r2 = 0;/記錄申請(qǐng)資源class pcbpublic:int id;bool state;int max3;int alc3;int need3;pcb()void init()state = false;cout 請(qǐng)輸入進(jìn)程的id,各個(gè)資源總需求量和已占用資源 id;cout a,b,c三種資源的最大使用量 ma
3、x0 max1 max2;cout a,b,c三種資源的已占有量 alc0 alc1 alc2;int rd(int n)return rand() % (n + 1);int request()/Sleep(1000);r0 = rd(max0 - alc0);r1 = rd(max1 - alc1);r2 = rd(max2 - alc2);cout 進(jìn)程 id 申請(qǐng)資源a r0 申請(qǐng)資源b r1 申請(qǐng)資源c r2 r0 | r1r1 | r2r2)cout 沒(méi)有那么多資源! endl;return 0;if (r0 = (max0 - alc0) & r1 = (max1 - alc1)
4、 & r2 = (max2 - alc2)r0 = r0 + alc0;r1 = r1 + alc1;r2 = r2 + alc2;return 1;return 2;bool safe(vector temp, int i)int u = r0 - r0, k = r1 - r1, l = r2 - r2;for (int j = i; jtemp.size() - 1; j+)tempj = tempj + 1;temp.pop_back();int size = temp.size();/記錄下容器內(nèi)還有多少個(gè)進(jìn)程/int rangesize;/記錄下隊(duì)列int x = 0;/計(jì)數(shù)器wh
5、ile (!temp.empty()static int j = 0;if (tempj.max0 - tempj.alc0) = u & (tempj.max1 - tempj.alc1) = k &(tempj.max2 - tempj.alc2) = l)/判斷是否能運(yùn)行完cout 運(yùn)行 tempj.id endl;u = u + tempj.alc0;k = k + tempj.alc1;l = l + tempj.alc2;for (int e = j; e= temp.size()j = 0;elsej+;if (j = temp.size()j = 0;x+;if (x = (s
6、ize*size)cout 沒(méi)有安全隊(duì)列,以上情況不成立 endl;cout endl;return false;return true;int main()srand(time(0);pcb p4;vector vp;for (int i = 0; i4; i+)pi.init();vp.push_back(pi);int x = 0;/計(jì)算器int c;cout 請(qǐng)選擇分配資源方法:1.銀行家算法 2.隨機(jī)算法 c;switch (c)case 1:while (!vp.empty()int a;static int i = 0;if (a = vpi.request() != 0)if
7、(a = 1)cout 進(jìn)程 vpi.id 已經(jīng)結(jié)束 endl;for (int j = i; j= vp.size()i = 0;cout a資源還剩 r0 b資源還剩 r1 c資源還剩 r2 endl;cout endl;elseif (safe(vp, i)cout 存在安全隊(duì)列 endl;cout endl;vpi.alc0 = vpi.alc0 + r0;vpi.alc1 = vpi.alc1 + r1;vpi.alc2 = vpi.alc2 + r2;r0 = r0 - r0;r1 = r1 - r1;r2 = r2 - r2;cout a資源還剩 r0 b資源還剩 r1 c資源還
8、剩 r2 endl;cout = vp.size()i = 0;elsei+;if (i = vp.size()i = 0;x+;if (x = 200)cout 初始化的表不安全 endl;return 0;cout 進(jìn)程已經(jīng)全部結(jié)束 endl;break;case 2:while (!vp.empty()int a2;static int i2 = 0;if (a2 = vpi2.request() != 0)if (a2 = 1)cout 進(jìn)程 vpi2.id 已經(jīng)結(jié)束 endl;for (int j = i2; j= vp.size()i2 = 0;cout a資源還剩 r0 b資源還
9、剩 r1 c資源還剩 r2 endl;cout endl;elsevpi2.alc0 = vpi2.alc0 + r0;vpi2.alc1 = vpi2.alc1 + r1;vpi2.alc2 = vpi2.alc2 + r2;r0 = r0 - r0;r1 = r1 - r1;r2 = r2 - r2;cout a資源還剩 r0 b資源還剩 r1 c資源還剩 r2 endl;cout = vp.size()i2 = 0;elsei2+;if (i2 = vp.size()i2 = 0;x+;if (x = 200)cout 產(chǎn)生死鎖 endl;return 0;cout 進(jìn)程已經(jīng)全部結(jié)束 endl;break;default:cout 選擇錯(cuò)誤 endl;break;sy
溫馨提示
- 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ǔ) 漫畫(huà) 課件
- 《做功了嗎》課件
- 手術(shù)總結(jié) 課件
- 西京學(xué)院《英美文學(xué)導(dǎo)讀》2022-2023學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《書(shū)法》2021-2022學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《機(jī)器學(xué)習(xí)》2021-2022學(xué)年期末試卷
- 西京學(xué)院《工程造價(jià)軟件應(yīng)用》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024-2025學(xué)年高考語(yǔ)文試題及參考答案
- 西華師范大學(xué)《智能計(jì)算》2022-2023學(xué)年期末試卷
- 西華師范大學(xué)《寫(xiě)實(shí)油畫(huà)》2023-2024學(xué)年第一學(xué)期期末試卷
- 《新零售模式對(duì)企業(yè)營(yíng)運(yùn)資金管理影響探究:以小米公司為例》開(kāi)題報(bào)告(有提綱)4900字
- (2024版)2024年新建住宅小區(qū)物業(yè)服務(wù)管理合同
- 艾灸基礎(chǔ)理論知識(shí)單選題100道及答案解析
- 晨會(huì)安全講話稿范文大全集
- 汽車(chē)美容裝潢技術(shù)電子教案 2.2-汽車(chē)內(nèi)部清洗護(hù)理
- 2023年中國(guó)鐵塔招聘筆試真題
- 江蘇省蘇州市2024-2025學(xué)年高一上學(xué)期11月期中英語(yǔ)試題(無(wú)答案)
- 天堂旅行團(tuán)讀書(shū)分享
- 2024年河北承德熱力集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 自行招用保安員單位備案申請(qǐng)材料
- 核反應(yīng)堆復(fù)習(xí)題目
評(píng)論
0/150
提交評(píng)論