李佳静 徐慧 朱红
摘 要:计算机操作系统原理课程是计算机专业的核心课程,其中“进程管理”部分关于如何正确实现进程互斥和同步方法一直是教学中的重点和难点。在对于进程的同步和互斥问题中,对加锁法采用了启发式教学,从时间相关的错误、不公平问题、效率问题和表示能力问题等几个方面层层深入,让学生了解到加锁算法在实际应用中的不足之处。进一步引导学生思考信号量机制引入的必要性和先进性,对于帮助学生理解和掌握操作系统的进程管理机制起到了良好效果。
关键词:操作系统原理 启发式教学 加锁法 信号量
中图分类号:G64 文献标识码:A 文章编号:1672-3791(2015)08(a)-0122-02
操作系统是当代计算机软件系统的核心,是计算机系统中的核心和基石,它管理和控制着计算机系统中的软、硬件资源高效工作,可以说操作系统是计算机系统的灵魂。操作系统课程主要学习操作系统的工作原理和工作方式,是计算机专业的核心课程, 也是进行系统软件开发的理论基础。
在“计算机操作系统原理”课程中,以操作系统的进程管理、处理机管理、内存管理、文件管理和设备管理作为主线进行组织。其中操作系统的进程管理,是现代操作系统的重要功能,也是之后处理机管理、内存管理等章节的基础,同时更是后续并行计算等重要课程的前提。并发系统中诸进程由于资源共享、进程合作,而产生进程之间的相互制约,操作系统为了提高系统资源的利用率,保证运行结果的可再现性,采用了信号量机制。因此,对于信号量机制的理解是学习进程管理中的关键。为了帮助学生对信号量机制的必要性和先进性的理解和掌握,在教学中采用对比分析的启发式教学,对加锁法进行了条分缕析,将加锁法和信号量法进行了深入对比,取得了良好效果。
下面给出关于加锁法的启发式教学中的关键问题的解决过程。
1 加锁法启发式教学
1.1 概念准备
加锁法的定义:对临界区加锁以实现互斥,在使用之前为了防止别的进程进入,设置关锁;若使用完后退出临界区时,设置开锁,这样其他用户就可以使用了。
加锁法引入的时机:给出时间相关的错误和临界区这两种概念,以及临界区使用的四个基本准则之后。
1.2 时间相关的错误
问题提出:在表1中存在P1和P2两个进程。P1和P2分别在t1和t2时刻获得CPU并测试锁,t3和t4时刻P1和P2设置锁。表1说明加锁法可能导致两个进程P1和P2同时进入临界区。该表格说明了,加锁方法没能保证临界区使用中“忙则等待”的这条准则。
启发式提问:为什么会造成这种情况?
启发式思考:测试和设置的过程不是原子过程,中间可以被其他进程打断。
启发式解决方案:测试与设置指令TS(test and set),其读写操作由一条指令完成,因而保证读操作与写操作不被打断。
1.3 不公平问题
问题提出:表2中进程P1在t0时刻进入临界区,t1时刻退出临界区,t2时刻再次进入临界区,而进程P2在t2时刻没有获得CPU,无法正确判断临界区的状态,从而不能进入临界区。表2说明加锁法可能导致进程P2一直无法获得临界区,处于饥饿状态。违反了临界区使用原则中的“等则有限”的原则。
启发性提问:引起不公平现象的原因是什么?
启发式思考:因为每个进程能否进入临界区依靠自己的测试判断,进程调用lock过程去测试相应的锁定位,没有获得执行机会的进程无法(正确地)判断,因此出现不公平现象。
启发式解决方案:由一个更高权限的进程来进行资源的测试和分配。
1.4 效率问题
问题提出:对于加锁方法,循环测试锁定位将损耗较多的CPU计算时间,如果一组并发进程的进程数较多,且由于每个进程在申请进入临界区时都得对锁定位进行测试,这种系统资源的开销很大。
启发式思考:如何将CPU从循环测试中解放出来。
启发式解决方案:参考火车调度中的信号机制。
1.5 表示能力问题
问题提出:加锁方法能表示几种状态?如何表示有多少个进程在等待该资源?在“开”锁之后如何调度这些等待进程?
启发式思考:如果表示多种状态?
启发式解决方案:参考图书馆中预约图书的算法。
2 结语
在教学中,结合图表通过对加锁法中以上几个关键问题进行深入分析,对于每一个关键问题都首先给出了现象,结合临界区的使用准则提出在加锁法可能存在的问题,启发学生思考并给出解决方案。在这个过程中,学生们理解了由进程自身来完成加锁和解锁,是一种看上去直觀简单,但是在实现中由于效率、表示能力以及并发环境下间断性和失去具有封闭性等原因,而不可行的方法。进一步,引导学生参考生活中常见的管理算法,设计一种更合理、更有效的进程互斥和同步的管理机制。这为之后信号量机制的学习奠定了良好的基础。
参考文献
[1] 刘洪波,张俭鸽.启发式教学在操作系统教学中的应用[J].时代教育,2011(9):199.
[2] 李景峰,刘伟,郝耀辉,周会娟。操作系统课程的启发式教学研究与探讨[J].计算机教育,2010(8):87-90.
[3] 冯丽萍,焦莉娟.基于启发式的“操作系统”课程教学改革探讨[J].福建电脑,2015(5):202.
[4] 时华.”启发式教学”在计算机操作系统中的应用[J].科技信息,2009(29),512.
[5] 李华,高文宇.计算机操作系统启发式教学研究[J].计算机教育,2013(3):62-65.
[6] 帖军,张宝哲.以负载均衡和数据缓存为例谈操作系统启发式教学[J].现代计算机(专业版),2011(30):18-20.