本章考核知识点 :1、进程的顺序性与并发性 2、与时间有关的错误 3、相关临界区 4、进程的互斥 5、进程的同步 6、进程通信 7、线程的概念
本章自学要求 :理解“进程”是操作系统中的基本执行单位,在多道程序设计的系统中往往同时有许多进程存在,它们要轮流占用处理器。这些交叉执行的并发进程相互之间可能是无关,也可能是相关的。当并发进程竞争共享资源时会出现与时间有关的错误,因此,应采用进程同步与互斥手段使其合理使用共享资源,以保证系统安全。当进程间必须通过信息交换进行协作时,可用进程通信的方式达到目的。
重点 是:分析与时间有关的错误;用PV操作实现进程的同步与互斥;用信箱实现进程通信。
一、进程的顺序性与并发性( 领会 )
有人说,在程序中不是有跳转语句和重复语句,怎么就是顺序执行?注意,这里是指进程在处理器中的执行,因为处理器每次只能执行一个操作,因此每条指令必须按顺序进入CPU执行,假使有一条指令是跳转的,那么执行本指令后,会取出跳转目的地址的指令进入CPU运行,这个顺序是程序规定的。所以对CPU而言,进程总是按顺序执行。
进程是一个程序在一个数据集合上的一次执行,同一个程序和同一个数据集的运行结果必然是相同的。这就是可再现性。
同时执行并不是真的同时,因为任一时刻CPU中只能有一个进程运行。
1、进程的 顺序性 :任何进程在顺序的处理器上的执行是严格按照顺序进行的,这就是进程的顺序性。当一个进程独占处理器顺序执行时,具有两个特性: 一、封闭性 二、可再现性 .
2、进程的 同时执行 :在多道程序设计系统中,一个进程的工作没有全部完成之前,另一个进程就可以开始工作,它们的执行在时间上重迭的,我们把它们称为是“可同时执行的”。
3、进程的 并发性 :若系统中存在一组可同时执行的进程,则说该组进程具有并发性,并把可同时执行的进程称为“并发进程” .
4、并发进程间的关系:并发进程相互之间可能是 无关的 ,也可能是 交往的 .如果一个进程的执行不影响其他进程的执行,且与其他进程的进展情况无关,即它们是各自独立的,则这些并发进程相互之间是无关的。如果一个进程的执行依赖其他进程的执行,则这些并发进程之间是有交往的。
二、与时间有关的错误( 简单应用 )
1、并发进程的执行速度取决于自身和进程调度策略。一个进程运行时会被中断,且断点是不固定的,一个进程被中断后,哪个进程可以运行,被中断的进程什么时候占用处理器,是与进程调度策略有关的。因此进程的执行速度不能由自己决定。
2、并发进程交替使用共享资源时会出现与时间有关的错误。 由于共享资源的原因,加上进程并发执行的随机性,一个进程对另一个进程的影响是不可预测的。造成不正确的因素与进程占用处理器的时间、执行的速度以及外界的影响有关。因此被称为与时间有关的错误。
3、分析并发进程中与时间有关的错误,请理解教材上的例子。
三。相关临界区( 领会 )
1、 临界区 的定义:并发进程中与共享变量有关的程序段称为“临界区”
2、什么是 相关临界区 : 相关临界区是指 并发进程 中涉及到 相同变量 的那些 程序段 .
3、对相关临界区的管理要求。
1) 一次最多让一个 进程在临界区执行,当有进程在临界区时其他想进入临界区执行的进程必须等待。
2)任何一个进入临界区执行的进程必须在 有限的时间内退出 临界区,即任何一个进程都不应该无限地逗留在自己的临界区。
3)不能强迫一个进程无限地等待进入它的临界区,即有进程退出时应 让一个等待进入临界区的进程进入 它的临界区。
四、进程的互斥( 综合应用 )
1、 进程互斥 的含义:进程的互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多只允许一个进程去使用,其他要使用该资源的进程必须等待,直到占用资源者释放了该资源。 PV操作是两个过程,由他们两个来控制一个信号S,假设S是红灯的个数。
每个进程进入临界区前都要先执行P操作。退出临界区时执行V操作。用下面的比喻很容易理解:
临界区门前有棵树(S)
用来挂红灯
进程想进CPU的门
先得上树取盏灯(调用一次P操作)
取下一个去敲门(S=S-1)
如果树上没灯取(S≤0)
树说欠你一盏灯(S为负时)
没辙只好外边排队等( W ait (S))
得灯进程续运行
运行完了要出门(调用一次V操作)
马上还回一盏灯(S=S+1)
若有进程在催债(S≤0)
放个进去事完成( R elease (S))
2、实现进程互斥的工具——PV操作。
PV操作 是由两个操作,即P操作和V操作组成。P操作和V操作是两个在信号量上进行操作的过程。假定用S表示信号量则把这两个过程记作P(S)和V(S),它们的定义如下: Procedue P(Var S: Semaphore); begin S:=S-1; if S 0 then W(S) end; {P} Procedue V(Var S: Semaphore); begin S:=S+1; if S =0 then R(S) end; {V}
为了确保PV操作自身的正确执行,因此P(S)和V(S)操作中不可中断,这种 不可被中断的过程称为“原语 ”。
3、用PV操作管理相关临界区的一般形式
一个信号量与一组涉及共享变量的相关临界区联系起来,信号量的初值定为“1”
任何一个进程要进入临界区前先调用P操作,执行临界区的操作后,退出临界区时调用V操作。
由于信号量的初值为“1”,P操作起到了限制一次只有一个进程进入临界区的作用,其余进程欲进入临界区必须符合对临界区管理的第一个要求,即一次最多让一个进程在临界区执行。进程退出后执行V操作,若有进程在等待则释放一个进程,这样就达到了对临界区管理的第二个和第三个要求(即不能无限逗留也不能无限等待)。
4、分析进程互斥问题并用PV操作实现进程互斥。