李仲生 黃美玲
摘 要: 銀行家算法要解決的通常是并發(fā)多進(jìn)程、多種類資源環(huán)境下的死鎖避免問題,所處環(huán)境有隨機(jī)性、動態(tài)性的特點(diǎn),算法采用的數(shù)據(jù)結(jié)構(gòu)多且復(fù)雜,這些因素易讓學(xué)生潛意識地產(chǎn)生畏難意識,為調(diào)動學(xué)生的主觀能動性,基于PBL給出一種團(tuán)隊教學(xué)模式。銀行家算法的實際教學(xué)顯示,這種教學(xué)模式挖掘?qū)W生的潛力,提升教學(xué)內(nèi)容的可理解性。
關(guān)鍵詞: PBL 團(tuán)隊式教學(xué)模式 死鎖避免 主動學(xué)習(xí)
一方面,進(jìn)程的同步與互斥是多進(jìn)程并發(fā)執(zhí)行的基石,位于執(zhí)行的核心位置,是操作系統(tǒng)課程教學(xué)重點(diǎn)。另一方面,由于是多進(jìn)程并發(fā)執(zhí)行,進(jìn)程對資源的要求是動態(tài)的,難以預(yù)知,要避免死鎖發(fā)生,進(jìn)程的同步與互斥必須提升到能反映這種動態(tài)性,內(nèi)容自然成為操作系統(tǒng)課程教學(xué)的難點(diǎn)。如果是單一資源的互斥或多個資源一次性分配互斥,采用PV原語利用信號量能可靠實現(xiàn),如果是多進(jìn)程多資源的異步多次分配,光依靠PV原語和信號量已無法確保死鎖不發(fā)生,此時,就需要專門死鎖避免算法。銀行家算法就是這樣一種算法。
銀行家算法面對的是多進(jìn)程多資源的異步分配,算法實現(xiàn)涉及一系列向量和矩陣數(shù)據(jù)結(jié)構(gòu),抽象且復(fù)雜,有相當(dāng)?shù)慕虒W(xué)難度。為降低學(xué)生學(xué)習(xí)難度,總結(jié)長期教學(xué)實踐,下文給出一種基于PBL(Problem-Based Learning)[1]團(tuán)隊式教學(xué)模式。
1.PBL(Problem-Based Learning)團(tuán)隊式教學(xué)
PBL即以問題為導(dǎo)向的學(xué)習(xí)模式,是基于現(xiàn)實世界以學(xué)生為中心的教育方式[2]。與傳統(tǒng)教師主講的教學(xué)方式不同,在PBL學(xué)習(xí)模式中,學(xué)生的行為不再是被動聽課,而是主動沿著問題展開學(xué)習(xí); 問題,或者與學(xué)習(xí)內(nèi)容相關(guān)的任務(wù),是學(xué)習(xí)者的起點(diǎn)、思路和前進(jìn)方向; PBL學(xué)習(xí)模式給出真實性任務(wù),并給出有意義、邏輯性強(qiáng)的一組問題,讓學(xué)生融入問題形成的學(xué)習(xí)氛圍中,自主探究或通過合作解答這些問題,揭示并學(xué)習(xí)隱含在問題背后的科學(xué)知識,潛移默化地提升自主學(xué)習(xí)能力,獲得解決問題的技能。
當(dāng)前世界有一個共識,那就是“團(tuán)隊協(xié)作”能促進(jìn)發(fā)展,進(jìn)而取得突破,甚至創(chuàng)造奇跡,科研如此,教學(xué)也如此。通過一般性分析可發(fā)現(xiàn),團(tuán)隊至少能給參與者帶來四方面好處,一是營造氛圍,二是自省,三是互醒,四是成就感。心理學(xué)研究表明,人有著強(qiáng)烈的從眾心理,大家在做什么,個體就認(rèn)為自己也應(yīng)該做什么,大家穿什么,人就認(rèn)為自己也該穿什么,等等,這種心理帶來的結(jié)果就是:團(tuán)隊能營造氛圍。個體在團(tuán)隊中看到別人的情況,比較自己的狀態(tài),在比較中會發(fā)現(xiàn)自己的問題,此為自省。團(tuán)隊集眾人之力,完成事情的效率肯定高于個體,能做的事情的范疇非個體可比,這種超越個體的收獲足以帶來更強(qiáng)的成就感,高成就感反過來使團(tuán)體更加高效。
2.PBL團(tuán)隊教學(xué)模式的實施
在銀行家算法教學(xué)中引入PBL團(tuán)隊教學(xué)模式有三個基本步驟,一是分析算法面對的環(huán)境,提出一系列環(huán)環(huán)相扣的問題,二是將學(xué)生分成適當(dāng)規(guī)模的團(tuán)隊,并讓團(tuán)隊如同電腦一般運(yùn)行起來;三是反饋,即用銀行家算法理論知識反過來驗證團(tuán)隊探討的問題。
第一步工作在備課時完成。銀行家算法要做的工作是針對多個進(jìn)程需求多種資源、每種資源的數(shù)目不一定為一的情形,判定每一步資源分配的安全性,為化抽象為具體,不妨引入實例[3]。設(shè)有三個進(jìn)程,分別是P1、P2、P3,另有兩類互斥資源,分別記為A、B,對應(yīng)的初始資源數(shù)目記為向量形式Avail0=(10,9), 三個進(jìn)程初始時未分配資源,它們的資源需求向量分別是P1■=(11,2)、P2■=(7,6)、P3■=(7,5),小團(tuán)隊組長問:當(dāng)前狀態(tài)安不安全?很直觀的,有同學(xué)發(fā)現(xiàn)P1進(jìn)程的資源得不到滿足,沒有安全路徑,不安全。組長改一下,寫成P1■=(9,2)、P2■=(7,6)、P3■=(7,5),再問安不安全,同學(xué)討論一番,找到了數(shù)條安全路徑,答安全。運(yùn)行開始,P3提出資源請求P3■=(2,4),問:P3的請求是不是合理?答:小于P3資源最大需求,合理。問:當(dāng)前資源能不能滿足P3的請求?答:小于現(xiàn)有資源數(shù)量,能滿足。問:能不能進(jìn)行分配?討論后答:分配后存在安全路徑,處于安全狀態(tài),能分配。第一次分配后的資源需求向量變?yōu)镻1■=(9,2)、P2■=(7,6)、P3■=(5,1),三個進(jìn)程得到資源的向量變?yōu)镻1■=(0,0)、P2■=(0,0)、P3■=(2,4),剩余資源數(shù)Avail■=(8,5)。接下來,P1提出請求P1■=(4,2),做合理性檢查,過;做能否滿足檢查,也過;做安全性檢查,發(fā)現(xiàn)一旦實施分配,剩余資源給三個進(jìn)程中的任何一個都沒法執(zhí)行完,不存在安全路徑,不安全,阻塞P1進(jìn)程……就這樣不斷重復(fù),三項檢查通過時分配,不過時阻塞,直到完畢。
第二步工作是分組工作,為節(jié)省課時,可在課前由班干部預(yù)安排。根據(jù)設(shè)計的實例規(guī)模,每組六人,其中三人代表三個進(jìn)程,兩人代表兩類資源,一人任組長,控制全程運(yùn)行。課前需準(zhǔn)備鉛筆和紙,以便以變化數(shù)據(jù)形式顯示執(zhí)行過程。協(xié)調(diào)六人動作,如同軟件測試中的模擬執(zhí)行一樣,讓三個進(jìn)程動起來。
第三步是反饋,在分組執(zhí)行完成后進(jìn)行,是理論上的反饋,相當(dāng)于略詳細(xì)些的課后總結(jié)。具體內(nèi)容主要是根據(jù)剛才動態(tài)演示的過程,對比銀行家算法的各項數(shù)據(jù)結(jié)構(gòu),加以映射比較,達(dá)到深化之效,比如:可利用資源向量,即最初始的資源向量;最大需求矩陣,即將每個進(jìn)程的初始資源需求拼成一個矩陣;分配矩陣,即將每個進(jìn)程得到的資源向量拼成一個矩陣;需求矩陣,即最大需求矩陣減去分配矩陣。在明確這些數(shù)據(jù)結(jié)構(gòu)后,進(jìn)一步對進(jìn)行安全檢測的臨時數(shù)據(jù)結(jié)構(gòu)加以歸納。
3.結(jié)語
為調(diào)動學(xué)生的學(xué)習(xí)主動性,降低銀行家算法的教學(xué)復(fù)雜度,基于以問題為導(dǎo)向的學(xué)習(xí)模式(PBL),給出了一種團(tuán)隊教學(xué)模式。在該教學(xué)模式下,每個同學(xué)都相當(dāng)于一個計算機(jī)組件,每個問題相當(dāng)于一條機(jī)器指令,整個學(xué)習(xí)過程在嚴(yán)密邏輯中、在同學(xué)們的主動參與下步步向前推進(jìn)。從本質(zhì)上說,這種團(tuán)隊教學(xué)模式并不僅限于銀行家算法教學(xué),在操作系統(tǒng)的其他知識環(huán)節(jié)如PV原語、請求頁式調(diào)度算法中,都有這種PBL團(tuán)隊教學(xué)模式的用武之地。更一般的,這種教學(xué)模式甚至不局限于操作系統(tǒng)這門課程,在未來教研工作中我們將證實這一點(diǎn)。
參考文獻(xiàn):
[1]Howard S Barrows.How to design a problem-based curriculum for the preclinical years[M].New York: Springer Pub Co,1985.
[2]陳慶章,古輝,王子仁,等.PBL理論探討及教師角色認(rèn)識[J].計算機(jī)教育,2011(9):103-107.
[3]岳溥庥.實例教學(xué)法在操作系統(tǒng)原理教學(xué)中的應(yīng)用[J].考試周刊,2013,94:173-174.
基金項目:湖南省教育科學(xué)“十二五”規(guī)劃課題(項目號:XJK015BXX007