1. 单道程序系统与多道程序系统
1.1单道程序系统
单道程序系统在内存中每次仅存在一个程序,该程序运行时独占整个系统的资源,实际上它只会顺序的使用其中的一部分。因此在某一时刻,系统的各个部分只有一部分在工作,这造成了资源浪费从而利用率低。
1.1.1程序顺序执行的特征:
- 顺序性: 由图可知,在程序内部I、C、P操作的顺序是不可颠倒的,各程序之间的顺序也不可以颠倒,需严格按照程序所规定的顺序执行。
- 封闭性:程序在运行时,独占全部系统资源,只有程序本身才能改变系统资源的状态。
- 可再现性: 由于程序不受外部影响,只要初始条件相同,运行的结果就一定相同。
1.2多道程序系统
为了减少单道程序系统的利用率低的情况,引入了多道程序设计技术。多道程序设计指允许多道程序同时进入内存,并允许它们共享资源、并发执行的程序设计技术。采用这一技术的系统称为多道程序系统。 多道程序系统是现代操作系统所采用的最基本、最重要的技术。
在多道程序系统中,程序是并发执行的。
由图可见,各程序的内部操作I、C、P操作未颠倒,但程序之间不再是严格的串行次序。如,当程序1在进行运算操作时,很明显程序2的输入操作不会影响程序之间的关系。因此I、C、P操作在时间上可以重叠。 显然,并发执行的程序失去了封闭性和可再现性。 举个例子,I1与I2都取的同一地址的数值,本意是想让I2是取的程序1运行结束后的。而当C1正在进行运算时还未来得及将运算结果写回,I2却已将还未处理的数据取出进行计算造成了结果的错误。
1.2.1程序并发执行的条件
假设有以下几条语句
语句 | 读集 | 写集 |
---|---|---|
P1:a = x + y; | R(P1) = {x,y} | W(P1) = {a} |
P2: b = z + 1; | R(P1) = {z} | W(P2) = {b} |
P3: c = a + b; | R(P3) = {a,b} | W(P3) = {c} |
P4:d = c -2; | R(P4) = {c} | W(P4) = {d} |
如果两个程序P1,P2满足Bernstein条件,它们便能并发执行,否则不能:
( R ( p 1 ) ∩ W ( p 2 ) ) ∪ ( R ( p 2 ) ∩ W ( p 1 ) ) ∪ ( W ( p 1 ) ∩ W ( p 2 ) ) = { } (R(p1) \cap W(p2)) \cup (R(p2) \cap W(p1) )\cup (W(p1) \cap W(p2)) = \{\} (R(p1)∩W(p2))∪(R(p2)∩W(p1))∪(W(p1)∩W(p2))