摘 要:操作系統(tǒng)是計算機學科的一門核心課程,但該課程的理論性較強、抽象枯燥的知識點使得學生很難把握。本文運用對比法對操作系統(tǒng)中具有代表性的進程同步進行分析,并總結解決進程同步問題的一般方法。
關鍵詞:操作系統(tǒng);對比法;進程同步
中圖分類號:TP316-4;G642
1 引言
操作系統(tǒng)在計算機中占有十分重要的地位,它是計算機硬件功能的首次擴充,對系統(tǒng)中的所有軟件和硬件資源實施有效的管理。因此,操作系統(tǒng)是計算機學科的一門核心課程,對計算機科學領域內其他課程的學習具有承上啟下的作用。
1.1 操作系統(tǒng)教學現(xiàn)狀
操作系統(tǒng)課程中涉及的基本概念多、知識點比較抽象。其次,操作系統(tǒng)的強理論性,導致很多學校忽視了實踐環(huán)節(jié),但很多原理恰恰需要通過實踐來驗證。因此,在操作系統(tǒng)的教學過程中,如果教師仍然采用傳統(tǒng)的教學手段來講授那些抽象、枯燥的原理的話,學生很難理解,同樣,對于教師來講,課堂效果也達不到預期的目標。
1.2 操作系統(tǒng)教學方法的改進
操作系統(tǒng)的理論知識雖然枯燥、抽象,但是在實際的系統(tǒng)使用以及程序設計過程中都有體現(xiàn),因此在教學過程中可以把一些基本工作原理和具體實例結合起來,通過對實例的分析使得原有抽象的知識點變得淺顯易懂、簡潔明了。
2 對比法在操作系統(tǒng)教學中的應用
在操作系統(tǒng)教學的知識體系中,進程同步是重點也是難點。在計算機系統(tǒng)中由于資源競爭可能存在以下兩種制約關系:
(1)間接制約是指進程之間對于某種共享資源的競爭,進程對該資源必須采用互斥的訪問方式。
(2)直接制約是指進程之間存在著合作關系,主要體現(xiàn)在相互等待和發(fā)送信息。
目前,信號量機制是一種卓有成效的進程同步工具。但是信號量機制比較抽象,學生不容易理解,同時進程同步的實例較多、變化大,與實際生活中的問題聯(lián)系緊密。因此在教學過程中,尋找一種解決進程同步的方法尤為重要。
本文采用對比法對進程同步實例進行分析,并總結出進程同步一般的解決方法和步驟。
對比教學法就是指在教學中,將一些具有某種聯(lián)系和區(qū)別的教學內容放在一起進行對比分析,找出其相同和不同之處,使學生在明確了一個內容之后能夠自然地聯(lián)想到另一個內容,并能理解和掌握。
在操作系統(tǒng)中,信號量本質是一個整型變量,記錄型信號量機制中,信號量不同的取值代表不同的含義,大于等于零代表系統(tǒng)中可用資源的數(shù)目,小于零代表正在等待使用某個資源的進程數(shù)。信號量的值僅能由wait、signal原語操作改變,執(zhí)行一次wait操作意味著請求分配一個單位資源,信號量的值減一;而執(zhí)行一個signal操作意味著釋放一個單位資源,信號量的值加一。
接下來給出兩個進程同步的例子,運用對比法找出它們之間的相同以及不同之處,進而給出進程同步的一般解決方法。
例1:設進程Pa和Pb通過緩沖區(qū)隊列傳輸數(shù)據(jù),Pa為發(fā)送進程,Pb為接收進程。該例中發(fā)送進程Pa發(fā)送數(shù)據(jù)前需等待空的緩沖區(qū),因此需要給Pa進程定義一個私用信號量,代表其等待的事件,當數(shù)據(jù)送入緩沖區(qū)后,需向接收進程發(fā)送緩沖區(qū)滿的消息,同理,接收進程Pb接收數(shù)據(jù)前需等待滿的緩沖區(qū),因此需要給Pb進程定義一個私用信號量,代表其等待的事件,當數(shù)據(jù)取走后,需向發(fā)送進程發(fā)送緩沖區(qū)空的消息。
根據(jù)以上分析,分別給出發(fā)送進程Pa 和接收進程Pb的算法描述:
Pa: wait(Bufempty) Pb: wait(Buffull)
選擇一個空緩沖區(qū)Buf 選擇一個滿緩沖區(qū)Buf
Buf←data data←Buf
Buf置滿 Buf置空
signal(Buffull) signal(Bufempty)
例2:有一群生產(chǎn)者進程在生產(chǎn)產(chǎn)品,并將這些產(chǎn)品提供給消費者進程去消費。在兩者之間設置了一個具有n個緩沖區(qū)的緩沖池,生產(chǎn)者進程將所生產(chǎn)的產(chǎn)品放入一個緩沖區(qū);消費者進程從一個緩沖區(qū)中取走產(chǎn)品消費。該例中生產(chǎn)者Producer進程生產(chǎn)產(chǎn)品前需等待空的緩沖區(qū),因此需要為設置一個私用信號量代表其等的事件,同時,當產(chǎn)品放入緩沖區(qū)內,生產(chǎn)者需向消費者發(fā)送緩沖區(qū)滿的信息;同理,消費者Consumer進程在消費產(chǎn)品之前需等待滿的緩沖區(qū),因此需要為消費者定義私用信號量來代表它等的事件,同時,消費者取走產(chǎn)品后需向生產(chǎn)者發(fā)送緩沖區(qū)為空的信息。以上分析僅僅考慮一個生產(chǎn)者和一個消費者的情況,但是該模型中生產(chǎn)者和消費者都是一群,因此,可能會存在這樣一種情況,兩個生產(chǎn)者往同一個空緩沖區(qū)放產(chǎn)品或者兩個消費者從同一個滿的緩沖區(qū)取產(chǎn)品的情況,不管是哪種情況都會發(fā)生錯誤,因為一個空緩沖區(qū)只允許放一個產(chǎn)品,一個產(chǎn)品只能被一個消費者消費。為了防止發(fā)生這類錯誤,需要為緩沖池定義信號量來保證互斥訪問。
根據(jù)上述分析,分別給出生產(chǎn)者進程Producer和消費者進程Consumer的算法描述:
proceducer: repeat consumer: repeat
生產(chǎn)產(chǎn)品; wait(full);
wait(empty); wait(mutex);
wait(mutex); 從滿緩沖區(qū)取產(chǎn)品
放入空緩沖區(qū); signal(mutex);
signal(mutex); signal(empty);
signal(full); 消費產(chǎn)品
until 1; until 1;
綜上,上述兩個例子的相同之處是進程之間都需要等待和發(fā)送緩沖區(qū)滿或者空的信號,但是兩者存在的顯著不同是生產(chǎn)者或者消費者是一個還是一群的問題,如果是一群的話,為了防止因為競爭資源而導致的錯誤發(fā)生,需對資源實現(xiàn)互斥訪問。
針對上述兩個實例,本文給出解決一般進程同步與互斥的方法:首先判斷是否存在臨界資源,如存在需通過設置信號量來實現(xiàn)對該資源的互斥訪問;其次,明確進程之間的合作關系,為進程等待的每個事件設置私用信號量來合作;最后把wait(s)和signal(s)加在程序的適當位置來規(guī)定程序的執(zhí)行順序,并對每個信號量附上初值。
3 結束語
對比法教學通過對相似案例的分析,找出它們之間相同和不同之處,提高學生解決復雜問題的能力,并總結解決該類案例的一般方法。教師如選擇案例恰當?shù)脑?,學生對知識點就比較容易掌握。
參考文獻:
[1]湯小丹.計算機操作系統(tǒng)[M].西安:西安電子科技大學出版社,2007.
[2]岳冬利.操作系統(tǒng)課程中的比喻教學[J].教育與教學研究.2008:92-93.
作者簡介:徐伶伶(1981.09-),女,江蘇太倉人,研究生,講師,研究方向:計算機應用技術;王瑩瑩(1987-),女,山東聊城人,研究生,講師,研究方向:計算機應用技術。
作者單位:青島工學院,山東青島 266300