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