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