进程管理
进程
描述程序的执行过程,是实现多任务操作系统的基础。
进程的概念
进程是一个可并发执行程序在一个数据集上的一次运行过程,简单地说,进程就是程序的一次运行过程。
进程与程序概念的区别
进程是程序的一次运行过程。(动态)
程序是进程的一个组成部分,是进程的执行文本。(静态)
此外,进程与程序不是一一对应的关系,一个进程可以顺序执行多个程序,一个程序可以对应多个进程(一个程序可以被多次运行,一个程序可以同时运行(多开))
程序的顺序执行
程序的各操作步骤之间是依序执行的,程序与程序之间是串行执行的,这种执行程序的方式就称为顺序执行。顺序执行是单道程序系统中的程序的运行方式。
程序的顺序执行具有如下特点:
- 顺序性:只有一个操作完成后才会进行下一个操作,一个程序全部执行结束才会执行下一个程序。
- 封闭性:程序在封闭的环境中运行,即程序运行时独占全部系统资源,只有程序本身才能改变程序的运行环境,因而程序的运行结果不受外界影响,结果只由程序本身决定。
- 可再现性:程序执行的结果与运行的时间和速度无关,结果总是可再现的,即无论何时重复执行该程序都会得到同样的结果。
顺序执行的缺点:系统资源利用率很低
程序的并发执行
同时有多个程序在系统中运行,系统资源利用率大大提高。
特点:
- 间断性:并发程序之间相互影响而相互制约,导致程序运行过程的间断。
- 没有封闭性:多个程序共享系统资源时,一个程序的运行可能受到其他程序的影响,其运行的过程和结果不完全由自身决定。
- 不可再现性:由于没有了封闭性,并发程序的执行结果与执行的时间以及执行的速度有关,结果往往不可再现。
并发执行的潜在问题(缺点)
容易导致程序的过程与结果受影响(同时读写文件,引发冲突)
进程的特性
- 动态性:进程由创建而产生,由撤销而消亡,因调度而运行,因等待而停顿。进程由创建到消失的全过程被称为进程的生命周期。
- 并发性:在同一时间段内有多个进程在系统中活动。宏观上是并发运行,微观上是交替运行。
- 独立性:进程是可以独立运行的基本单位,是操作系统分配资源和调度管理的基本对象。因此,每个进程都独立地拥有各种必要的资源,独立的占有CPU的运行。
- 异步性:每个进程都独立地执行,各自按照不可预知的速度向前推进。进程之间的协调运行由操作系统负责。
进程的基本状态
进程三个基本状态:
- 就绪态:进程分到了除CPU以外的所有资源(就绪队列)
- 运行态:进程已经获得CPU,正在运行
- 等待态:进程中某种资源不能得到满足,或希望的某事件尚未发生而暂停执行。(等待队列)
进程状态的转换
- 运行态->等待态:正在执行的进程因为等待某事件而进入等待队列,让出CPU资源。
- 等待态->就绪态:等待的进程获得所需资源,等待CPU,进入就绪队列。
- 运行态->就绪态:正在执行的进程时间片用完,或者有更高优先级的进程到来,则会进入就绪队列。
- 就绪态->运行态:处于就绪状态的进程,当被进程调度程序调度后,即进入运行态。
进程组成部分
进程由程序、数据、进程控制块3个基本部分组成。
程序是进程执行的可执行代码,数据是进程所处理的对象,进程控制块用于记录有关进程的各种信息。
进程映像(process image)
某个时刻的进程的执行内容(指代码和数据)
进程控制块(Process Control Block,PCB)
进程的档案,为管理进程而设置的一个数据结构,用于记录进程的相关信息。
PCB是进程的代表,在进程的生存期中,系统通过PCB来感知进程,了解它的活动情况,通过它对进程实施控制和调度。
PCB记录了有关进程的所有信息,主要包括:
- 进程描述信息:记录一个进程的标识信息和身份特征,如家族关系和归属关系等。通过这些信息可以识别该进程,了解进程的权限,以及与其他进程的关系。
- 进程控制与调度信息:进程的运行需要由系统进行控制和调度。进程控制块记录了进程的当前状态、调度策略、优先级、时间片等信息。
- 资源信息
- 现场信息:包括CPU各个寄存器的值。