编辑: yyy888555 | 2019-07-11 |
28 行,都应该有相同的执行结果. 2.1.2 程序的并发执行 1. 并发执行的概念 在顺序执行方式下,系统资源只为一个程序服务,系统管理程序较为简单,但是当一 个部件工作时,另两个部件均处于空闲状态,因此顺序执行程序时系统资源利用率不高. 现代操作系统为提高系统资源的利用率,提升系统吞吐能力,程序通常是以并发的方式执 行,如图 2-2 所示. 图2-2 程序的并发执行方式 当程序
1 执行计算操作时,输入设备可以给程序
2 使用,当程序
1 执行打印操作时, 可以让程序
2 执行计算操作,同时可以让程序
3 执行输入操作.从时间上看,3 个程序全 部都在系统中执行,虽然它们在执行不同的操作,3 种设备也得到了充分的利用. 另一种并发是在某道程序的几个程序段中,其中包含可同时执行或颠倒执行的代码, 例如: read(x);
read(y);
这两个语句执行时互不影响,它们既可同时执行,也可颠倒次序执行.也就是说,这 种语句同时执行或颠倒顺序执行不会改变程序执行结果.因此,可采用并发执行方式充分 利用系统资源以提高计算机的处理能力. 综上所述,程序的并发执行是指,若干个程序或程序段同时在系统中运行,这些程序 的执行时间是重叠的,即一个程序或程序段还未执行完毕,另一个程序或程序段已经开始 运行,这就是几个程序或程序段的并发执行. 并发执行的程序之间可以没有交互,也可以是有交互的.没有交互的程序并发执行表 示这些程序在执行过程中互不影响,例如没有共享变量或程序段,而反之就是有交互的,有 共享变量或程序段的程序之间并行执行时必须加以控制,以保证程序执行结果的正确性. 并发执行的程序只有严格地保证相互之间没有交互性,才可以并发执行.1966 年,
29 第2章进程控制 Bernstein 提出了程序可并发执行的条件,称为 Bernstein 条件: 假设任一程序语句 Pi,在执行过程中会涉及两个变量集合 R(Pi)和W(Pi)的操作,其中 R(Ti)={a1, a2,…, am}, aj(j=1, 2, … ,m)表示语句 Pi 在执行过程中必须进行读操作的变量集 合;
W(Ti)={b1, b2, … , bm}, bj(j=1, 2, … ,m)表示语句 Pi 在执行过程中必须进行写操作 的变量集合;
如果对语句 T1 和T2 在执行过程中满足 R(T1)∩W(T2)={φ},R(T2)∩W(T1) ={φ},W(T1)∩W(T2)={φ}同时成立,则语句 T1 和T2 是可以并发执行的. 2. 并发执行带来的影响 程序并发执行可以使系统资源的利用率得到提高,从而提高系统的处理能力,这是并 发执行的优势所在.当然,多个程序并发执行共享系统中的所有软硬件资源,这就对资源 的管理提出了较高的要求.若系统分配资源出现问题,将会使并发执行程序的结果出现混 乱.若并发执行的程序或程序段满足前面描述过的 Bernstein 条件,则认为不会对执行结果 的可再现性产生影响.但一般程序在执行时,系统要判断各条语句或程序段是否满足 Bernstein 的3个条件是相当困难的. 两个交互的并发执行的程序,它们之间的相互影响通常是不可预测的,甚至无法再 现.这是因为程序并发执行的相对速度不可预测,交互的速率不仅受处理器调度的影响, 还要受到与其交互的程序、资源等的影响,甚至受到无关程序的影响.因........