王立春 孔德慧 李敬華



[摘 要] 高校專業課程內容通常是某個特定研究方向的理論及方法,因此課程涉及的知識點間存在較強的關聯性。授課過程中針對關聯知識點設計有類比或承繼關系的教學案例,有助于幫助學生辨析概念、構建知識體系。以“計算機操作系統”課程為背景,針對存在關聯關系的知識點設計邏輯上由簡至繁的系列案例,在課堂學習中逐步展開問題的分析和求解,一方面學生借助由解決簡單問題獲取的經驗建立解決復雜問題的信心,另一方面系列問題之間既有的相似性和差異性,有助于激發學生解決更復雜問題的好奇心和興趣,從而調動學生的主動性、提高學生的參與度。
[關鍵詞] 案例教學法;關聯案例教學;操作系統
[基金項目] 2019年度北京工業大學研究生課程建設項目“真實感計算機圖形學”(CR201907)
[作者簡介] 王立春(1975—),女,黑龍江綏化人,博士,北京工業大學信息學部教授,主要從事人工智能、人機交互研究;孔德慧(1968—),女,陜西吳堡人,博士,北京工業大學信息學部教授,主要從事多媒體技術研究;李敬華(1979—),女(滿族),遼寧錦州人,北京工業大學信息學部副教授,博士,主要從事模式識別、圖像處理研究。
[中圖分類號] TP316? ?[文獻標識碼] A? ? ? ? ? [文章編號] 1674-9324(2021)42-0101-04? ?[收稿日期] 2021-04-30
一、引言
案例教學法以構建主義學習理論為指導,通常利用一種真實的教學情境切入教學內容,帶領學生在對情境進行探討的過程中理解抽象、復雜的概念或原理[1]。關聯案例教學法強調教學案例與學生生活、專業相關聯,本文在考慮以上關聯的基礎上進一步考慮知識點間的關聯,針對計算機操作系統課程中的進程同步與互斥問題,通過設計生活相關且由簡至繁的一系列案例引導學生漸進地理解如何利用信號量及PV原語實現進程間的互斥或同步[2]。
“計算機操作系統”是計算機科學與技術、軟件工程、信息安全等信息類專業的核心和基礎課程[3],對于“數據結構”“計算機組成管理”“系統結構”“網絡安全”等其他專業課有承上啟下的作用,充分理解操作系統課程中的概念和原理可以幫助學生更好地理解其他理論課程涉及的概念和原理。
操作系統是計算機系統中最重要的系統軟件,提供硬件和其他軟件的接口、計算機和用戶的接口;控制和管理計算機系統內的各種軟硬件資源;有效地組織和管理多道程序的運行。在保證安全的前提下保障程序并發執行和資源共享是現代操作系統的重要特點,為了有效支持程序并發執行和資源共享,現代操作系統使用進程描述計算機程序的執行過程并將進程看作是資源分配的基本單位。因此,進程管理是操作系統的重要功能之一,透徹理解進程管理有助于深入理解操作系統的工作原理。
二、進程互斥/同步與信號量和PV原語
計算機系統的資源有限導致了進程之間的資源競爭和共享。一組并發進程中的一個或多個程序段,因共享某一共有資源而導致它們必須以一個不允許交叉執行的單位執行,稱為進程的互斥;異步環境下的一組并發進程因直接制約而互相發送消息而進行互相合作、互相等待,使得各進程按一定的速度執行的過程稱為進程間的同步[4]。
信號量和PV原語是實現進程同步與互斥的重要手段,公用信號量描述多進程共享的資源的使用情況,私用信號量描述同步進程中先序進程的完成情況,PV原語是用于信號量管理的原語。理解“基于信號量和PV原語實現進程同步與互斥”是操作系統課程中“進程管理”的重點內容,也是難點之一。
進程同步互斥的經典案例有“生產者—消費者問題”“讀—寫者問題”“哲學家就餐問題”“過橋問題”等,這些問題分別描述了不同資源限制條件下的同步和互斥問題,以值分別為例講解進程同步互斥時需要在不同應用場景間切換,相比之下,分析單一應用場景下不同條件的問題設置更容易建立問題與解決方案之間的關聯,更利于在講解過程中引導學生經歷邏輯漸進復雜的問題場景,從而遞進式地展開問題分析。
本文針對以上問題,對生活場景密切相關的“過橋問題”進行修改,提出由簡單到復雜的一系列問題,使其在用于解釋進程同步和互斥問題時便于展開由淺入深的分析。
三、漸進復雜的進程互斥案例設計
針對進程同步問題,選擇生活場景密切關聯的“過橋”作為案例,考慮單向/雙向通過、以及允許1人通過/允許N人同時通過,設計漸進復雜的競爭使用資源問題,以達到遞進式分析問題的目的。
(一)單向—允許一人通過的過橋問題
過橋問題-1:一條河上架設了一座只允許單向通過的橋,且任意時刻橋上只能有一個人,過河的人只能沿著橋向前走而不能向后退,請設計利用PV原語實現多人順利過河的算法。
問題分析:“任意時刻橋上只能有一個人”要求過橋的人互斥地通過橋,“只允許單向通過”以及“過河的人只能沿著橋向前走而不能向后退”的條件,意味著正在過橋的人只需要考慮同方向后續要過橋的人有共享公共資源的可能。
設置公用信號量semBridge表示橋是否可用,由于任意時刻橋上只能有一個人,因此該信號量初值為1。描述每個過橋人行為的偽碼如下。
(二)單向—允許N人同時通過的過橋問題
過橋問題-2:一條河上架設了一座只允許單向通過的橋,且任意時刻橋上最多可以有N個人,過河的人只能沿著橋向前走而不能向后退,請設計利用PV原語實現多人順利過河的算法。
問題分析:與“過橋問題-1”相比,新的問題描述是“任意時刻橋上最多可以有N個人”,這意味著公共資源的數量從1增加為N。
設置公用信號量semPeople表示橋可容納的人數,由于任意時刻橋上最多可以有N個人,因此該信號量初值為N。
(三)雙向—允許N人同時通過的過橋問題
過橋問題-3:一條河上架設了一座橋,且任意時刻橋上最多可以有N個人,過河的人只能沿著橋向前走而不能向后退。過河時,只要對岸無人過橋,就可以過橋,但不允許河兩岸的人同時過橋。請設計利用PV原語實現兩個方向多人順利過河的算法。(假定人源源不斷地到達)
問題分析:任意一個在橋上的人要考慮兩種互斥地使用橋的情況:同方向后續要過橋的人,對岸要過橋的人。為了方便描述過橋人的方向,設過橋的兩個方向記為正向和反向(后續問題采用相同記法)。
從第一個過橋人的角度分析,假定這個人的方向是正向,那么只有橋上沒有反向的過橋人的情況下,此人才可能過橋,因此正向第一個過橋的人擁有對橋的控制權,同理反向第一個過橋的人也擁有對橋的控制權;同時為了使對立方向的人能夠獲得過橋的機會,正在過橋的這一方向最后一個過橋的人有必要釋放對橋的控制權。因此需要設置公用信號量semBridge表示橋是否可用,由于該信號量用于描述橋的控制權,因此初值為1。
由于是同方向第一個人獲得橋的控制權、最后一個人釋放橋的控制權,因此需要設置計數器用于統計過橋人的次序,又由于正向和反向都需要統計過橋人的次序,因此有必要設置兩個計數器counterZ和counterF分別用于正向和反向的計數。對于正向的過橋人來說,計數器counterZ是所有正向過橋人互斥使用的公共資源,因此設置公用信號量semCounterZ,初值為1;反向計數器counterF的使用同理,設置公用信號量semCounterF,初值為1。
“任意時刻橋上最多可以有N個人”的條件仍然存在,即公共資源數量為N,因此設置公用信號量semPeople表示橋可容納的人數,初值為N。
描述正向每個過橋人行為的偽碼如下(反向過橋與正向過橋原理相同,此處省略偽碼)。
過橋問題-3中,如果正向的人開始過橋且過橋的人有無窮個人,則反方向的人永遠也無法獲得過橋機會,不存在最后一個人來釋放橋,反向過橋情況亦然。
四、遞進復雜的進程同步案例設計
針對進程同步問題,承接進程互斥問題的場景設計,考慮雙向通過時允許1人或N人交替通過的情況,設計漸進復雜的同步且同時存在競爭使用資源的情況。
(一)雙向—允許一人交替通過的過橋問題
過橋問題-4:一條河上架設了一座橋,且任意時刻橋上只能有一個人,過河的人只能沿著橋向前走而不能向后退。要求正向和反向的人交替過橋,請設計利用PV原語實現多人順利過河的算法。
問題分析:與“過橋問題-1”相近,問題描述增加了“正向和反向的人交替過橋”,即正向過橋人和反向過橋人之間存在同步關系,因此分別為正向過橋人和反向過橋人設置私用信號量semPassF和semPassZ表示“反向已過橋”和“正向已過橋”。假定正向優先過橋,則semPassF初值為1,semPassZ初值為0。由于“任意時刻橋上只能有一個人”,因此需要設置公用信號量semBridge表示橋是否可用,初值為1。
描述正向每個過橋人行為的偽碼如下(反向過橋與正向過橋原理相同,此處省略偽碼)。
(二)雙向—允許N人交替通過的過橋問題
過橋問題-5:一條河上架設了一座橋,且任意時刻橋上最多可以有N個人,過河的人只能沿著橋向前走而不能向后退。要求正向的N個人和反向的N個人交替過橋且正方先過橋,請設計利用PV原語實現多人順利過河的算法。
問題分析:假定正向優先過橋,則semPassF初值為N,semPassZ初值為0。此外,由于“正向的N個人和反向的N個人交替過橋”,因此正向或反向的第一個過橋的人擁有對橋的控制權;同時正向或反向的第N個過橋的人釋放對橋的控制權。因此需要為正向和反向分別設置兩個計數器,上橋計數器semCounterZup和semCounterFup用于記錄正向過橋和反向過橋的第一個人,下橋計數器semCounterZdown和semCounterFdown用于記錄正向過橋和反向過橋的第N個人,與前述問題中使用計數器相同,同方向的過橋人互斥地使用計數器,因此需要為每個計數器設置對應的公用信號量。
描述正向每個過橋人行為的偽碼見下頁(反向過橋與正向過橋原理相同,此處省略偽碼)。
五、教學實施情況
以上提出的系列過橋問題,在相同應用背景下逐漸增加問題的復雜度,有助于在教學過程中借助簡單問題的解決方案逐步展開對更復雜問題的分析。
過橋問題-1條件最簡單,在理解進程互斥、信號量和PV原語的基礎上,引導學生分析具體問題中的公共資源是什么、互斥使用公共資源的進程有哪些,從而定義恰當的公用信號量及其初值;過橋問題-2中變化量只是公共資源的數量,學生可以輕易地提出解決方案;過橋問題-3描述的問題進一步復雜化,有了解決前兩個過橋問題的經驗,學生更樂于參與對過橋問題-3的討論,提出各種解決方案,針對學生提出的解決方案分析利弊且在此過程中進一步明確了公共資源、進程互斥、信號量以及PV原語的概念。
討論了過橋問題-3之后,過橋問題-4的條件設定對學生來說不復雜,借用相同場景進一步明確了進程同步、信號量和PV原語的概念;過橋問題-5相比過橋問題-4復雜且與過橋問題-3有相似之處,相似又不同的問題設定吸引學生在課后繼續鉆研提供解決方案,較好地達到了激發學生學習興趣的目的。
六、結語
本文針對操作系統課程中進程同步與互斥設計的系列過橋問題,既考慮了案例問題與學生生活的關聯,也考慮了進程同步與進程互斥兩個既有知識點之間的關聯。案例問題的條件由簡單到繁難,學生通過解決簡單問題獲得經驗,從而更有信心解決復雜問題;系列問題之間既有相似性也有差異性,激發學生解決復雜問題的好奇心和興趣,從而有利于通過分析系列問題幫助學生更深入地理解進程同步、進程互斥、信號量以及PV原語的概念。
參考文獻
[1]吳海珍,孟愛國.關聯案例教學法的研究與教學實踐[J].湖南財經高等專科學校學報,2008,24(113):141-142.
[2]袁玲.關聯案例教學法在《C語言程序設計》教學中的應用[J].喀什師范學院學報,2014,35(6):66-68.
[3]中國計算機科學與技術學科教程2002研究組.中國計算機科學與技術學科教程[M].北京:清華大學出版社,
2002:8.
[4]張堯學,宋虹,張高.計算機操作系統教程(第四版)[M].北京:清華大學出版社,2013:10.
Teaching Design Based on Related Case Teaching Method: A Case Study of Process Synchronization and Mutual Exclusion
WANG Li-chun, KONG De-hui, LI Jing-hua
(Department of Information, Beijing University of Technology, Beijing 100124, China)
Abstract: The content of professional courses in colleges and universities is usually designed to teach the theory and method of a specific research direction, so there is strong correlations between the knowledge points involved in the courses. Designing cases with analogy or succession relationship for related knowledge points can help students differentiate concepts and construct knowledge system. Based on the course of Computer Operating System, and aiming at the knowledge points with correlation, this paper designs a series of cases from simple to complex, and gradually analyzes and solves problems in classroom learning. On the one hand, students can build confidence to solve complex problems with the experience obtained by solving simple problems; on the other hand, there are similarities and differences between the series of problems, which helps to stimulate students curiosity and interest for solving more complex problems, so as to mobilize students initiative and improve students participation degree.
Key words: case teaching method; related case teaching; operating system