罗娇敏
摘要:操作系统课程内容涵盖计算机各类资源的管理,其中进程管理部分的同步和互斥是重点难点,学生很难掌握。该文通过引入生活实例,采用类比和启发式教学方法,有助于理解和掌握信号量机制的应用,而且能提高学生分析问题和解决问题的能力。
关键词:进程;同步;互斥;信号量
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2017)44-0255-02
一、引言
操作系统课程是计算机及相关专业学生的必修主干核心课程。作为一门原理性课程,其内容庞杂,涉及面广,概念多,理论性强,比较枯燥,而且很多概念和算法相当抽象[1]。尤其是进程管理中进程同步和互斥部分的内容,进程本身就是一个抽象概念,研究进程的并发执行控制的问题就更难理解。但该课程也有其特殊之处,学生每天都在接触操作系统,操作系统是人设计出来的,其中很多资源管理的方法又来源于我们日常生活对于事情的处理,所以如果能在授课过程中巧妙跟日常生活中的实例结合起来,通过类比和启发式教学方法调动学生学习积极性,学生就能自主将抽象的内容形象化,轻松愉快地理解问题掌握知识[2]。
二、教学思路
操作系统学习除了让学生掌握其原理外更重要的是培养学生运用计算机思维来解决问题的能力,而类比和启发式教学能很好地实现这个目标[3]。类比和启发式教学是指教师根据教学目标,遵循教学规律,在教学过程中依据学习过程的客观规律,引入具备相似特点的实例,通过引导、指导、开导、启示,激发学生的学习兴趣,使学生能主动、自觉、积极地思考和学习,并主动实践的一种教学方法。该方法在应用时首先应该明确该知识点要解决的问题,确认教学目标;接着选择日常生活中与该问题有共通点的情境,并提出思考性问题;然后引导学生对生活中类似的情境思考和寻找解决问题的方案,之后启发学生运用思考出的方案思路解决操作系统中的问题,最后进行反馈和总结。该教学法的“启”体现的是教师的主导导向地位,“发”体现的是学生在教学中自主的认知方法。下面以信号量为例进行阐述。
三、信号量机制
进程同步和互斥是多进程并发执行时两种典型制约关系,用于解决并发执行的进程之间的运行协调问题。信号量机制是操作系统中一种有效的进程同步机制。对于信号量这个名词,首先引导学生对于信号量的联想。讲到信号量,很多学生会脱口而出提到红绿灯,实际上进程同步中信号量就相当于交通系统中的红绿灯。红绿灯是通过信号灯的颜色变化来控制各个方向上车辆的走走停停,也就是我们耳熟能详的“红灯停,绿灯行”。如果用计算机能识别的两个数0和1分别对应红灯和绿灯,红绿灯就是通过一个数值的变化来控制车辆运行,而信号量就是通过数值的变化来控制进程的运行。接下来对于操作系统进程同步的信号量机制就很好理解:把车辆看成计算机系统中运行的进程,红绿灯机制就是进程并发执行的信号量机制。这里的信号量实际是一个整形的变量S,操作系统就是通过该S的值的变化来控制进程运行的走走停停。变量S的值的变化可以通过三个操作完成:初始化、P操作和V操作。P操作使变量值减1,如果此时值小于0,则表明没有可用资源,进程必须等待,所以P操作相当于申请一个资源;反之V操作使变量值加1,此时如果值小于等于0,则表明有进程正在等待该资源的使用,需要唤醒等待队列里的第一个进程,所以V操作相当于释放一个资源。用信号量进行进程同步和互斥控制,就是在程序合适的地方添加PV操作,使进程按照需要的顺序运行或使用资源。
四、信号量控制进程互斥
进程互斥是由于共享资源引起的一种间接制约关系,解决的是进程互斥使用临界资源的问题。根据这个特点,可以引导学生列举日常生活中需要互斥共享资源的实例,而这种实例比比皆是。比如餐具的使用、教室的使用、教学楼洗手间的使用等。接下来就以教学楼洗手间使用为例讲解互斥控制过程:对于洗手间每个位置一段时间只允许一个人使用,每个人在进去前都应该先敲门,如果有人正在使用就要等待,没人就推门进去,同时把门锁起来;接下来可以安心使用这个资源,整个过程因为门是锁好的不可能有其他人进来打扰;使用完成后把门打开离开,让后面的人能继续使用该资源。在这个例子中,洗手间就是一种典型的临界资源,一次只允许一个人使用,洗手间的使用过程也正好说明了对临界资源使用的控制。所有进程在使用临界资源之前都应该先申请,根据资源状态进行相应操作:资源如果已经被使用,申请进程就应该等待;资源如果空闲申请进程就可以使用,同时要置资源状态为忙碌;使用完成后释放资源,以便其他的进程能够继续使用。根据该流程,一般把临界资源的使用分成三段:进入区、临界区和退出区。设置一个信号量S来代表该类资源,进入区就是申请资源,即P(S);退出区相当于释放,即V(S)。信号量对于进程互斥控制的模型就可以归纳如下:多个进程对临界资源进行互斥使用时,设置一个信号量S初始值置为1,每个进程使用资源前先执行P(S),使用以后执行V(S)。即:Pi(){P(S);code;V(S)}。
五、信号量控制进程同步
进程同步是由进程相互合作引起的,解决的是进程相互合作过程中执行的时序控制问题。运动会上4×100米接力就是典型的需要相互合作完成比赛的例子:四个选手跑步按照严格的先后顺序进行,前一个选手的接力棒传给后一个选手时后一个选手才可以起跑。在这个过程中接力棒实际上就是两个选手合作的信号量,前一个选手到达目的地后交出接力棒相当于释放资源,后一个选手起跑之前要取得接力棒相当于申请资源。以前两个选手起跑为例,第一个选手听到枪响就起跑,完成赛程后把接力棒递交给第二个选手,第二个选手才可以起跑。把这两个选手看作两个进程P1和P2,P1一定要先于P2执行,根据上述分析可以设置一个信号量S用来表示P2是否可以执行,s的初始值为0,P1执行完以后V(S),P2执行之前P(S)。由于信号量的初始值为0,如果第二个选手在第一个选手没有到达的情况下想起跑,会因为执行P(S)后s<0而阻塞,只有当第一个选手到达执行V(S)后才能被唤醒执行,从而达到控制选手跑步顺序的目的。综上,我们总结出信号量进行进程同步控制的模型如下:两个并发进程P1和P2,P1要先于P2执行,则可设置一个信号量Semaphore s,s初始值为0,其同步控制程序如下:p1(){code1;V(s) } ; p2(){P(s); code2}。
六、结束语
进程同步和互斥是操作系统课程中的重点难点,通过与生活中具体的实例结合起来,运用启发和类比的方法,让学生能生动理解其中的控制过程,对于知识点的掌握更容易。实践证明,该教学法使学生感到亲切且易于思考,教学效果明显提高。
参考文献:
[1]汤子瀛,哲凤屏,汤小丹.计算机操作系统[M].西安:西安电子科技大学出版社,2001.
[2]韦婷.启发式教学在操作系统课程中的应用[J].电脑知识与技术,2011,7(13):3223-3224.
[3]金雪云.啟发式教学法在计算机操作系统课程教学中应用的研究[J].全国计算机新科技与计算机教育学术大会,2010.endprint