張霞 谷淑化 張求明
摘 要:操作系統(tǒng)是信息相關(guān)專業(yè)的重要的核心課程之一。處理機管理部分是操作系統(tǒng)課程中的重中之重,處理機管理主要歸結(jié)為對進程的管理。而進程同步問題是進程管理中的重要部分。一直以來,進程同步問題都是操作系統(tǒng)教學(xué)中的重點和難點。該文針對合作進程的執(zhí)行順序類進程同步問題探討操作系統(tǒng)課程的教學(xué)方法,總結(jié)教師在教學(xué)實踐當中的寶貴經(jīng)驗,旨在提高學(xué)生對用信號燈機制解決進程同步問題的理解和掌握。
關(guān)鍵詞:操作系統(tǒng);進程同步;合作進程的執(zhí)行順序;信號燈;P操作;V操作
中圖分類號:TP316 文獻標識碼:A 文章編號:1009-3044(2015)09-0183-02
1引言
操作系統(tǒng)作為信息類相關(guān)專業(yè)的核心課程,課程內(nèi)容龐雜、涉及面廣、知識點多、實踐性強,概念多而抽象,不容易理解。學(xué)生很難掌握一些重要知識點。因此需要加強重要知識點的教學(xué)方法研究,以提高教學(xué)質(zhì)量。
進程同步是操作系統(tǒng)課程中處理機管理的核心問題之一,是操作系統(tǒng)的核心知識點,是教學(xué)過程中的重點和難點,也是考研的重點考核內(nèi)容,因此學(xué)生能否很好地理解并掌握這部分內(nèi)容是影響教學(xué)效果的關(guān)鍵。
在多年的操作系統(tǒng)課程的教學(xué)實踐中,信號燈和P、V操作問題一直是困擾老師和學(xué)生的一個難點。概念很容易講,老師很清楚如何去解決,但如何讓學(xué)生很輕松容易地去理解和解決類似的問題,這是操作系統(tǒng)教學(xué)和學(xué)習(xí)過程中的一個難點。
本文針對進程同步問題探討操作系統(tǒng)課程的教學(xué)方法,總結(jié)教學(xué)實踐中的寶貴經(jīng)驗,旨在提高學(xué)生對用信號燈機制實現(xiàn)進程同步問題的理解和把握。
2 進程同步的基本概念
2.1 進程同步
所謂進程同步就是并發(fā)進程在一些關(guān)鍵點上可能需要相互等待與互通消息,這樣的相互制約關(guān)系稱為進程同步。同步意味著兩個或多個進程之間根據(jù)它們一致同意的協(xié)議進行相互作用。
2.2 進程同步的基本類型
在操作系統(tǒng)中,有各種各樣進程同步,按特點不同一般可將同步問題分為兩類:
(1)各進程合作完成某工作的邏輯順序;
(2)對系統(tǒng)資源的共享的合作進程的同步。
本文主要講解第一類進程同步問題的解決方法。
3 信號燈的基本概念
信號燈的概念是由荷蘭人Dijkstra于1968年提出的,這個時期正是操作系統(tǒng)形成的活躍時期。
他把互斥的關(guān)鍵概念抽象到信號燈這個概念中。信號燈是一個被保護的變量,只有P操作、V操作和一種稱為信號燈初始化操作才能訪問和改變它的值。信號燈是一個確定的二元組(s,q),s 是一個具有非負初值的整型變量,q是一個初始狀態(tài)為空的排隊站。創(chuàng)建信號燈時,應(yīng)準確說明信號燈 s的意義和初值 (這個初值絕不能為負值)。每個信號燈都有一個隊列,其初始狀態(tài)為空。
P操作:提出申請,檢測所需信號是否到達,有可能使一個進程轉(zhuǎn)到等待狀態(tài)。
(1)s值減1;
(2)若相減結(jié)果大于等于0,則進程繼續(xù)執(zhí)行;
(3)若結(jié)果小于0,則該進程掛起。
V操作:釋放信號,有可能要去喚醒一個處于等待狀態(tài)的進程。
(1)s值加1;
(2)若相加結(jié)果大于0,進程繼續(xù)執(zhí)行;
(3)否則,喚醒一個(或多個)等待該信號燈的進程,然后本進程繼續(xù)執(zhí)行。
4 用信號燈解決進程同步的方法
4.1 分析進程同步關(guān)系
前趨圖是一種有向無環(huán)圖,可以很好地描述各進程在關(guān)鍵點上的同步關(guān)系。每個進程在前趨圖中都跟其它進程有相互聯(lián)系,有其直接前趨、直接后繼。如圖1所示P3的直接前趨是P1和P2,P3進程必須在P1和P2進程執(zhí)行完畢才能開始執(zhí)行,否則轉(zhuǎn)等待;P3的直接后繼是P4,也就是說P4進程的直接前趨是P3進程,P4進程必須在P3進程執(zhí)行完畢才能開始執(zhí)行,否則轉(zhuǎn)等待。
4.2 信號燈的設(shè)置
在前趨圖的每一條弧上分別設(shè)置一個信號燈,分別代表前一個進程沒有完成,后面一個進程就不能開始。
4.3 信號燈值的設(shè)置
合作進程必有開始和結(jié)束,前面的未結(jié)束后面的就不能開始,所以每個信號燈的值都設(shè)置為0。
4.4 程序描述
主程序如下:
main()
{
定義若干初值為0的信號燈;
cobegin
P1();
P2();
P3();
……
Pi();
……
coend
}
各進程的程序描述:
對于前趨圖中的任意進程Pi(i=1……n),我們可以分離出進程結(jié)點以及與之相關(guān)聯(lián)的所有關(guān)系如圖2所示,其中:
結(jié)點Pi表示Pi進程本身要完成的主要工作;
箭頭指向結(jié)點Pi的弧表示Pi結(jié)點有限定它運行的直接前趨,弧上的信號燈是Pi前趨結(jié)點完成后應(yīng)該發(fā)送給Pi進程的完成信號;
箭頭從結(jié)點Pi引出的弧表示Pi結(jié)點有它限定運行的直接后繼,弧上的信號燈是Pi結(jié)點完成后應(yīng)該發(fā)送給Pi后繼進程的完成信號。
程序描述如下:
Pi()
{
P(sa1);......P(sam); /*依次檢查Pi的直接前趨是否執(zhí)行完畢,若沒有,則等待在相應(yīng)信號燈的隊列上。如果Pi進程沒有直接前趨,則此處沒有P操作*/
Pi進程要完成的主要工作;
V(sb1);......V(sbn); /*依次向Pi的后繼進程發(fā)送完成信號。如果Pi進程沒有直接后繼,則此處沒有V操作*/
}
5 信號燈在解決進程同步之合作進程的執(zhí)行順序問題中的具體應(yīng)用
問題描述:P1、P2、P3、P4進程的同步關(guān)系如圖1所示。
5.1 分析同步關(guān)系
前趨圖關(guān)系顯示P3進程必須在P1和P2進程執(zhí)行完畢才能開始執(zhí)行,否則轉(zhuǎn)等待;P4進程必須在P3進程執(zhí)行完畢才能開始執(zhí)行,否則轉(zhuǎn)等待。
5.2 信號燈設(shè)置
每條弧上分別設(shè)置一個信號燈如圖3,s13是表示P1完成后通知P3進程開始的信號燈;s23是表示P2完成后通知P3進程開始的信號燈;s34是表示P3完成后通知P4進程開始的信號燈。
5.3 信號燈初值設(shè)置
所有信號燈初值為0。
5.4 程序描述
主程序:
main()
{
int s13=0;
int s23=0;
int s34=0;
cobegin
P1();
P2();
P3();
P4();
coend
}
各進程的程序描述:
對于前趨圖中的任意進程P1、P2、P3、P4,我們可以分離出進程結(jié)點以及與之相關(guān)的所有關(guān)系如圖4所示。各進程對應(yīng)的程序描述如下:
6 結(jié)束語
信號燈機制是操作系統(tǒng)中實現(xiàn)并發(fā)進程執(zhí)行的有效方法。用信號燈機制可以有效地解決進程同步與互斥問題,但這一知識點的理解和掌握并不容易。
本文著重介紹了在操作系統(tǒng)課程的教學(xué)過程中的一種很好的教學(xué)方法。應(yīng)用一種公式法則來講解用信號燈機制解決進程同步之合作進程的執(zhí)行順序類問題這一核心知識點,學(xué)生普遍感覺利用這種求解思路和求解方法能夠比較容易和熟練地解決這類問題,反映良好。
參考文獻:
[1] 龐麗萍.操作系統(tǒng)原理(第四版)[M].武漢.華中科技大學(xué)出版社,2008 .
[2] 龐麗萍,陽富民.計算機操作系統(tǒng)(第2版)[M].北京.人民郵電出版社,2014 .
[3] 汪國安,等.計算機操作系統(tǒng)課程及考研輔導(dǎo)[M].北京.機械工業(yè)出版社,2004.
[4] 曾平,李春葆.操作系統(tǒng)——習(xí)題與解析[M].北京.清華大學(xué)出版社,2001.
[5] 曾平,曾林.操作系統(tǒng)習(xí)題與解析(第2版)[M].北京.清華大學(xué)出版社,2004.