?

操作系統進程互斥與同步教學難點突破

2016-04-14 14:13崔松健
電腦知識與技術 2016年5期
關鍵詞:信號量原語預賽

崔松健

摘要:該文通過一個小型運動會實例,通過類比方法讓學生理解并掌握操作系統中與進程相關的概念,以及如何使用信號量實現進步的同步與互斥。

關鍵詞:操作系統;計算機教學

中圖分類號:TP3 文獻標識碼:A 文章編號:1009-3044(2016)05-0118-02

1 序言

操作系統是計算機專業的核心課程,操作系統的教學主要是讓學生理解并掌握操作系統的功能及實現原理,理論性很強,知識點多,教學難度大,學生不易掌握,特別是對于高職院校的學生。為了讓學生能很好地學習操作系統的理論知識,老師們進行的了很多的探討與教學嘗試,下面就將我多年來在操作系統教中,對進程同步與互斥這個教學難點的教學方法作一個簡單的論述。

2 相關概念的突破

教學時以小型體育運動會實例來解釋相關的概念。

實例描述:一個在半天內完成的小型體育運動會。比賽項目有:100米,200米,4*100米接力。而這三個項目又分為預賽和決賽兩個階段進行,預賽先于決賽進行。因此總的比賽項目有:100米預賽,200米預賽,4*100米接力預賽,100米決賽,200米決賽,4*100米接力決賽六個子項目。因為運動場地只有一塊,所以某一時刻只能有一項體育比賽可以進行。某項比賽一旦開始,就必須全部比賽完成,但不同的比賽可以穿插進行。

下面通過類比的方法解釋與進程相關的概念。

1)進程:具有一定獨立功能的程序關于某個數據集合上的一次運行活動。

因為每一個項目都是可以獨立進行的,所以可以將每一個項目看成是一個具有獨立功能的程序,而將每一項比賽看成是每一個項目在裁判、計時員等支持下的一次獨立運行活動。因此六個項目的比賽過程可以看成六個進程的運行。

2)并發:同一個時間段內幾個進程都處于已經開始運行和運行完畢之間,且這幾個進程都是在同一個處理機上運行,但在任一時刻,只能有一個進程在處理機上運行。我們就說這幾個進程處于并發狀態。

運動會的三個項目是交替進行的,我們認為這三個項目都處于進行當中,因為他們都沒有結束。這種狀態就稱之為并發狀態。因為運動場地只有一個,所以同一時刻只能有一個項目在進行當中,我們就說比賽并行為1,若有兩個場地可以同時比賽,我們就說并行為2。

3)臨界資源:操作系統把一次僅允許一個進程使用的資源稱為臨界資源。

由于競賽場地某一時刻只能進行一場比賽,所以場地是臨界資源。

4)臨界區:一個進程中訪問臨界資源的那段程序。

由于每場比賽都要使用場地,因此每場比賽都是臨界區。

5)互斥:是指多個進程不能同時使用同一個資源。

由于比賽場地只能輪流使用而不能同時使用,所以使用場地的過程就稱為互斥過程。

6)同步:指多個進程之間存在著某種時序關系,必須協同動作、相互配合。

4*100接力比賽是4個人協同完成的,每人跑一棒,而且是第一棒跑完才能跑第二棒,第二棒跑完才能跑第三棒,第三棒跑完才能跑第四棒。這種有嚴格時序關系的協同過程就稱為同步,四個人之間的先后關系就是同步關系。

運動場地是一個封閉的空間,入口有一道門,要想進入運動場,必須獲得打開門的鑰匙,而鑰匙只有一把,所以一開始時的Value的初值為1,獲得鑰匙的運動項目可以進入運動場比賽,而沒有獲得鑰匙的運動項目則在門外排隊等待。

8)原語:通常由若干條指令組成,用來實現某個特定的操作。通過一段不可分割的或不可中斷的程序實現其功能。

信號量只能通過P原語和V原語訪問。

P操作用于申請資源,value值減1,如果資源數量不夠,則進程需要阻塞等待。

V操作用于釋放資源, value值加1,如果此時value<0,表示有其他進程等待該資源,則喚醒。

當value<0時,| value|表示等待隊列的進程數。

拿到鑰匙,打開門,進入場地這三個動作必須一次性完成,中間不可以被中止,這就是原語操作。

3 進程互斥的實現

由于運動場地是臨界資源,所以哪一個項目可以使用運動場地進行比賽是需要競爭的,那么如何保證進入運動場比賽的項目只能是一個呢?我們使用信號量來控制互斥地使用運動場地。

信號量就是一把鑰匙,而且鑰匙只有一把,因此設信號量S的初值為1。

由于100米預賽,200米預賽和4*100接力預賽是可以并發進行的,因此,我們設計三個并發程序控制使用運動場地進行比賽(臨界區)。而哪個項目能夠進行(進入臨界區),就看哪個項目獲得了運動場地(臨界資源)的使用權,而對使用權的控制就是看誰能夠進入運動場地,最終則是誰能獲得入門的鑰匙(信號量),因此只要控制住鑰匙,就能實現互斥進入。

結論:使用信號量實現互斥的方法是在臨界區前放置一個P原語操作,臨界區后面放置一個V原語操作。含義為:P原語申請鑰匙,如果成功則獲得資源(運動場地),進行比賽,比賽結束后,V原語操作,交出鑰匙(信號量),喚醒等待比賽的項目。

4 進程同步的實現

進程之間的關系除了競爭關系以外,可能還存在時間上的制約關系,這種關系就是同步關系。比如運動會中,運動項目之間就存在時序上的先后關系,100米預賽必須先于100米決賽之前進行,而200米決賽則不能早于200米預賽之前進行。4*100米接力賽中的四個人之間也存在著先后關系。那么如何通過信號量來實現這個同步關系呢?

我們以100米預賽和100米決賽之間的時序關系為例說明如何實現同步。

100米預賽和100米決賽為兩個并發程序,100米預賽早于100米決賽進行。則可以將它們之間的時序關系通過有向圖來表示,圖1說明了100米預賽先于100米決賽進行。

}

說明:由于信號量初值為0,因此只有當【100米預賽】并發程序執行結束以后,s的值才能為1,也只有當s的值為1后,【100米決賽】并發程序才能夠執行,從而實現了兩個并發程序之間的時序關系。

綜上所述,我們總結出進程同步中并發程序的書寫規則:

1)將問題中的所有有時序關系的并發程序找出,用有向圖畫出他們之間的時序關系;

2)有向圖中有幾個結點,則寫幾個并發程序;

3)有向圖中有幾個有向箭頭,則設置幾個信號量,同時將所有信號量的初值設為0;

4)對于有向圖中的每個結點,如果有一個出向箭頭,則在并發程序的后面加一個V操作;

5)對于有向圖中的每個結點,如果有一個入向箭頭,則在并發程序的前面加一個P操作。

舉例說明:如圖2所示的有向圖,請寫出所有進程的并發程序。

}

5 結論

通過以上的方法,學生很容易掌握和理解操作系統進程的概念,進程之間有關系,以及如何使用信號量來實現進程之間的互斥與同步。

猜你喜歡
信號量原語預賽
測試原語:存儲器故障最小檢測序列的統一特征
基于STM32的mbedOS信號量調度機制剖析
一道四川省預賽題的探究
2018瑞士數學奧林匹克(預賽)
Nucleus PLUS操作系統信號量機制的研究與測試
第九屆陳省身杯全國高中數學奧林匹克預賽
密碼消息原語通信協議介紹及安全分析
基于原語自動生成的安全協議組合設計策略及應用研究
μC/OS- -III對信號量的改進
Linux操作系統信號量機制的實時化改造
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合