国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向操作系統(tǒng)課程的“啟發(fā)—探究式”教學方法初探

2011-01-01 00:00:00劉曉
計算機教育 2011年2期


  摘要:操作系統(tǒng)課程具有概念知識點較多、涉及內容較廣、算法繁多復雜等特點,學生不易理解和掌握。針對上述問題,文章提出將“啟發(fā)—探究式”教學方法應用于操作系統(tǒng)的教學中,并以“生產者—消費者”問題為例,闡述了“啟發(fā)—探究式”教學方法在實際教學過程中的應用。實踐證明,該方法在操作系統(tǒng)的教學過程中取得了良好的效果。
  關鍵詞:啟發(fā)式教學;探究式教學;操作系統(tǒng);生產者—消費者問題
  
  教學方法是教師和學生為實現(xiàn)教學目的、完成教學任務所采取的相互作用的手段和一整套方式。它既包括教師教的方法,也包括學生學的方法,是教授方法與學習方法的統(tǒng)一。然而,實際教學過程中往往由于課時、教學設施等條件的限制減少了學生的參與,從而忽略了教學成功的基本標準是學生的學習動機以及學生對學習的參與程度這一事實。因此,結合具體的教學內容,設計出合理的教學方法,在傳道授業(yè)解惑的同時充分調動學生的積極性,真正實現(xiàn)教法與學法的辯證統(tǒng)一,應是教育工作者不斷追求的目標。
  胡一之[1]針對操作系統(tǒng)課程難教難學的現(xiàn)狀,探討了如何調動學生學習的積極性,提高操作系統(tǒng)教學質量的方法;金海東[2]等以操作系統(tǒng)中進程同步與互斥問題為實例,探討了如何從學習者的角度設計循序漸進的教學內容;張坤[3]總結了在操作系統(tǒng)教學過程中可以運用雙語教學、分層次教學以及任務式驅動等教學方法。以上文獻均是對操作系統(tǒng)教學方法進行的有益實踐。
  筆者結合多年的教學、科研經驗,對操作系統(tǒng)課程的教學方法進行了深入的思考和積極的探索。操作系統(tǒng)課程具有概念知識點較多、涉及內容廣泛、算法繁多復雜等特點,它對學生的理解能力和邏輯思維能力提出了更高的要求,而傳統(tǒng)的以教師講解為主的教學模式并不能取得良好的教學效果?!皢l(fā)—探究式”教學方法與傳統(tǒng)的灌輸式教學不同,它更強調學生在教師的引領和啟示下,主動參與到發(fā)現(xiàn)問題、尋求答案的過程中,從而可以讓學生真正理解所學內容,提高了他們獨立思考、解決問題的能力。
  因此,針對操作系統(tǒng)課程的特點,本文提出將“啟發(fā)—探究式”教學方法應用于操作系統(tǒng)的教學中,并以“生產者—消費者”問題為例,闡述“啟發(fā)—探究式”教學方法在實際教學過程中的應用。
  1問題描述與分析
  “生產者—消費者”問題可簡單描述為:有一群生產者進程在生產產品,并將這些產品提供給消費者進程去消費。為使生產者進程和消費者進程能并發(fā)執(zhí)行,在兩者之間設置一個具有N個緩沖區(qū)的緩沖池。生產者進程可以將其所生產的產品放入一個緩沖區(qū)中,消費者進程可以從一個緩沖區(qū)中取得產品去消費。盡管所有的生產者進程和消費者進程都是以異步方式進行的,但他們之間必須保持同步,既不允許消費者進程到一個空的緩沖區(qū)中去取產品,也不允許生產者進程向一個已裝滿產品且尚未被取走的緩沖區(qū)中投放產品[4]。
  在西安電子科技大學出版的《計算機操作系統(tǒng)》[4]教材中,“生產者—消費者”問題被安排在臨界資源和臨界區(qū)、信號量機制與應用之后的章節(jié),雖然有了前面知識的鋪墊,但是對于學生理解和掌握“生產者—消費者”問題還是有一定難度。筆者借鑒了概念設計中功能分解[5-7]的思想嘗試將復雜的“生產者—消費者”問題分解為幾個子問題,在教學過程中通過引導學生對子問題的求解,加深對復雜問題的理解,最終循序漸進地解決“生產者—消費者”問題。
  因為“生產者—消費者”問題中有兩個主要的變化因素,一是生產者、消費者的數(shù)量,二是緩沖區(qū)的數(shù)量。通過改變以上兩個變量,可以得到4個問題,即單緩沖區(qū)的“單生產者—消費者”問題(簡稱單人單緩問題)、多緩沖區(qū)的“單生產者—消費者”問題(簡稱單人多緩問題)、單緩沖區(qū)的“多生產者—消費者”問題(簡稱多人單緩問題)以及多緩沖區(qū)的“多生產者—消費者”問題(即“生產者—消費者”問題)。解決前3個問題可以為最終解決“生產者—消費者”問題做鋪墊,因此下面先從單人單緩問題入手,試圖通過教師的啟發(fā)和學生的自主探究最終解決“生產者—消費者”問題。
  2單人單緩問題
  已知條件:活動進程僅有一個生產者Producer和一個消費者Consumer,共享一個緩沖區(qū)。
  【啟發(fā)2-1】在學習完進程互斥問題之后,如果直接應用互斥模型解決單人單緩問題,是否可行?
  【探究】如果用互斥模型,可以讓學生獨立寫出相應的算法:(初始化s=1)
  通過共同分析可知,以上算法雖然保證了進程間互斥訪問緩沖區(qū),但是它允許Consumer在Producer未生產任何產品之前讀取緩沖,這并不符合常理。因此,可以得出以下結論:
  1) 單人單緩問題不適宜用互斥模型解決,因為Producer和Consumer并不屬于同等地位,它們的調度優(yōu)先級是不同的。
  2)Producer和Consumer之間不僅有對緩沖區(qū)的互斥操作,還應有協(xié)調合作。只有在Producer向緩沖區(qū)放入產品后,Consumer才能夠從緩沖區(qū)中取出產品消費;另一方面,只有當Consumer從緩沖區(qū)取出產品后,Producer才能夠繼續(xù)向緩沖區(qū)中放入新產品。因此,可以對學生引出進程同步的含義,即某些并發(fā)的進程,在某些關鍵點上互通信息,相互協(xié)調,共同完成任務。有些教材將進程互斥歸結為進程同步問題,筆者持不同觀點。筆者認為進程同步與進程互斥是有本質區(qū)別的,應該加以區(qū)分。
  【啟發(fā)2-2】互斥模型不能用來解決單人單緩問題,那應該怎么做?
  【探究】由以上分析可知,僅僅使用一個信號量來控制緩沖區(qū)已不能完全解決單人單緩問題,還需要再增加信號量用來協(xié)調Producer和Consumer之間的同步。那么,設置信號量empty給Producer提供空緩沖區(qū)同步信號,設置信號量full給Consumer提供滿緩沖區(qū)同步信號。當Producer往緩沖區(qū)放產品前就要申請一個空緩沖區(qū),放入產品之后就要釋放一個滿緩沖區(qū)信號。Consumer則在取走產品前申請滿緩沖區(qū),取產品后釋放一個空緩沖區(qū)信號。那么,可以引導學生對上述算法進行修改,從而得到如下算法(因為最初緩沖區(qū)為空,所以初始化empty=1,full=0):
   以上算法不僅保證了Producer和Consumer之間不能同時訪問緩沖區(qū),而且保證了Producer和Consumer之間的同步。
  3多人單緩問題
  已知條件:活動進程有多個生產者Producer和多個消費者Consumer,共享一個緩沖區(qū)。
  【啟發(fā)3-1】多人單緩問題與上述的單人單緩問題相比,有何變化?
  【探究】多人單緩問題的生產者進程和消費者進程由原來的一個變成了多個,那么訪問緩沖區(qū)的策略就要做相應改變。此時,不僅Producer和Consumer之間要互斥地訪問緩沖區(qū),不同的Producer進程之間、不同的Consumer進程之間也要互斥地訪問緩沖區(qū),而Producer和Consumer之間的同步關系保持不變。
  【啟發(fā)3-2】對于上述變化,應如何反映在算法中?
  【探究】通過分析,學生們發(fā)現(xiàn)因為只有一個緩沖區(qū),信號量empty和full的最大值均為1。因此,上述單人單緩問題的算法保證了不同的Producer進程之間、不同的Consumer進程之間以及Producer和Consumer之間均不能同時訪問緩沖區(qū),在解決同步問題的同時也包含了對互斥的處理。因此,多人單緩問題的算法同單人單緩問題的實現(xiàn)是一樣的。
  
  4單人多緩問題
  已知條件:活動進程只有一個生產者Producer和一消費者Consumer,共享n個緩沖區(qū)。
  【啟發(fā)4-1】單人多緩問題與上述的單人單緩問題相比,有何變化?
  【探究】與上述的單人單緩問題相比,單人多緩問題在緩沖區(qū)數(shù)量上由原來的一個變成了多個,那么對緩沖區(qū)的存取就要相應的改變策略。此時,允許Producer在空緩沖區(qū)放入產品的同時,Consumer在滿緩沖區(qū)取出產品。
  【啟發(fā)4-2】對于上述變化,應如何反映在算法中?
  【探究】此時,需要分別設置變量來控制Producer在緩沖區(qū)中放入產品的位置和Consumer取出產品的位置。
  如果用隊列實現(xiàn)緩沖區(qū)存取管理,那么可以設置變量in和out分別記錄存、取位置變化,初值均為0。empty初值為n,full初值為0。則可以用以下語句中的(1)代替單人單緩算法中的語句(1),用語句(2)代替單人單緩算法中的語句(2),從而解決單人多緩問題。
  【啟發(fā)4-3】in和out均是指向緩沖區(qū)的指針,那么能否省略in或out,節(jié)省一個變量?
  【探究】學生們對設置兩個變量記錄存、取位置的變化有些不解,還有學生推導出了公式說明可以節(jié)省變量out。
  公式的結果可能是正確的,但是同學們卻忽略了信號量的由來和意義。因此,試圖讓學生們思考如果可以通過公式省略變量,那么為什么沒有這么做,以及信號量的意義是什么。
  很快,學生們就發(fā)現(xiàn)了問題的答案。信號量機制是進程同步的工具,Dijkstra最初定義整型信號量S時就規(guī)定,除初始化外,僅能通過兩個標準原子操作wait(S)和signal(S)來訪問。也就是說,信號量是不能參與運算的,這是和變量的一個區(qū)別。
  【啟發(fā)4-4】如果用堆棧實現(xiàn)緩沖區(qū)存取管理,應該怎樣實現(xiàn)?
  【探究】隊列的實現(xiàn)講解完,就可以讓學生思考如何用堆棧來實現(xiàn)同樣的目的,看看他們是否真正理解了單人多緩問題的解決方法。
  5 “生產者—消費者”問題
  通過解決上述3個問題,可以順利進入到對多緩沖區(qū)的“多生產者—消費者”問題的解答,而多緩沖區(qū)的“多生產者—消費者”問題即為經典的“生產者—消費者”問題。這里,依然采用“啟發(fā)—探究式”教學方法對這一問題給出解決思路。
  【啟發(fā)5-1】對于“生產者—消費者”問題,如果直接使用單人多緩問題的算法,會出現(xiàn)什么問題?
  【探究】假設有兩個不同的生產者進程 和 , 生產一個產品放入Buffer中,在 之前時間片到。然后, 又生產一個產品,則會放入Buffer中同一位置,從而產生錯誤。
  因此,“生產者—消費者”問題要保證Producer之間互斥地訪問緩沖區(qū)。同理,Consumer之間也要互斥地訪問緩沖區(qū)。
  【啟發(fā)5-2】那么,Producer和Consumer之間是否要互斥地訪問緩沖區(qū)呢?
  【探究】根據(jù)單人多緩問題的分析可知,Producer和Consumer之間不需要完全地互斥。因此,可以根據(jù)Producer和Consumer之間是否互斥地訪問緩沖區(qū)將問題分為兩種情況:
  1) 允許一個Producer在空緩沖區(qū)放入產品的同時,另一個Consumer在滿緩沖區(qū)取產品。但Producer之間以及Consumer之間要互斥訪問緩沖區(qū)。
  2)Producer和Consumer之間互斥訪問緩沖區(qū),且Producer之間以及Consumer之間均互斥訪問緩沖區(qū)。
  關于情況1),筆者已在文獻[8]中進行了詳細的闡述,在此不再贅述。
  在情況2)中要保證Producer和Consumer之間、Producer之間以及Consumer之間均互斥訪問緩沖區(qū)。那么,可以利用互斥信號量mutex實現(xiàn)諸進程對緩沖區(qū)的互斥使用。這個問題的實現(xiàn)即是一般操作系統(tǒng)教材中給出的“生產者—消費者”問題的算法。
  【啟發(fā)5-3】在生產者算法中,能否調換wait(empty)和wait(mutex)的位置?能否調換signal(mutex)和signal(empty)的位置?在消費者算法中,能否調換wait(full)和wait(mutex)的位置?能否調換signal (mutex)和signal(full)的位置?
  【探究】上述問題均是在實際教學過程中總結出來的,通過讓學生獨立解決以上問題,可以加深學生對wait操作和signal操作的理解,以及與互斥信號量同時使用時需要注意的順序問題。
  最終,通過“啟發(fā)—探究式”教學方法可以讓學生充分理解信號量在解決進程同步和互斥問題時的應用機制,可以引導學生總結出以下結論:
  1) “生產者—消費者”算法中用于實現(xiàn)互斥的wait (mutex)和signal(mutex)需要成對地出現(xiàn)。對資源信號量empty和full的wait和signal操作也需要成對地出現(xiàn),但它們分別處于不同的程序中。
  2)wait操作順序不能顛倒。應先執(zhí)行對資源信號量的wait操作,然后再執(zhí)行對互斥信號量的wait操作,否則可能引起進程死鎖。
  3)signal操作順序可以顛倒,不會引起阻塞,但是會影響效率。
  6結語
  本文針對操作系統(tǒng)課程的特點,提出了適用于操作系統(tǒng)課程的“啟發(fā)—探究式”教學方法,并以“生產者—消費者”問題為例,闡述了該方法在教學過程中的應用。經驗證,這種“啟發(fā)—探究式”教學方法能夠充分調動學生的積極性,進一步加深學生對進程同步問題中相關知識點的理解,取得了良好的教學效果。同時,這種教學方法對操作系統(tǒng)中其他問題的講解乃至計算機領域其他課程的教學均具有一定的借鑒作用。
  注:致謝:感謝合肥工業(yè)大學計算機與信息學院胡學鋼教授認真的指導以及VCC研究室唐益明博士、余燁博士、杜琳碩士、沈冠町碩士的積極討論。
  
  參考文獻:
  [1] 胡一之. 調動學生

姜堰市| 朝阳县| 文水县| 虎林市| 外汇| 罗甸县| 宝坻区| 商南县| 安泽县| 禄丰县| 内乡县| 磐安县| 六枝特区| 家居| 香河县| 潜山县| 东辽县| 宝清县| 满洲里市| 井陉县| 布尔津县| 荃湾区| 奈曼旗| 扎兰屯市| 冀州市| 剑川县| 洪江市| 福鼎市| 平安县| 连州市| 鄂温| 襄城县| 华宁县| 缙云县| 雷州市| 昭觉县| 行唐县| 亳州市| 遂川县| 闽侯县| 乐清市|