課程設(shè)計(jì)報(bào)告書(shū)
課程名稱(chēng):
操作系統(tǒng)原理
題
目:
編程序模擬銀行家算法
系
名:
信息工程系
專(zhuān)業(yè)班級(jí):
軟件
姓
名:
學(xué)
號(hào):
指導(dǎo)教師:
2013年
X
月
X
日
學(xué)院信息工程系
課
程
設(shè)
計(jì)
任
務(wù)
書(shū)
課程名稱(chēng):
操作系統(tǒng)原理課程設(shè)計(jì)
指導(dǎo)教師:
班級(jí)名稱(chēng):
軟件
開(kāi)課系、教研室:
軟件與信息安全
一、課程設(shè)計(jì)目的與任務(wù)
操作系統(tǒng)課程設(shè)計(jì)是《操作系統(tǒng)原理》課程的后續(xù)實(shí)踐課程,旨在通過(guò)一周的實(shí)踐訓(xùn)練,加深學(xué)生對(duì)理論課程中操作系統(tǒng)概念,原理和方法的理解,加強(qiáng)學(xué)生綜合運(yùn)用操作系統(tǒng)原理、Linux系統(tǒng)、C語(yǔ)言程序設(shè)計(jì)技術(shù)進(jìn)行實(shí)際問(wèn)題處理的能力,進(jìn)一步提高學(xué)生進(jìn)行分析問(wèn)題和解決問(wèn)題的能力,包含系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)現(xiàn)和系統(tǒng)測(cè)試的能力。
學(xué)生將在指導(dǎo)老師的指導(dǎo)下,完成從需求分析,系統(tǒng)設(shè)計(jì),編碼到測(cè)試的全過(guò)程。
二、課程設(shè)計(jì)的內(nèi)容與基本要求
1、課程設(shè)計(jì)題目
編程序模擬銀行家算法
2、課程設(shè)計(jì)內(nèi)容
本課程設(shè)計(jì)要求在Linux操作系統(tǒng),GCC編譯環(huán)境下開(kāi)發(fā)。
銀行家算法是避免死鎖的一種重要方法,本實(shí)驗(yàn)要求用用c/c++語(yǔ)言在Linux操作系統(tǒng)環(huán)境下編寫(xiě)和調(diào)試一個(gè)簡(jiǎn)單的銀行家算法程序。加深了解有關(guān)資源申請(qǐng)、避免死鎖等概念,并體會(huì)和了解死鎖和避免死鎖的具體實(shí)施方法。
思想:將一定數(shù)量的資金供多個(gè)用戶(hù)周轉(zhuǎn)使用,當(dāng)用戶(hù)對(duì)資金的最大申請(qǐng)量不超過(guò)現(xiàn)存資金時(shí)可接納一個(gè)新客戶(hù),客戶(hù)可以分期借款,但借款總數(shù)不能超過(guò)最大的申請(qǐng)量。銀行家對(duì)客戶(hù)的借款可以推遲支付,但是能夠使客戶(hù)在有限的時(shí)間內(nèi)得到借款,客戶(hù)得到所有的借款后能在有限的時(shí)間內(nèi)歸還。用銀行家算法分配資源時(shí),測(cè)試進(jìn)程對(duì)資源的最大需求量,若現(xiàn)存資源能滿(mǎn)足最大需求就滿(mǎn)足當(dāng)前進(jìn)程的申請(qǐng),否則推遲分配,這樣能夠保證至少有一個(gè)進(jìn)程可以得到所需的全部資源而執(zhí)行到結(jié)束,然后歸還資源,若OS能保證所有進(jìn)程在有限的時(shí)間內(nèi)得到所需資源則稱(chēng)系統(tǒng)處于安全狀態(tài)。
3、設(shè)計(jì)報(bào)告撰寫(xiě)格式要求:
1設(shè)計(jì)題目與要求
設(shè)計(jì)思想
3系統(tǒng)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)的說(shuō)明和模塊的算法流程圖
使用說(shuō)明書(shū)(即用戶(hù)手冊(cè)):內(nèi)容包含如何登錄、退出、讀、寫(xiě)等操作說(shuō)明
運(yùn)行結(jié)果和結(jié)果分析(其中包括實(shí)驗(yàn)的檢查結(jié)果、程序的運(yùn)行情況)
自我評(píng)價(jià)與總結(jié)
附錄:程序清單,注意加注釋?zhuān)òP(guān)鍵字、方法、變量等),在每個(gè)模塊前加注釋?zhuān)?/p>
三、課程設(shè)計(jì)步驟及時(shí)間進(jìn)度和場(chǎng)地安排
本課程設(shè)計(jì)將安排在第15周,教育技術(shù)中心。具體安排如下:
第一天
下發(fā)任務(wù)書(shū),學(xué)生查閱資料
第二天
系統(tǒng)設(shè)計(jì)和原型開(kāi)發(fā)
第三,四天
系統(tǒng)功能實(shí)現(xiàn)
第五天
系統(tǒng)調(diào)試
測(cè)試
打包和驗(yàn)收
四、課程設(shè)計(jì)考核及評(píng)分標(biāo)準(zhǔn)
課程設(shè)計(jì)考核將綜合考慮學(xué)生考勤和參與度,系統(tǒng)設(shè)計(jì)方案正確性,系統(tǒng)設(shè)計(jì)和開(kāi)發(fā)效果以及課程設(shè)計(jì)報(bào)告書(shū)的質(zhì)量。具體評(píng)分標(biāo)準(zhǔn)如下:
設(shè)置六個(gè)評(píng)分點(diǎn)
(1)設(shè)計(jì)方案正確,具有可行性、創(chuàng)新性;
25分
(2)系統(tǒng)開(kāi)發(fā)效果較好;
25分
(3)態(tài)度認(rèn)真、刻苦鉆研、遵守紀(jì)律;
10分
(4)設(shè)計(jì)報(bào)告規(guī)范、課程設(shè)計(jì)報(bào)告質(zhì)量高、參考文獻(xiàn)充分
20分
(5)課程設(shè)計(jì)答辯概念清晰,內(nèi)容正確
10分
(6)課程設(shè)計(jì)期間的課堂考勤、答疑與統(tǒng)籌考慮。
10分
按上述六項(xiàng)分別記分后求和,總分按五級(jí)記分法記載最后成績(jī)。
優(yōu)秀(100~90分),良好(80~89分),中等(70~79分),及格(60~69分),不及格(0~59分)
1.題目要求與實(shí)驗(yàn)?zāi)康?.1
實(shí)驗(yàn)?zāi)康模?/p>
1.1.1進(jìn)一步理解利用銀行家算法避免死鎖的問(wèn)題;
1.1.2在了解和掌握銀行家算法。
1.1.3理解和掌握安全序列、安全性算法
1.2
設(shè)計(jì)題目:
編程序模擬銀行家算法
1.3
要求
:
本實(shí)驗(yàn)要求用用
c/c語(yǔ)言在Linux
操作系統(tǒng)環(huán)境下編寫(xiě)和調(diào)試一個(gè)簡(jiǎn)單的銀行家算法程序。加深了解有關(guān)資源申請(qǐng)、避免死鎖等概念,并體會(huì)和了解死鎖和避免死鎖的具體實(shí)施方法。
1.4
實(shí)驗(yàn)內(nèi)容
:
1.4.1編寫(xiě)安全性算法;
1.4.2編寫(xiě)銀行家算法,并編制銀行家算法通用程序,將調(diào)試結(jié)果顯示在計(jì)算機(jī)屏幕上,再檢測(cè)和筆算的一致性。
設(shè)計(jì)思想
將一定數(shù)量的資金供多個(gè)用戶(hù)周轉(zhuǎn)使用,當(dāng)用戶(hù)對(duì)資金的最大申請(qǐng)量不超過(guò)現(xiàn)存資金時(shí)可接納一個(gè)新客戶(hù),客戶(hù)可以分期借款,但借款總數(shù)不能超過(guò)最大的申請(qǐng)量。銀行家對(duì)客戶(hù)的借款可以推遲支付,但是能夠使客戶(hù)在有限的時(shí)間內(nèi)得到借款,客戶(hù)得到所有的借款后能在有限的時(shí)間內(nèi)歸還。
用銀行家算法分配資源時(shí),測(cè)試進(jìn)程對(duì)資源的最大需求量,若現(xiàn)存資源能滿(mǎn)足最大需求就滿(mǎn)足當(dāng)前進(jìn)程的申請(qǐng),否則推遲分配,這樣能夠保證至少有一個(gè)進(jìn)程可以得到所需的全部資源而執(zhí)行到結(jié)束,然后歸還資源,若OS能保證所有進(jìn)程在有限的時(shí)間內(nèi)得到所需資源則稱(chēng)系統(tǒng)處于安全狀態(tài)。
3.需求分析
3.1問(wèn)題描述:利用銀行家算法模擬計(jì)算機(jī)系統(tǒng)分配資源的過(guò)程。
3.2要求:
3.2.11、以課本例題中數(shù)據(jù)為例,模擬資源分配過(guò)程。
3.2.2、系統(tǒng)中資源種類(lèi),各類(lèi)資源數(shù)目,進(jìn)程申請(qǐng)資源數(shù)目可任意輸入,模擬資源分配過(guò)程。
4.系統(tǒng)結(jié)構(gòu)
初始化函數(shù)init()開(kāi)始
輸入進(jìn)程的數(shù)目m
輸入資源種類(lèi)n
輸入每個(gè)進(jìn)程最多所需的各種資源數(shù)
輸入每個(gè)進(jìn)程分配的資源數(shù)
輸入各個(gè)資源現(xiàn)有數(shù)目
初始化函數(shù)init()結(jié)束
輸入提示:
輸入有誤重新輸入
圖
5.數(shù)據(jù)結(jié)構(gòu)的說(shuō)明和模塊的算法流程圖
5.1
數(shù)據(jù)結(jié)構(gòu):
①可利用資源向量
Available
是個(gè)含有
m
個(gè)元素的數(shù)組,其中的每一個(gè)元素代表一類(lèi)可利用的資源數(shù)目。如果
AvailablejK,則表示系統(tǒng)中現(xiàn)有
Rj
類(lèi)資源
K
個(gè)。
②最大需求矩陣
Max
這是一個(gè)
n×m的矩陣,它定義了系統(tǒng)中
n
個(gè)進(jìn)程中的每一個(gè)進(jìn)程對(duì)
m
類(lèi)資源的最大需求。如果
MaxijK,則表示進(jìn)程
i
需要
Rj
類(lèi)資源的最大數(shù)目為
K。
③分配矩陣
Allocation
這也是一個(gè)
n×m的矩陣,它定義了系統(tǒng)中每一類(lèi)資源當(dāng)前已分配給每一進(jìn)程的資源數(shù)。如果
AllocationijK,則表示進(jìn)程
i
當(dāng)前已分得
Rj
類(lèi)資源的數(shù)目為
K。
④需求矩陣
Need。
這也是一個(gè)
n×m的矩陣,用以表示每一個(gè)進(jìn)程尚需的各類(lèi)資源數(shù)。如果NeedijK,則表示進(jìn)程
i
還需要
Rj
類(lèi)資源
K
個(gè),才可以完成其任務(wù)。
5.2
程序流程圖:
①、系統(tǒng)主要過(guò)程流程
預(yù)分配
安全?
實(shí)際分配打印輸出
退出系統(tǒng)
Request[i]>Available[i]?
Request[i]>need[i]?
提出申請(qǐng)
打印輸出此時(shí)刻資源分配情況
進(jìn)入系統(tǒng)
輸入:
1.繼續(xù)分配
2.退出
進(jìn)入初始化
②、安全性算法流程圖
調(diào)用safty()函數(shù)
Work[]=Available[],Finish[]=False
Need[]<=work[]且Finsh[]=Falsse?
Work[]=work[]+Alloccation[],Finish[]=Ture
所有進(jìn)程的Finsh[]=Ture?
實(shí)際分配輸出安全序列并打印出
輸出提示系統(tǒng)不安全
調(diào)用結(jié)束
用戶(hù)手冊(cè)
6.1
首先在終端中使用
vi
編輯器建立
c的源文件
6.2
然后使用
gcc
編輯器編譯生成可執(zhí)行文件
6.3
使用命令./當(dāng)前名字,來(lái)執(zhí)行
7.運(yùn)行結(jié)果和結(jié)果分析
7.1
運(yùn)行結(jié)果:
申請(qǐng)成功如圖
2,申請(qǐng)失敗如圖
3:
圖
申請(qǐng)金額在需求范圍之內(nèi)同意
圖
申請(qǐng)金額在需求范圍之外拒絕
7.2
結(jié)果分析
首先是自己定義
個(gè)用戶(hù)所需的金額數(shù),銀行可以給用戶(hù)貸款的總金額數(shù)是100,用戶(hù)
Id
號(hào)的范圍是在0
到
4,超過(guò)
之后的id
請(qǐng)求貸款,會(huì)顯示拒絕提示信息,每個(gè)客戶(hù)的貸款數(shù)量必須是在之前定義的范圍之內(nèi),如果超出,也會(huì)出現(xiàn)錯(cuò)誤提示,只有在規(guī)定的用戶(hù)
id
和在客戶(hù)所要求金額的范圍之內(nèi)請(qǐng)求,才會(huì)給予貸款,并且輸出安全序列號(hào)。
8.自我評(píng)價(jià)與總結(jié)
一周的課程設(shè)計(jì)結(jié)束了。在這一周里,我收獲很多,以前都是在自己的教室由我們自己的老師進(jìn)行講課,這次學(xué)校沒(méi)有這樣做,而是請(qǐng)的校外的老師給我們做課程設(shè)計(jì),讓我們體會(huì)一下真正的公司是怎樣做業(yè)務(wù)的。在這一周里我做一個(gè)模擬銀行家算法。我覺(jué)得在著手設(shè)計(jì)前設(shè)計(jì)的思路是很重要的。只有思路清晰才能進(jìn)行下一階段的設(shè)計(jì)。這樣才能完成整個(gè)程序的設(shè)計(jì),完成整個(gè)文報(bào)告的書(shū)寫(xiě)。
課程設(shè)計(jì)這幾天學(xué)到的東西還真不少。以前不清楚的現(xiàn)在都暴露出來(lái)了。以前認(rèn)為學(xué)了沒(méi)用的東西現(xiàn)在也用到了。這次的課程設(shè)計(jì)使我進(jìn)一步了解了調(diào)度與死鎖的問(wèn)題。以及有關(guān)資源申請(qǐng)的問(wèn)題、避免死鎖的具體實(shí)施方法。深入了解了銀行家算法的資源申請(qǐng)和資源分配的過(guò)程及原則。保證系統(tǒng)處于安全狀態(tài)。
經(jīng)過(guò)本周的課程設(shè)計(jì),我對(duì)操作系統(tǒng)的掌握又進(jìn)了一步,收獲了很多知識(shí)。,終于我了由于對(duì)
c
語(yǔ)言不夠熟練,在試驗(yàn)過(guò)程中,進(jìn)行了反復(fù)的修改和調(diào)試,解銀行家算法的基本原理,并且在此次的課程設(shè)計(jì)中我又復(fù)習(xí)了一下
c
語(yǔ)言,加深了對(duì)它的了解,而且在課程設(shè)計(jì)的過(guò)程中我們同樣學(xué)會(huì)了如何簡(jiǎn)單的操作與使用
Linux
操作系統(tǒng),學(xué)習(xí)到了許多
Linux
操作系統(tǒng)中常用的一些密令。
這次的設(shè)計(jì)數(shù)據(jù)是通過(guò)一道實(shí)際的題目來(lái)體現(xiàn)銀行家算法避免死鎖的問(wèn)題,先用銀行家算法給其中一個(gè)進(jìn)程分配資源,看它所請(qǐng)求的資源是否大于它的需求量,才和系統(tǒng)所能給的資源相比較.讓進(jìn)程形成一個(gè)安全隊(duì)列看系統(tǒng)是否安全.再利用安全性算法檢查此時(shí)系統(tǒng)是否安全。
操作系統(tǒng)的基本特征是并發(fā)與共享。系統(tǒng)允許多個(gè)進(jìn)程并發(fā)執(zhí)行,并且共享系統(tǒng)的軟、硬件資源。為了最大限度的利用計(jì)算機(jī)系統(tǒng)的資源,操作系統(tǒng)應(yīng)采用動(dòng)態(tài)分配的策略,但是這樣就容易因資源不足,分配不當(dāng)而引起“死鎖”。而我本次課程設(shè)計(jì)就是得用銀行家算法來(lái)避免“死鎖”。銀行家算法就是一個(gè)分配資源的過(guò)程,使分配的序列不會(huì)產(chǎn)生死鎖。此算法的中心思想是:按該法分配資源時(shí),每次分配后總存在著一個(gè)進(jìn)程,如果讓它單獨(dú)運(yùn)行下去,必然可以獲得它所需要的全部資源,也就是說(shuō),它能結(jié)束,而它結(jié)束后可以歸還這類(lèi)資源以滿(mǎn)足其他申請(qǐng)者的需要。
通過(guò)這次實(shí)驗(yàn),我體會(huì)到銀行家算法的重要性,銀行家算法是避免死鎖的主要方法,其思路在很多方面都非常值得我來(lái)學(xué)習(xí)借鑒。
附錄:
主要源程序
參考文獻(xiàn)
[1]
張堯?qū)W主編.計(jì)算機(jī)操作系統(tǒng)教程(第三版).北京:清華大學(xué)出版社,2006
[2]
張堯?qū)W編.計(jì)算機(jī)操作系統(tǒng)教程(第三版)習(xí)題解答與實(shí)驗(yàn)指導(dǎo).北京:清華大學(xué)出版社,2006
[3]
湯子瀛主編.計(jì)算機(jī)操作系統(tǒng)(第三版).西安:西安電子科技大學(xué)出版社,2001
[4]
張坤等編.操作系統(tǒng)實(shí)驗(yàn)教程.北京:清華大學(xué)出版社,2008
[5]
張麗芬等編.操作系統(tǒng)實(shí)驗(yàn)教程.北京:清華大學(xué)出版社,2006
[6]
屠祁等編.操作系統(tǒng)基礎(chǔ)(第三版).北京:清華大學(xué)出版社,2000
[7]
馮耀霖等編.操作系統(tǒng).西安:西安電子科技大學(xué)出版社,2001
[8]
左萬(wàn)歷.計(jì)算機(jī)操作系統(tǒng)教程(第二版).北京:高等教育出版社,2004
[9]譚浩強(qiáng).《C語(yǔ)言程序設(shè)計(jì)》.北京:清華大學(xué)出版社2003
[8]
龐麗華.《操作系統(tǒng)原理》(第四版).北京.華中科技大學(xué)出版社
2002
設(shè)計(jì)過(guò)程中質(zhì)疑(或答辯)記載:
1.銀行家算法的主要思想是什么?
答:一個(gè)進(jìn)程進(jìn)入系統(tǒng)時(shí)分配資源之前,判斷系統(tǒng)是否是安全的,即看它所請(qǐng)求的資源是否大于它的最大需求量,若正常,則判斷該進(jìn)程所需剩余剩余量(包括本次申請(qǐng))是否超出系統(tǒng)所掌握的剩余資源量,若不超出,則分配,否則等待。
2.銀行家算法的主要問(wèn)題是什么?
答:要求每個(gè)進(jìn)程必須事先知道資源的最大需求量,而且,在系統(tǒng)運(yùn)行過(guò)程中,考查每個(gè)進(jìn)程對(duì)各類(lèi)資源的申請(qǐng)需花費(fèi)較多的時(shí)間。
3.在銀行家算法中各個(gè)資源存在什么關(guān)系?
答:該進(jìn)程所需要的資源數(shù)NEED[m][n]=MAX[m][n](該進(jìn)程所需要的最多的資源數(shù))-----ALLOCATION[m][n](該進(jìn)程所占有的資源數(shù))
指導(dǎo)教師評(píng)語(yǔ):
簽名:
****年**月**日