一、使用信号量实现互斥的案例 (一)基本方法 对于临界资源R,设置信号量Mutex,初始值为1。为了 使多个进程互斥地访问R,每个进程中访问R的临界区代码段 都要放在Wait(Mutex)和Signal(Mutex)两个操作之间。
每个访问临界资源R的循环进程可以描述如下:
Pi(){ Wait(Mutex);
Critical section;
Signal(Mutex) Remaider section;
} (二)案例分析 有了基本方法,学生对解决问题的思路有了大体了解,但是针对具体问题并不一定能够解决。在这里可以给出学生 几个案例,如单向桥问题、吃水果问题、阅览室问题等。让 学生真正去“体验”一下解决过程,这样才会对理论讲解有 更加深刻的认识,促使学生结合教学案例给出中的现实情况, 在解决问题的过程中创造性地提出解决方案[3]。
下面以单向桥问题为例进行简单介绍。
1. 案例介绍 有一单向行驶的公路桥,每次只允许一辆汽车通过。当 汽车到达桥头时,若桥上无车,便可上桥;
否则需等待,直 到桥上的汽车下桥为止。若每一辆车为一个进程,请用Wait、 Signal操作保证汽车按要求过桥。
2. 案例分析 可以将公路桥看作一个临界资源,设置一个信号量S实 现互斥,初值为1。由于每个汽车过桥的过程相同,这里只 给出一辆汽车Pi过桥的同步描述。
Semaphore S=1;
Pi( ){ While(1){ 到达桥头;
Wait(Mutex);
上桥行驶;
到达桥的另一端;
[收稿日期] 2014-08-12;
[修回日期] 2014-09-27[基金项目] 滨州学院专业核心课程项目 (BYHXKC201412) Signal(Mutex);
} } 3. 教学组织 传统教学是注入式教学,而在案例教学过程中,教师是 主导地位,学生是主体地位,教师可以带领学生从未知领域 进入已知领域[4]。在组织实施时,可以在给出问题描述后 先让学生讨论,然后引导学生分析在这个问题中需要互斥访 问的临界资源是什么,如何去定义信号量,初始值是多少。
定义好信号量后,和学生一起写出解决这个问题的算法。
二、利用信号量实现前趋关系的案例 有些进程在运行时具有前趋关系。例如,进程C完成数 据处理后进程P才可以进行结果打印,则进程C和P之间存在 前趋关系,即C→P。利用信号量可以实现进程间的前趋关系。
(一)基本方法 在实现前趋关系时,可以为进程C和P定义一个公用信号 量S,并设置初始值0。进程C完成数据处理后要执行Signal (S)操作向进程P发一个信号,而进程P在打印之前要执行 Wait(S)操作,即收到信号后才可以打印。
(二)案例分析 在操作系统中也有很多有趣的进程同步问题可以归为这一类,如公共汽车问题、围棋问题、抽烟问题、4×100接 力赛问题等。下面以公共汽车问题为例进行介绍。
1. 案例介绍 在公共汽车上,司机和售票员各行其职,司机负责开车 和到站停车;
售票员负责售票和开、关车门,当售票员关好 车门后,驾驶员才能开车行驶。试用Wait、Signal操作实现 司机与售票员间的同步。
2. 案例分析 这是一个典型的用信号量实现前趋关系的案例:司机必 须到站停车后售票员才可以打开车门,乘客上车,售票员关 上车门后司机才可以再开车行驶。所以,在这个案例中要定 义两个信号量,一个是司机何时开车,一个是售票员何时开 车门。司机和售票员的同步关系可描述如下:
Semaphore S1=0;
/*开车信号 Semaphore S2=0;
/*开车门信号 Driver( ){ While(1){ 正常行车;
到站停车;
Signal(S2);
Wait(S1);
} }BookingClerk( ){ While(1){ 售票;
Wait(S2);
开车门;
关车门;
Signal(S1);
} } 3. 教学组织 同样,可以在给出案例描述后先让学生思考讨论,然后 引导学生分析在这个问题中司机和售票员哪些地方需要实 现前趋关系,如何去定义信号量,初始值是多少。定义好信 号量后,可以和学生一起分析写出解决这个问题的算法。
三、综合案例 还有一些案例,既涉及到进程互斥问题,又涉及到进程 的前趋关系,就需要定义多个信号量来分别实现,如嗜睡的 理发师问题、体现写者优先的读者-写者问题等。实际上, 对于这样的综合问题,只需要把上述两种方法结合起来即可。
解题时,关键在于分析出问题中有哪些临界资源或哪些进程 之间具有前趋关系。分清这一点,就可以为临界资源或前趋 关系定义信号量了。一般情况下,实现进程互斥时,定义的 信号量初始值为1,而实现前趋关系时,信号量的初始值为0。在研究性学习中运用教学案例,可以让学生体会在特殊 中蕴含的一般性理论,所以,在设计教学案例时,还要注意 案例本身的表征方式难易程度[5]。
参考文献:
[1] 石敏力.案例教学理论研究综述[J].才智,2012 (5):310. [2] 汤小丹,梁红兵,哲凤屏,等.计算机操作系统[M]. 西安:西安电子科技大学出版社,2014:47-57. [3] 魏葵.充分发挥案例教学在应用型人才培养中的作 用[J].物流教育,2011(2):191-192. [4] 刘彩霞,孙杰. 案例教学对大学生问题意识的培养 [J].边疆经济文化,2011(3):153-154. [5] 蔡伟.案例教学在研究性学习中的实施策略[J].科 学大众(科学教育),2012(2):36.
扩展阅读文章
推荐阅读文章
推荐内容
钻爱网 www.zuanai.cn
Copyright © 2002-2018 . 钻爱网 版权所有 湘ICP备12008529号-1