羅嬌敏
摘要:操作系統(tǒng)課程內容涵蓋計算機各類資源的管理,其中進程管理部分的同步和互斥是重點難點,學生很難掌握。該文通過引入生活實例,采用類比和啟發(fā)式教學方法,有助于理解和掌握信號量機制的應用,而且能提高學生分析問題和解決問題的能力。
關鍵詞:進程;同步;互斥;信號量
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2017)44-0255-02
一、引言
操作系統(tǒng)課程是計算機及相關專業(yè)學生的必修主干核心課程。作為一門原理性課程,其內容龐雜,涉及面廣,概念多,理論性強,比較枯燥,而且很多概念和算法相當抽象[1]。尤其是進程管理中進程同步和互斥部分的內容,進程本身就是一個抽象概念,研究進程的并發(fā)執(zhí)行控制的問題就更難理解。但該課程也有其特殊之處,學生每天都在接觸操作系統(tǒng),操作系統(tǒng)是人設計出來的,其中很多資源管理的方法又來源于我們日常生活對于事情的處理,所以如果能在授課過程中巧妙跟日常生活中的實例結合起來,通過類比和啟發(fā)式教學方法調動學生學習積極性,學生就能自主將抽象的內容形象化,輕松愉快地理解問題掌握知識[2]。
二、教學思路
操作系統(tǒng)學習除了讓學生掌握其原理外更重要的是培養(yǎng)學生運用計算機思維來解決問題的能力,而類比和啟發(fā)式教學能很好地實現(xiàn)這個目標[3]。類比和啟發(fā)式教學是指教師根據(jù)教學目標,遵循教學規(guī)律,在教學過程中依據(jù)學習過程的客觀規(guī)律,引入具備相似特點的實例,通過引導、指導、開導、啟示,激發(fā)學生的學習興趣,使學生能主動、自覺、積極地思考和學習,并主動實踐的一種教學方法。該方法在應用時首先應該明確該知識點要解決的問題,確認教學目標;接著選擇日常生活中與該問題有共通點的情境,并提出思考性問題;然后引導學生對生活中類似的情境思考和尋找解決問題的方案,之后啟發(fā)學生運用思考出的方案思路解決操作系統(tǒng)中的問題,最后進行反饋和總結。該教學法的“啟”體現(xiàn)的是教師的主導導向地位,“發(fā)”體現(xiàn)的是學生在教學中自主的認知方法。下面以信號量為例進行闡述。
三、信號量機制
進程同步和互斥是多進程并發(fā)執(zhí)行時兩種典型制約關系,用于解決并發(fā)執(zhí)行的進程之間的運行協(xié)調問題。信號量機制是操作系統(tǒng)中一種有效的進程同步機制。對于信號量這個名詞,首先引導學生對于信號量的聯(lián)想。講到信號量,很多學生會脫口而出提到紅綠燈,實際上進程同步中信號量就相當于交通系統(tǒng)中的紅綠燈。紅綠燈是通過信號燈的顏色變化來控制各個方向上車輛的走走停停,也就是我們耳熟能詳?shù)摹凹t燈停,綠燈行”。如果用計算機能識別的兩個數(shù)0和1分別對應紅燈和綠燈,紅綠燈就是通過一個數(shù)值的變化來控制車輛運行,而信號量就是通過數(shù)值的變化來控制進程的運行。接下來對于操作系統(tǒng)進程同步的信號量機制就很好理解:把車輛看成計算機系統(tǒng)中運行的進程,紅綠燈機制就是進程并發(fā)執(zhí)行的信號量機制。這里的信號量實際是一個整形的變量S,操作系統(tǒng)就是通過該S的值的變化來控制進程運行的走走停停。變量S的值的變化可以通過三個操作完成:初始化、P操作和V操作。P操作使變量值減1,如果此時值小于0,則表明沒有可用資源,進程必須等待,所以P操作相當于申請一個資源;反之V操作使變量值加1,此時如果值小于等于0,則表明有進程正在等待該資源的使用,需要喚醒等待隊列里的第一個進程,所以V操作相當于釋放一個資源。用信號量進行進程同步和互斥控制,就是在程序合適的地方添加PV操作,使進程按照需要的順序運行或使用資源。
四、信號量控制進程互斥
進程互斥是由于共享資源引起的一種間接制約關系,解決的是進程互斥使用臨界資源的問題。根據(jù)這個特點,可以引導學生列舉日常生活中需要互斥共享資源的實例,而這種實例比比皆是。比如餐具的使用、教室的使用、教學樓洗手間的使用等。接下來就以教學樓洗手間使用為例講解互斥控制過程:對于洗手間每個位置一段時間只允許一個人使用,每個人在進去前都應該先敲門,如果有人正在使用就要等待,沒人就推門進去,同時把門鎖起來;接下來可以安心使用這個資源,整個過程因為門是鎖好的不可能有其他人進來打擾;使用完成后把門打開離開,讓后面的人能繼續(xù)使用該資源。在這個例子中,洗手間就是一種典型的臨界資源,一次只允許一個人使用,洗手間的使用過程也正好說明了對臨界資源使用的控制。所有進程在使用臨界資源之前都應該先申請,根據(jù)資源狀態(tài)進行相應操作:資源如果已經被使用,申請進程就應該等待;資源如果空閑申請進程就可以使用,同時要置資源狀態(tài)為忙碌;使用完成后釋放資源,以便其他的進程能夠繼續(xù)使用。根據(jù)該流程,一般把臨界資源的使用分成三段:進入?yún)^(qū)、臨界區(qū)和退出區(qū)。設置一個信號量S來代表該類資源,進入?yún)^(qū)就是申請資源,即P(S);退出區(qū)相當于釋放,即V(S)。信號量對于進程互斥控制的模型就可以歸納如下:多個進程對臨界資源進行互斥使用時,設置一個信號量S初始值置為1,每個進程使用資源前先執(zhí)行P(S),使用以后執(zhí)行V(S)。即:Pi(){P(S);code;V(S)}。
五、信號量控制進程同步
進程同步是由進程相互合作引起的,解決的是進程相互合作過程中執(zhí)行的時序控制問題。運動會上4×100米接力就是典型的需要相互合作完成比賽的例子:四個選手跑步按照嚴格的先后順序進行,前一個選手的接力棒傳給后一個選手時后一個選手才可以起跑。在這個過程中接力棒實際上就是兩個選手合作的信號量,前一個選手到達目的地后交出接力棒相當于釋放資源,后一個選手起跑之前要取得接力棒相當于申請資源。以前兩個選手起跑為例,第一個選手聽到槍響就起跑,完成賽程后把接力棒遞交給第二個選手,第二個選手才可以起跑。把這兩個選手看作兩個進程P1和P2,P1一定要先于P2執(zhí)行,根據(jù)上述分析可以設置一個信號量S用來表示P2是否可以執(zhí)行,s的初始值為0,P1執(zhí)行完以后V(S),P2執(zhí)行之前P(S)。由于信號量的初始值為0,如果第二個選手在第一個選手沒有到達的情況下想起跑,會因為執(zhí)行P(S)后s<0而阻塞,只有當?shù)谝粋€選手到達執(zhí)行V(S)后才能被喚醒執(zhí)行,從而達到控制選手跑步順序的目的。綜上,我們總結出信號量進行進程同步控制的模型如下:兩個并發(fā)進程P1和P2,P1要先于P2執(zhí)行,則可設置一個信號量Semaphore s,s初始值為0,其同步控制程序如下:p1(){code1;V(s) } ; p2(){P(s); code2}。
六、結束語
進程同步和互斥是操作系統(tǒng)課程中的重點難點,通過與生活中具體的實例結合起來,運用啟發(fā)和類比的方法,讓學生能生動理解其中的控制過程,對于知識點的掌握更容易。實踐證明,該教學法使學生感到親切且易于思考,教學效果明顯提高。
參考文獻:
[1]湯子瀛,哲鳳屏,湯小丹.計算機操作系統(tǒng)[M].西安:西安電子科技大學出版社,2001.
[2]韋婷.啟發(fā)式教學在操作系統(tǒng)課程中的應用[J].電腦知識與技術,2011,7(13):3223-3224.
[3]金雪云.啟發(fā)式教學法在計算機操作系統(tǒng)課程教學中應用的研究[J].全國計算機新科技與計算機教育學術大會,2010.endprint