进程以及他的扩展--线程是计算机的活动计算单元,进程可以用看作是执行者的程序,需要占用一定的资源,如CPU,内存,文件和I/O设备,所以进程是分配资源的基本单位
2.1 进程的引入
2.1.1 单道程序的顺序执行
1. 程序的顺序执行
程序执行时有先后顺序,只能一个一个的进行,即每个时刻最多执行一个操作
如,某个用户的计算程序分为三个程序段,首先输入该用户的程序和数据,然后进行计算,最后输出程序运行的结果。这一个完整的程序运行后才能再去进行下一个程序。
2.程序顺序执行的特征
(1)顺序性。
程序在处理机上执行时,只有前一个操作结束后,才会进行执行下一个操作。
(2)封闭性。
程序是在封闭的环境下运行的,程序在执行时独占系统中的全部资源。
(3)可再现性
当程序被重复执行时,只要初始条件相同,其执行结果也一定不变。
2.1.2 多道程序的并发执行
单道程序系统确定资源浪费,效率低下,现代广泛用多道程序设计技术,多道程序设计是在内存中存放多道程序,他们在操作系统的控制下在cpu上交替运行。
1.程序的并发执行
为了提高计算机内部的资源利用率,提高计算机系统的处理能力,并发处理技术得到广泛的应用,在多数计算中,仅要求部分操作是有序的,有些却可以并发执行。
如:对于一个程序,输入数据I、计算操作P、输出数据操作O 三者有这严格的顺序关系,必须执行。但对于多个程序来说,各个程序之间的数据操作,计算操作,输出操作没有顺序关系,可以使他们并发执行。例如,在第一个程序进行数据操作之后做计算操作的同时,可以进行第二个程序的输入数据操作,从而第一个程序的计算操作与第二个程序的输入操作并发执行;同样,第一个程序输出操作时,第二个程序可以进行计算操作,第二个程序进行计算,第三个程序可以输入数据。
2.程序并发执行的特性
(1)间断性
程序在并发执行时,由于它们共享系统或为完成同一任务而相互合作,使得并发程序之间形成相互制约的关系。
当计算程序完成第一个程序的计算后,若输入程序还没有完成第二个程序的数据处理,则计算程序无法进行第二个程序的计算,致使计算程序暂时停止运行,同样的,输出操作与计算之间也会致使暂停运行。但当暂停运行因素消失后,又可恢复运行。
相互制约导致并发执行的程序具有“执行--暂停--执行”的这种间断性的规律。
(2)失去封闭性
程序并发执行时,多个程序共享系统中的资源,而这些资源被多个程序来回的改变,进而程序的执行失去了封闭性。
(3)不可再现性
程序并发执行,由于失去了封闭性,也将失去可再现性
如:两个程序段S₁和S₂,它们共享了一个系统变量n,n初值为5.
S₁ : n=n+1;
S₂ : printf(n);
若S₁先执行,S₂后执行,则打印结果为6。若S₂先执行,S₁后执行,打印结果为5,其初始条件并未改变,而结果却不同,使得程序失去了可再先现性。
2.1.3 程序并发执行的条件
Bernstein条件
2.1.4 进程的概念
(1)进程的动态性和程序的静态性。
进程是程序的执行过程。动态性是进程的基本特性,进程是有一定的生命期的。程序是一组有序指令的集合,是静止的实体。
(2)进程的并发性和程序的顺序性
进程能真实的描述并发执行,而程序没有这种特性。进程是一个能独立调度并能和其他进程并行执行的单位,它能确切的描述并发活动,而程序不能作为独立调度执行的单位。通常程序里的语句是顺序执行的。
(3)进程的暂时性和程序的永久性。
进程是暂时的,它是程序的执行过程,程序执行完毕,进程也就撤销了。而程序不管它是否执行,都可以永久保存。
(4)结构特征
结构上看,进程是由程序、数据和进程控制块三部分组成,程序不是。
(5)进程与程序是密切相关的
一个进程可以涉及一个或多个程序的执行,通过多次执行,一个程序可对应多个进程。
2.2.1 进程的基本状态
1. 进程的3中基本状态
1)就绪状态
2)运行状态
3)阻塞状态
2. 3种基本状态的转换
1)就绪状态运行状态
2)运行状态就绪状态
3)运行状态阻塞状态
4)阻塞状态就绪状态
3.创建状态和退出状态
设立这两种状态便于操作系统对进程进行管理
创建状态:操作系统为新进程分配资源,创建zh
退出状态:操作系统回收进程的资源,撤销PCB
创建态就绪态:系统完成创建进程的相关工作
运行态退出态:进程运行完成,或者运行进程中出现不可恢复的错误
2.2.2 进程的挂起状态
1. 挂起状态的引入
1)内外存对换的需要
缓和内存紧张的状态,将内存中处于阻塞状态的进程换至外存
2)用户调试程序的需要
调试程序时,将运行的程序暂停下来,以便对进程的地址空间进行读写,
3)实时系统中调节负载的需要
当实时系统负载过高时,可能会影响到系统对实时任务的控制和处理,这时系统需要把不太重要的进程挂起,以保证系统对紧急事件的及时处理。
2. 进程状态的转换