国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

《操作系統(tǒng)》中銀行家算法的研究性教學(xué)

2009-05-12 02:34葉承瓊
科教導(dǎo)刊 2009年31期
關(guān)鍵詞:操作系統(tǒng)

葉承瓊

摘要《操作系統(tǒng)》課程中死鎖是一個(gè)重要的問(wèn)題,銀行家算法是采用死鎖避免策略來(lái)解決死鎖問(wèn)題的經(jīng)典算法,也是本課程教學(xué)的重難點(diǎn),本文根據(jù)實(shí)際教學(xué)經(jīng)驗(yàn)探討以銀行家算法為例的研究性教學(xué)方法。

關(guān)鍵詞死鎖 死鎖避免 銀行家算法 安全性算法

中圖分類號(hào):G423文獻(xiàn)標(biāo)識(shí)碼:A

1 引言

《操作系統(tǒng)》是計(jì)算機(jī)專業(yè)的核心理論課程之一,該課程首次引入進(jìn)程以及進(jìn)程并發(fā)執(zhí)行等相關(guān)概念,無(wú)論對(duì)于教師的專業(yè)教學(xué)還是對(duì)于學(xué)生的系統(tǒng)學(xué)習(xí)都具有重要的作用。由于本課程涉及的學(xué)科多、理論知識(shí)點(diǎn)多、內(nèi)容難理解等特征,在整個(gè)學(xué)習(xí)過(guò)程中,最讓學(xué)生關(guān)注的是對(duì)于死鎖問(wèn)題中銀行家算法的討論,這不僅涉及計(jì)算機(jī)專業(yè)問(wèn)題,同樣在日常生活中也存在很多類似的現(xiàn)象,具有實(shí)踐意義。

為了讓學(xué)生深入掌握理論知識(shí),本文根據(jù)實(shí)際教學(xué)經(jīng)驗(yàn),結(jié)合大部分學(xué)生學(xué)習(xí)該課程的情況,以銀行家算法為例探討了該課程的教學(xué)方法。

2 銀行家算法的教學(xué)思路

2.1 銀行家算法的引入

對(duì)于多個(gè)進(jìn)程的并發(fā)執(zhí)行可以改善系統(tǒng)的資源利用率和提高系統(tǒng)的處理能力,學(xué)生通過(guò)前序內(nèi)容的學(xué)習(xí)都能夠理解,但在系統(tǒng)運(yùn)行過(guò)程中由于進(jìn)程執(zhí)行的異步性特征以及系統(tǒng)資源的有限,如果操作系統(tǒng)為這些并發(fā)進(jìn)程分配資源順序不當(dāng)時(shí),就可能會(huì)產(chǎn)生死鎖(Deadlock),而死鎖最終可能導(dǎo)致整個(gè)系統(tǒng)癱瘓,危及系統(tǒng)安全。

那么在操作系統(tǒng)設(shè)計(jì)過(guò)程中如果產(chǎn)生死鎖又是如何解決呢?

通常解決死鎖的方法有預(yù)防、避免、檢測(cè)和解除三種,其中采用死鎖避免可以獲得滿意的系統(tǒng)性能,而銀行家算法(Bankers Algorithm)則是典型的采用死鎖避免策略來(lái)解決死鎖問(wèn)題的著名算法。是由艾茲格·迪杰斯特拉在1965年為T.H.E系統(tǒng)設(shè)計(jì)的一種避免死鎖產(chǎn)生的算法。它以銀行借貸系統(tǒng)的分配策略為基礎(chǔ),判斷并保證系統(tǒng)的安全運(yùn)行。銀行家就好比操作系統(tǒng),資金就是資源,客戶就相當(dāng)于要申請(qǐng)資源的進(jìn)程。

2.2 掌握銀行家算法的基本原理

首先讓學(xué)生了解系統(tǒng)通常工作的兩個(gè)狀態(tài):即安全狀態(tài)和不安全狀態(tài),在系統(tǒng)動(dòng)態(tài)的為各進(jìn)程分配資源的過(guò)程中,只要保證系統(tǒng)處于安全狀態(tài),即系統(tǒng)可按照某一順序?yàn)槊恳贿M(jìn)程分配資源直至完成釋放,存在這樣的安全序列系統(tǒng)就不會(huì)發(fā)生死鎖。接下來(lái)具體分析銀行家算法的數(shù)據(jù)結(jié)構(gòu)及算法步驟。

2.2.1 銀行家算法中的數(shù)據(jù)結(jié)構(gòu)

可利用資源向量:Available[j]=k,表示系統(tǒng)中現(xiàn)有Rj類資源k個(gè)。

最大需求矩陣:Max[i,j]=k,表示進(jìn)程i需要Rj類資源的最大數(shù)目為k。

分配矩陣:Allocation[i,j]=k,表示進(jìn)程i當(dāng)前已分得Rj類資源的數(shù)目為k。

需求矩陣:Need[i,j]=k,表示進(jìn)程i還需要Rj類資源k個(gè),方能完成其任務(wù)。

不難看出上述矩陣間存在下述關(guān)系:

Need[i,j]= Max[i,j]- Allocation[i,j]。

2.2.2 銀行家算法的具體描述

進(jìn)程Pi的請(qǐng)求向量:Requesti[j]=k,表示進(jìn)程Pi需要k個(gè)Rj類型的資源。

當(dāng)Pi發(fā)出資源請(qǐng)求Requesti后,系統(tǒng)按下述步驟進(jìn)行檢查:

(1)若Requesti<=Needi,則轉(zhuǎn)向(2);否則錯(cuò)誤,因?yàn)镻i所請(qǐng)求的資源已超過(guò)它的需求最大值。

(2)若Requesti<=Available,則轉(zhuǎn)向(3);否則進(jìn)程Pi等待,因?yàn)榇藭r(shí)系統(tǒng)沒(méi)有足夠的資源。

(3)系統(tǒng)進(jìn)入試探性分配,并修改相應(yīng)的數(shù)據(jù)結(jié)構(gòu):

Available=Available-Requesti

Allocationi=Allocationi+Requesti;

Needi=Needi-Requesti;

(4)系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配之后,系統(tǒng)是否處于安全狀態(tài)。若安全則試探性分配生效;否則,將試探性分配作廢,進(jìn)程Pi等待。

2.2.3安全性算法描述

Work:表示系統(tǒng)可提供給進(jìn)程繼續(xù)運(yùn)行所需要的各類資源數(shù)目。

Finish:表示系統(tǒng)是否有足夠的資源分配給進(jìn)程,使之運(yùn)行完成。

(1)Work= Available;

Finish[i]=false。

(2)從進(jìn)程集合中找到一個(gè)滿足下述條件的進(jìn)程:

Finish[i]=false;Needi<=Work。若找到轉(zhuǎn)向(3);否則轉(zhuǎn)向(4)。

(3)當(dāng)進(jìn)程Pi獲得資源后,可順利執(zhí)行直至完成,并釋放出分配給它的資源:

Work=Work+Available;Finish[i]=true;轉(zhuǎn)向(1)。

(4)若所有進(jìn)程的Finish[i]=true,表示系統(tǒng)處于安全狀態(tài);否則系統(tǒng)處于不安全狀態(tài)。

2.3 銀行家算法教學(xué)過(guò)程中的注意事項(xiàng)

通過(guò)上述對(duì)銀行家算法及安全性算法的基本原理及詳細(xì)步驟的分析,教學(xué)過(guò)程中結(jié)合教材、參考資料中相關(guān)例題的講解,進(jìn)一步加深學(xué)生對(duì)于銀行家算法的理解和掌握。但學(xué)生在解題過(guò)程中往往會(huì)忽略一些細(xì)節(jié),導(dǎo)致對(duì)該算法的理解出現(xiàn)偏差,本人在教學(xué)過(guò)程中總結(jié)了一些經(jīng)驗(yàn),現(xiàn)羅列如下幾點(diǎn):

(1)系統(tǒng)在開(kāi)始執(zhí)行銀行家算法時(shí),檢查Requesti、Needi和Available的先后順序一定不能顛倒。應(yīng)先檢查Pi進(jìn)程所提出的請(qǐng)求向量Requesti是否在該進(jìn)程的需求范圍內(nèi),即是否小于等于Needi,若超過(guò)則產(chǎn)生一個(gè)錯(cuò)誤。然后再確定當(dāng)前系統(tǒng)中可利用資源數(shù)能否滿足此次請(qǐng)求向量Requesti,即Requesti是否小于等于Available,若大于說(shuō)明此時(shí)系統(tǒng)中沒(méi)有足夠的資源滿足該進(jìn)程的請(qǐng)求,進(jìn)程Pi等待。

(2)在安全性算法執(zhí)行到從進(jìn)程集合中找滿足Finish[i]=false和Needi<=Work兩個(gè)條件的進(jìn)程時(shí),若同時(shí)存在若干個(gè)進(jìn)程均符合條件,則不管選中哪一個(gè)進(jìn)程都可以。

(3)在進(jìn)行安全性檢查時(shí)若找不到安全序列,系統(tǒng)處于不安全狀態(tài),此時(shí)的系統(tǒng)可能會(huì)產(chǎn)生死鎖而不是一定產(chǎn)生死鎖。學(xué)生在以后的學(xué)習(xí)過(guò)程中實(shí)現(xiàn)銀行家算法應(yīng)考慮到這一點(diǎn),并作出合理的過(guò)程設(shè)計(jì)。

(4)在某一時(shí)刻,系統(tǒng)處于安全狀態(tài),即存在安全序列,則安全序列的個(gè)數(shù)只能是1(最小值)和正偶數(shù),最大值是n!(n表示進(jìn)程個(gè)數(shù))。

3 總結(jié)

在本課程整個(gè)教學(xué)過(guò)程中,只要將知識(shí)點(diǎn)理清,并圍繞操作系統(tǒng)的五大功能展開(kāi)教學(xué),對(duì)每個(gè)功能的介紹要結(jié)合各大功能知識(shí)點(diǎn)內(nèi)在的聯(lián)系,特別對(duì)于像死鎖這樣理論性較強(qiáng)并且抽象的問(wèn)題,應(yīng)特別強(qiáng)調(diào)進(jìn)程執(zhí)行的相關(guān)特征如并發(fā)性與異步性等,由淺入深,并就難點(diǎn)如銀行家算法逐步分析解決死鎖問(wèn)題的過(guò)程。該教學(xué)方法已經(jīng)進(jìn)行了幾年的教學(xué)實(shí)踐,把復(fù)雜抽象問(wèn)題加以概念闡述并結(jié)合實(shí)際,重點(diǎn)難理解的部分特別強(qiáng)調(diào),知識(shí)有條理,學(xué)生比較容易接受,從而能夠熟練掌握解決此類問(wèn)題的方法,普遍反映良好。

不足之處在于實(shí)驗(yàn)教學(xué)部分需要改善。操作系統(tǒng)是所有軟件中最復(fù)雜的,而目前幾大主流操作系統(tǒng)的地位已相當(dāng)堅(jiān)固,所以師生幾乎沒(méi)有參與編制實(shí)際操作系統(tǒng)的機(jī)會(huì),這樣在教學(xué)過(guò)程中原理的抽象性和實(shí)際開(kāi)發(fā)嚴(yán)重脫節(jié),直接影響學(xué)生學(xué)習(xí)該課程的興趣。不過(guò)近年來(lái)為改善教學(xué)效果,我校在理論教學(xué)的同時(shí),開(kāi)設(shè)了實(shí)驗(yàn)課程,主要針對(duì)目前最有潛力的Linux系統(tǒng)。下一步準(zhǔn)備嘗試讓學(xué)生分析Linux內(nèi)核代碼,了解系統(tǒng)的整個(gè)構(gòu)架及內(nèi)部運(yùn)行模式,引發(fā)學(xué)生學(xué)習(xí)的興趣,同時(shí)不斷探索新的教學(xué)方式與方法,使理論、命令和程序融為一體。

參考文獻(xiàn)

[1]湯子贏,哲鳳屏,湯小丹.計(jì)算機(jī)操作系統(tǒng)[M].西安:西安電子科技大學(xué)出版社,2006.

[2]高煜.操作系統(tǒng)原理.北京:海洋出版社[M].2006.

[3]于廣斌,葛元康,李宗民.“操作系統(tǒng)”課程改革的探索與實(shí)踐.計(jì)算機(jī)教育,2009(14):22~23.

[4]仲兆滿.銀行家算法的改進(jìn)及其在操作系統(tǒng)上的推廣.連云港師范高等??茖W(xué)校學(xué)報(bào),2002(2):46~48.

猜你喜歡
操作系統(tǒng)
智能手機(jī)操作系統(tǒng)的分析與比較
國(guó)產(chǎn)桌面操作系統(tǒng)中虛擬化技術(shù)應(yīng)用研究
操作系統(tǒng)實(shí)踐教學(xué)改革探索
基于虛擬機(jī)(VMware)的實(shí)驗(yàn)平臺(tái)構(gòu)建
基于單片機(jī)的嵌入式系統(tǒng)的開(kāi)發(fā)研究
計(jì)算機(jī)操作系統(tǒng)中死鎖問(wèn)題研究
“操作系統(tǒng)原理”實(shí)驗(yàn)教學(xué)設(shè)置初探
高校操作系統(tǒng)課程教學(xué)改革的研究與實(shí)踐
《操作系統(tǒng)》課程教學(xué)方法的研究與實(shí)踐
基于單片機(jī)的嵌入式系統(tǒng)開(kāi)發(fā)及實(shí)踐要點(diǎn)研究論述
邵东县| 仙居县| 万荣县| 邹城市| 富平县| 建水县| 平昌县| 乐安县| 宁蒗| 莎车县| 犍为县| 西乡县| 绥棱县| 夏邑县| 沁水县| 苏尼特左旗| 岐山县| 乡城县| 资源县| 中方县| 武义县| 宁波市| 枣庄市| 永寿县| 平昌县| 额济纳旗| 六枝特区| 苍南县| 东光县| 鄂州市| 龙胜| 莱阳市| 泾源县| 吉林省| 大新县| 平塘县| 西和县| 白河县| 浪卡子县| 咸丰县| 鹤峰县|