张霞 谷淑化 张求明
摘 要:操作系统是信息相关专业的重要的核心课程之一。处理机管理部分是操作系统课程中的重中之重,处理机管理主要归结为对进程的管理。而进程同步问题是进程管理中的重要部分。一直以来,进程同步问题都是操作系统教学中的重点和难点。该文针对合作进程的执行顺序类进程同步问题探讨操作系统课程的教学方法,总结教师在教学实践当中的宝贵经验,旨在提高学生对用信号灯机制解决进程同步问题的理解和掌握。
关键词:操作系统;进程同步;合作进程的执行顺序;信号灯;P操作;V操作
中图分类号:TP316 文献标识码:A 文章编号:1009-3044(2015)09-0183-02
1引言
操作系统作为信息类相关专业的核心课程,课程内容庞杂、涉及面广、知识点多、实践性强,概念多而抽象,不容易理解。学生很难掌握一些重要知识点。因此需要加强重要知识点的教学方法研究,以提高教学质量。
进程同步是操作系统课程中处理机管理的核心问题之一,是操作系统的核心知识点,是教学过程中的重点和难点,也是考研的重点考核内容,因此学生能否很好地理解并掌握这部分内容是影响教学效果的关键。
在多年的操作系统课程的教学实践中,信号灯和P、V操作问题一直是困扰老师和学生的一个难点。概念很容易讲,老师很清楚如何去解决,但如何让学生很轻松容易地去理解和解决类似的问题,这是操作系统教学和学习过程中的一个难点。
本文针对进程同步问题探讨操作系统课程的教学方法,总结教学实践中的宝贵经验,旨在提高学生对用信号灯机制实现进程同步问题的理解和把握。
2 进程同步的基本概念
2.1 进程同步
所谓进程同步就是并发进程在一些关键点上可能需要相互等待与互通消息,这样的相互制约关系称为进程同步。同步意味着两个或多个进程之间根据它们一致同意的协议进行相互作用。
2.2 进程同步的基本类型
在操作系统中,有各种各样进程同步,按特点不同一般可将同步问题分为两类:
(1)各进程合作完成某工作的逻辑顺序;
(2)对系统资源的共享的合作进程的同步。
本文主要讲解第一类进程同步问题的解决方法。
3 信号灯的基本概念
信号灯的概念是由荷兰人Dijkstra于1968年提出的,这个时期正是操作系统形成的活跃时期。
他把互斥的关键概念抽象到信号灯这个概念中。信号灯是一个被保护的变量,只有P操作、V操作和一种称为信号灯初始化操作才能访问和改变它的值。信号灯是一个确定的二元组(s,q),s 是一个具有非负初值的整型变量,q是一个初始状态为空的排队站。创建信号灯时,应准确说明信号灯 s的意义和初值 (这个初值绝不能为负值)。每个信号灯都有一个队列,其初始状态为空。
P操作:提出申请,检测所需信号是否到达,有可能使一个进程转到等待状态。
(1)s值减1;
(2)若相减结果大于等于0,则进程继续执行;
(3)若结果小于0,则该进程挂起。
V操作:释放信号,有可能要去唤醒一个处于等待状态的进程。
(1)s值加1;
(2)若相加结果大于0,进程继续执行;
(3)否则,唤醒一个(或多个)等待该信号灯的进程,然后本进程继续执行。
4 用信号灯解决进程同步的方法
4.1 分析进程同步关系
前趋图是一种有向无环图,可以很好地描述各进程在关键点上的同步关系。每个进程在前趋图中都跟其它进程有相互联系,有其直接前趋、直接后继。如图1所示P3的直接前趋是P1和P2,P3进程必须在P1和P2进程执行完毕才能开始执行,否则转等待;P3的直接后继是P4,也就是说P4进程的直接前趋是P3进程,P4进程必须在P3进程执行完毕才能开始执行,否则转等待。
4.2 信号灯的设置
在前趋图的每一条弧上分别设置一个信号灯,分别代表前一个进程没有完成,后面一个进程就不能开始。
4.3 信号灯值的设置
合作进程必有开始和结束,前面的未结束后面的就不能开始,所以每个信号灯的值都设置为0。
4.4 程序描述
主程序如下:
main()
{
定义若干初值为0的信号灯;
cobegin
P1();
P2();
P3();
……
Pi();
……
coend
}
各进程的程序描述:
对于前趋图中的任意进程Pi(i=1……n),我们可以分离出进程结点以及与之相关联的所有关系如图2所示,其中:
结点Pi表示Pi进程本身要完成的主要工作;
箭头指向结点Pi的弧表示Pi结点有限定它运行的直接前趋,弧上的信号灯是Pi前趋结点完成后应该发送给Pi进程的完成信号;
箭头从结点Pi引出的弧表示Pi结点有它限定运行的直接后继,弧上的信号灯是Pi结点完成后应该发送给Pi后继进程的完成信号。
程序描述如下:
Pi()
{
P(sa1);......P(sam); /*依次检查Pi的直接前趋是否执行完毕,若没有,则等待在相应信号灯的队列上。如果Pi进程没有直接前趋,则此处没有P操作*/
Pi进程要完成的主要工作;
V(sb1);......V(sbn); /*依次向Pi的后继进程发送完成信号。如果Pi进程没有直接后继,则此处没有V操作*/
}
5 信号灯在解决进程同步之合作进程的执行顺序问题中的具体应用
问题描述:P1、P2、P3、P4进程的同步关系如图1所示。
5.1 分析同步关系
前趋图关系显示P3进程必须在P1和P2进程执行完毕才能开始执行,否则转等待;P4进程必须在P3进程执行完毕才能开始执行,否则转等待。
5.2 信号灯设置
每条弧上分别设置一个信号灯如图3,s13是表示P1完成后通知P3进程开始的信号灯;s23是表示P2完成后通知P3进程开始的信号灯;s34是表示P3完成后通知P4进程开始的信号灯。
5.3 信号灯初值设置
所有信号灯初值为0。
5.4 程序描述
主程序:
main()
{
int s13=0;
int s23=0;
int s34=0;
cobegin
P1();
P2();
P3();
P4();
coend
}
各进程的程序描述:
对于前趋图中的任意进程P1、P2、P3、P4,我们可以分离出进程结点以及与之相关的所有关系如图4所示。各进程对应的程序描述如下:
6 结束语
信号灯机制是操作系统中实现并发进程执行的有效方法。用信号灯机制可以有效地解决进程同步与互斥问题,但这一知识点的理解和掌握并不容易。
本文着重介绍了在操作系统课程的教学过程中的一种很好的教学方法。应用一种公式法则来讲解用信号灯机制解决进程同步之合作进程的执行顺序类问题这一核心知识点,学生普遍感觉利用这种求解思路和求解方法能够比较容易和熟练地解决这类问题,反映良好。
参考文献:
[1] 庞丽萍.操作系统原理(第四版)[M].武汉.华中科技大学出版社,2008 .
[2] 庞丽萍,阳富民.计算机操作系统(第2版)[M].北京.人民邮电出版社,2014 .
[3] 汪国安,等.计算机操作系统课程及考研辅导[M].北京.机械工业出版社,2004.
[4] 曾平,李春葆.操作系统——习题与解析[M].北京.清华大学出版社,2001.
[5] 曾平,曾林.操作系统习题与解析(第2版)[M].北京.清华大学出版社,2004.