?

操作系統進程同步和互斥教學方法研究

2017-12-02 11:26羅嬌敏
教育教學論壇 2017年44期
關鍵詞:信號量同步進程

羅嬌敏

摘要:操作系統課程內容涵蓋計算機各類資源的管理,其中進程管理部分的同步和互斥是重點難點,學生很難掌握。該文通過引入生活實例,采用類比和啟發式教學方法,有助于理解和掌握信號量機制的應用,而且能提高學生分析問題和解決問題的能力。

關鍵詞:進程;同步;互斥;信號量

中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2017)44-0255-02

一、引言

操作系統課程是計算機及相關專業學生的必修主干核心課程。作為一門原理性課程,其內容龐雜,涉及面廣,概念多,理論性強,比較枯燥,而且很多概念和算法相當抽象[1]。尤其是進程管理中進程同步和互斥部分的內容,進程本身就是一個抽象概念,研究進程的并發執行控制的問題就更難理解。但該課程也有其特殊之處,學生每天都在接觸操作系統,操作系統是人設計出來的,其中很多資源管理的方法又來源于我們日常生活對于事情的處理,所以如果能在授課過程中巧妙跟日常生活中的實例結合起來,通過類比和啟發式教學方法調動學生學習積極性,學生就能自主將抽象的內容形象化,輕松愉快地理解問題掌握知識[2]。

二、教學思路

操作系統學習除了讓學生掌握其原理外更重要的是培養學生運用計算機思維來解決問題的能力,而類比和啟發式教學能很好地實現這個目標[3]。類比和啟發式教學是指教師根據教學目標,遵循教學規律,在教學過程中依據學習過程的客觀規律,引入具備相似特點的實例,通過引導、指導、開導、啟示,激發學生的學習興趣,使學生能主動、自覺、積極地思考和學習,并主動實踐的一種教學方法。該方法在應用時首先應該明確該知識點要解決的問題,確認教學目標;接著選擇日常生活中與該問題有共通點的情境,并提出思考性問題;然后引導學生對生活中類似的情境思考和尋找解決問題的方案,之后啟發學生運用思考出的方案思路解決操作系統中的問題,最后進行反饋和總結。該教學法的“啟”體現的是教師的主導導向地位,“發”體現的是學生在教學中自主的認知方法。下面以信號量為例進行闡述。

三、信號量機制

進程同步和互斥是多進程并發執行時兩種典型制約關系,用于解決并發執行的進程之間的運行協調問題。信號量機制是操作系統中一種有效的進程同步機制。對于信號量這個名詞,首先引導學生對于信號量的聯想。講到信號量,很多學生會脫口而出提到紅綠燈,實際上進程同步中信號量就相當于交通系統中的紅綠燈。紅綠燈是通過信號燈的顏色變化來控制各個方向上車輛的走走停停,也就是我們耳熟能詳的“紅燈停,綠燈行”。如果用計算機能識別的兩個數0和1分別對應紅燈和綠燈,紅綠燈就是通過一個數值的變化來控制車輛運行,而信號量就是通過數值的變化來控制進程的運行。接下來對于操作系統進程同步的信號量機制就很好理解:把車輛看成計算機系統中運行的進程,紅綠燈機制就是進程并發執行的信號量機制。這里的信號量實際是一個整形的變量S,操作系統就是通過該S的值的變化來控制進程運行的走走停停。變量S的值的變化可以通過三個操作完成:初始化、P操作和V操作。P操作使變量值減1,如果此時值小于0,則表明沒有可用資源,進程必須等待,所以P操作相當于申請一個資源;反之V操作使變量值加1,此時如果值小于等于0,則表明有進程正在等待該資源的使用,需要喚醒等待隊列里的第一個進程,所以V操作相當于釋放一個資源。用信號量進行進程同步和互斥控制,就是在程序合適的地方添加PV操作,使進程按照需要的順序運行或使用資源。

四、信號量控制進程互斥

進程互斥是由于共享資源引起的一種間接制約關系,解決的是進程互斥使用臨界資源的問題。根據這個特點,可以引導學生列舉日常生活中需要互斥共享資源的實例,而這種實例比比皆是。比如餐具的使用、教室的使用、教學樓洗手間的使用等。接下來就以教學樓洗手間使用為例講解互斥控制過程:對于洗手間每個位置一段時間只允許一個人使用,每個人在進去前都應該先敲門,如果有人正在使用就要等待,沒人就推門進去,同時把門鎖起來;接下來可以安心使用這個資源,整個過程因為門是鎖好的不可能有其他人進來打擾;使用完成后把門打開離開,讓后面的人能繼續使用該資源。在這個例子中,洗手間就是一種典型的臨界資源,一次只允許一個人使用,洗手間的使用過程也正好說明了對臨界資源使用的控制。所有進程在使用臨界資源之前都應該先申請,根據資源狀態進行相應操作:資源如果已經被使用,申請進程就應該等待;資源如果空閑申請進程就可以使用,同時要置資源狀態為忙碌;使用完成后釋放資源,以便其他的進程能夠繼續使用。根據該流程,一般把臨界資源的使用分成三段:進入區、臨界區和退出區。設置一個信號量S來代表該類資源,進入區就是申請資源,即P(S);退出區相當于釋放,即V(S)。信號量對于進程互斥控制的模型就可以歸納如下:多個進程對臨界資源進行互斥使用時,設置一個信號量S初始值置為1,每個進程使用資源前先執行P(S),使用以后執行V(S)。即:Pi(){P(S);code;V(S)}。

五、信號量控制進程同步

進程同步是由進程相互合作引起的,解決的是進程相互合作過程中執行的時序控制問題。運動會上4×100米接力就是典型的需要相互合作完成比賽的例子:四個選手跑步按照嚴格的先后順序進行,前一個選手的接力棒傳給后一個選手時后一個選手才可以起跑。在這個過程中接力棒實際上就是兩個選手合作的信號量,前一個選手到達目的地后交出接力棒相當于釋放資源,后一個選手起跑之前要取得接力棒相當于申請資源。以前兩個選手起跑為例,第一個選手聽到槍響就起跑,完成賽程后把接力棒遞交給第二個選手,第二個選手才可以起跑。把這兩個選手看作兩個進程P1和P2,P1一定要先于P2執行,根據上述分析可以設置一個信號量S用來表示P2是否可以執行,s的初始值為0,P1執行完以后V(S),P2執行之前P(S)。由于信號量的初始值為0,如果第二個選手在第一個選手沒有到達的情況下想起跑,會因為執行P(S)后s<0而阻塞,只有當第一個選手到達執行V(S)后才能被喚醒執行,從而達到控制選手跑步順序的目的。綜上,我們總結出信號量進行進程同步控制的模型如下:兩個并發進程P1和P2,P1要先于P2執行,則可設置一個信號量Semaphore s,s初始值為0,其同步控制程序如下:p1(){code1;V(s) } ; p2(){P(s); code2}。

六、結束語

進程同步和互斥是操作系統課程中的重點難點,通過與生活中具體的實例結合起來,運用啟發和類比的方法,讓學生能生動理解其中的控制過程,對于知識點的掌握更容易。實踐證明,該教學法使學生感到親切且易于思考,教學效果明顯提高。

參考文獻:

[1]湯子瀛,哲鳳屏,湯小丹.計算機操作系統[M].西安:西安電子科技大學出版社,2001.

[2]韋婷.啟發式教學在操作系統課程中的應用[J].電腦知識與技術,2011,7(13):3223-3224.

[3]金雪云.啟發式教學法在計算機操作系統課程教學中應用的研究[J].全國計算機新科技與計算機教育學術大會,2010.endprint

猜你喜歡
信號量同步進程
基于STM32的mbedOS信號量調度機制剖析
債券市場對外開放的進程與展望
Nucleus PLUS操作系統信號量機制的研究與測試
素質教育理念下藝術教育改革的思路
政府職能的轉變與中國經濟結構調整的同步
社會進程中的新聞學探尋
我國高等教育改革進程與反思
μC/OS- -III對信號量的改進
Linux操作系統信號量機制的實時化改造
Linux僵死進程的產生與避免
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合