欢迎来到学术参考网

实施“操作系统”课程的案例教学的方式

发布时间:2015-07-28 18:22

  “操作系统”作为一门理论性较强的课程,在教学中除了应用启发式和讨论式教学方法外,引入案例教学法[1],可以使得比较枯燥的理论知识变得生动有趣,激发学生的学习兴趣,从而大大提高教学效果。信号量机制是一种解决进程同步问题的有效工具,也是操作系统中进程管理的一个重要内容。信号量的应用可以分为两大类,一是实现过程互斥,二是实现前趋关系。下面以信号量机制在进程同步问题中的应用为例,介绍案例教学法在操作系统课程教学中的应用。
  一、使用信号量实现互斥的案例
  在计算机系统中存在着许多资源,它们在一段时间内只允许一个进程访问,这类资源我们称之为临界资源或独占资源。很多硬件设备(如打印机)和队列、栈、变量等都属于临界资源。利用信号量机制可以解决多个进程对临界资源的互斥访问问题。
  (一)基本方法
  对于临界资源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)
  [作者简介] 夏春梅(1977-),女,山东济宁人,滨州学院讲师,主要研究方向:数据库技术,系统集成.
  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.

上一篇:关于优化高校师生关系的对策创新

下一篇:基于Logit对数线性模型的大类招生高校学生成绩的