您现在的位置:学赛首页 > 研究生院 > 软件学院 > 正文
操作系统课程第三章-进程和线程的描述与控制[1]
http://www.educity.cn 作者:研究生院 来源:学赛网 2008年4月16日 发表评论 进入社区

  进程是计算机进行资源分配和独立运行的基本单位。

  3.1 进程的引入

  引入进程是为了使多道程序并发执行。

  1.程序的顺序执行

  一个程序通常由若干个程序段所组成,它们必须按照某种先后次序来执行,仅当前一个操作执行完后才能执行后继操作,这类计算过程就是程序的顺序执行过程。

  例如:先输入→再计算→最后输出,即:I→C →P。

  程序顺序执行时的特征

  顺序性:处理机的操作严格按照程序所规定的顺序执行,即每一个操作必须在下一个操作开始之前结束。

  封闭性:程序一旦开始运行,其执行结果不受外界因素影响。

  可再现性:只要程序执行时的初始条件和执行环境相同,当程序重复执行时,都将获得相同的结果。

  2.程序的并发执行

  程序的并发执行是指若干个程序(或程序段)同时在系统中运行,这些程序(或程序段)的执行在时间上是重叠的,一个程序(或程序段)的执行尚未结束,另一个程序(或程序段)的执行已经开始。

  前驱图

  前驱图是一个有向无循环图,图中的每个结点可以表示一条语句、一个程序段或进程,结点间的有向边表示语句或程序段的执行次序。

  程序并发执行例

  进程1、2、3并发执行。对每个进程而言,其输入、计算和输出这三个操作必须顺序执行。它们之间存在如下先后关系:

  I1先于C1和I2 , C1先于P1和C2 , P1先于P2

  I2和C1 , I3、 C2和P1可以并发。

  与时间有关的错误例

  程序并发执行时可能出现与时间有关的错误。

  例

  进程1:r1=x; 进程2:r2=x;

  r1++; r2++;

  x=r1; x=r2;

  设在两进程运行之前,x的值为0。则两进程运行结束后,x值可为:

  Bernstein条件

  读集:语句执行期间要引用的变量集合,记为R(Si)={a1,…,am}

  写集:语句执行期间要改变的变量集合,记为W(Si)={b1,…,bn}

  Bernstein条件能保证两条相继的语句并发执行而不会产生与时间有关的错误:

  R(Si)∩ W(Sj)={ }

  R(Sj)∩ W(Si)={ }

  W(Si)∩ W(Sj)={ }

  例

  考虑下面是条语句:

  S1:a=x+y S2:b=z+1

  S3:c=a-b S4:d=c+1

  R(S1)={x,y} R(S2)={z} R(S3)={a,b}

  W(S1)={a} W(S2)={b} W(S3)={c}

  因R(S1)∩ W(S2)∪R(S2)∩ W(S1)∪W(S1)∩W(S2)={ },故S1和S2可以并发执行 。

  因R(S2)∩ W(S3)∪R(S3)∩ W(S2)∪W(S3)∩W(S2)={b},故S2和S3不能并发执行 。

  并发语句的描述方式

  cobegin

  S1;S2;…Sn;

  coend

  对应的前驱图如右,其中S0和Sn+1分别是cobegin和coend语句前后的两条语句。

  程序并发执行时的特征

  间断性:并发程序具有“执行---暂停----执行”这种间断性的活动规律。

  失去封闭性:多个程序共享系统中的资源,这些资源的状态将由多个程序来改变,致使程序之间相互影响。

  不可再现性:在初始条件相同的情况下,程序的执行结果依赖于执行的次序。

  并发程序的其他特征

  资源分配动态性:多道程序在运行过程中可根据需要随时提出分配资源的请求。

  程序并发执行的相互制约:并发程序执行时相互影响,相互制约。其相互制约关系分为:

  直接制约:合作进程之间的相互制约。

  间接制约:因资源共享产生的相互制约。

  相互通信的可能:多个进程之间可能需要相互传递信息。

  同步与互斥的必要:并发进程之间需要调整相对执行速度,许多资源需要互斥使用。

[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]