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