李佳靜 徐慧 朱紅
摘 要:計算機操作系統(tǒng)原理課程是計算機專業(yè)的核心課程,其中“進程管理”部分關(guān)于如何正確實現(xiàn)進程互斥和同步方法一直是教學(xué)中的重點和難點。在對于進程的同步和互斥問題中,對加鎖法采用了啟發(fā)式教學(xué),從時間相關(guān)的錯誤、不公平問題、效率問題和表示能力問題等幾個方面層層深入,讓學(xué)生了解到加鎖算法在實際應(yīng)用中的不足之處。進一步引導(dǎo)學(xué)生思考信號量機制引入的必要性和先進性,對于幫助學(xué)生理解和掌握操作系統(tǒng)的進程管理機制起到了良好效果。
關(guān)鍵詞:操作系統(tǒng)原理 啟發(fā)式教學(xué) 加鎖法 信號量
中圖分類號:G64 文獻標(biāo)識碼:A 文章編號:1672-3791(2015)08(a)-0122-02
操作系統(tǒng)是當(dāng)代計算機軟件系統(tǒng)的核心,是計算機系統(tǒng)中的核心和基石,它管理和控制著計算機系統(tǒng)中的軟、硬件資源高效工作,可以說操作系統(tǒng)是計算機系統(tǒng)的靈魂。操作系統(tǒng)課程主要學(xué)習(xí)操作系統(tǒng)的工作原理和工作方式,是計算機專業(yè)的核心課程, 也是進行系統(tǒng)軟件開發(fā)的理論基礎(chǔ)。
在“計算機操作系統(tǒng)原理”課程中,以操作系統(tǒng)的進程管理、處理機管理、內(nèi)存管理、文件管理和設(shè)備管理作為主線進行組織。其中操作系統(tǒng)的進程管理,是現(xiàn)代操作系統(tǒng)的重要功能,也是之后處理機管理、內(nèi)存管理等章節(jié)的基礎(chǔ),同時更是后續(xù)并行計算等重要課程的前提。并發(fā)系統(tǒng)中諸進程由于資源共享、進程合作,而產(chǎn)生進程之間的相互制約,操作系統(tǒng)為了提高系統(tǒng)資源的利用率,保證運行結(jié)果的可再現(xiàn)性,采用了信號量機制。因此,對于信號量機制的理解是學(xué)習(xí)進程管理中的關(guān)鍵。為了幫助學(xué)生對信號量機制的必要性和先進性的理解和掌握,在教學(xué)中采用對比分析的啟發(fā)式教學(xué),對加鎖法進行了條分縷析,將加鎖法和信號量法進行了深入對比,取得了良好效果。
下面給出關(guān)于加鎖法的啟發(fā)式教學(xué)中的關(guān)鍵問題的解決過程。
1 加鎖法啟發(fā)式教學(xué)
1.1 概念準(zhǔn)備
加鎖法的定義:對臨界區(qū)加鎖以實現(xiàn)互斥,在使用之前為了防止別的進程進入,設(shè)置關(guān)鎖;若使用完后退出臨界區(qū)時,設(shè)置開鎖,這樣其他用戶就可以使用了。
加鎖法引入的時機:給出時間相關(guān)的錯誤和臨界區(qū)這兩種概念,以及臨界區(qū)使用的四個基本準(zhǔn)則之后。
1.2 時間相關(guān)的錯誤
問題提出:在表1中存在P1和P2兩個進程。P1和P2分別在t1和t2時刻獲得CPU并測試鎖,t3和t4時刻P1和P2設(shè)置鎖。表1說明加鎖法可能導(dǎo)致兩個進程P1和P2同時進入臨界區(qū)。該表格說明了,加鎖方法沒能保證臨界區(qū)使用中“忙則等待”的這條準(zhǔn)則。
啟發(fā)式提問:為什么會造成這種情況?
啟發(fā)式思考:測試和設(shè)置的過程不是原子過程,中間可以被其他進程打斷。
啟發(fā)式解決方案:測試與設(shè)置指令TS(test and set),其讀寫操作由一條指令完成,因而保證讀操作與寫操作不被打斷。
1.3 不公平問題
問題提出:表2中進程P1在t0時刻進入臨界區(qū),t1時刻退出臨界區(qū),t2時刻再次進入臨界區(qū),而進程P2在t2時刻沒有獲得CPU,無法正確判斷臨界區(qū)的狀態(tài),從而不能進入臨界區(qū)。表2說明加鎖法可能導(dǎo)致進程P2一直無法獲得臨界區(qū),處于饑餓狀態(tài)。違反了臨界區(qū)使用原則中的“等則有限”的原則。
啟發(fā)性提問:引起不公平現(xiàn)象的原因是什么?
啟發(fā)式思考:因為每個進程能否進入臨界區(qū)依靠自己的測試判斷,進程調(diào)用lock過程去測試相應(yīng)的鎖定位,沒有獲得執(zhí)行機會的進程無法(正確地)判斷,因此出現(xiàn)不公平現(xiàn)象。
啟發(fā)式解決方案:由一個更高權(quán)限的進程來進行資源的測試和分配。
1.4 效率問題
問題提出:對于加鎖方法,循環(huán)測試鎖定位將損耗較多的CPU計算時間,如果一組并發(fā)進程的進程數(shù)較多,且由于每個進程在申請進入臨界區(qū)時都得對鎖定位進行測試,這種系統(tǒng)資源的開銷很大。
啟發(fā)式思考:如何將CPU從循環(huán)測試中解放出來。
啟發(fā)式解決方案:參考火車調(diào)度中的信號機制。
1.5 表示能力問題
問題提出:加鎖方法能表示幾種狀態(tài)?如何表示有多少個進程在等待該資源?在“開”鎖之后如何調(diào)度這些等待進程?
啟發(fā)式思考:如果表示多種狀態(tài)?
啟發(fā)式解決方案:參考圖書館中預(yù)約圖書的算法。
2 結(jié)語
在教學(xué)中,結(jié)合圖表通過對加鎖法中以上幾個關(guān)鍵問題進行深入分析,對于每一個關(guān)鍵問題都首先給出了現(xiàn)象,結(jié)合臨界區(qū)的使用準(zhǔn)則提出在加鎖法可能存在的問題,啟發(fā)學(xué)生思考并給出解決方案。在這個過程中,學(xué)生們理解了由進程自身來完成加鎖和解鎖,是一種看上去直觀簡單,但是在實現(xiàn)中由于效率、表示能力以及并發(fā)環(huán)境下間斷性和失去具有封閉性等原因,而不可行的方法。進一步,引導(dǎo)學(xué)生參考生活中常見的管理算法,設(shè)計一種更合理、更有效的進程互斥和同步的管理機制。這為之后信號量機制的學(xué)習(xí)奠定了良好的基礎(chǔ)。
參考文獻
[1] 劉洪波,張儉鴿.啟發(fā)式教學(xué)在操作系統(tǒng)教學(xué)中的應(yīng)用[J].時代教育,2011(9):199.
[2] 李景峰,劉偉,郝耀輝,周會娟。操作系統(tǒng)課程的啟發(fā)式教學(xué)研究與探討[J].計算機教育,2010(8):87-90.
[3] 馮麗萍,焦莉娟.基于啟發(fā)式的“操作系統(tǒng)”課程教學(xué)改革探討[J].福建電腦,2015(5):202.
[4] 時華.”啟發(fā)式教學(xué)”在計算機操作系統(tǒng)中的應(yīng)用[J].科技信息,2009(29),512.
[5] 李華,高文宇.計算機操作系統(tǒng)啟發(fā)式教學(xué)研究[J].計算機教育,2013(3):62-65.
[6] 帖軍,張寶哲.以負載均衡和數(shù)據(jù)緩存為例談操作系統(tǒng)啟發(fā)式教學(xué)[J].現(xiàn)代計算機(專業(yè)版),2011(30):18-20.