一、为什么需要进程
操作系统必须全方位地管理计算机系统中运行的程序,因此操作系统为正在运行的程序建立一个管理实体-进程。
二、进程的概念
进程(Process)是一个具有一定独立功能的程序关于某个数据集合的一次运行活动
进程是操作系统进行资源分配和调度的一个独立单位。
三、进程的组成
进程包含5个实体:
(OS管理运行程序的)数据结构P
(运行程序的)内存代码C
(运行程序的)内存数据D
(运行程序的)通用寄存器信息R
(OS控制程序执行的)程序状态字信息PSW
按照数据可以划分:
程序文本,通常是机器语言的指令序列。
程序相关的数据,包括静态数据(编译时分配)和动态数据,后者包括运行时的栈和堆。
任何等待中的IO状态。例如,如果进程正在等待从磁盘中读取的数据,或者从网络到达的数据包,这些操作的状态也是进程的一部分。
程序的硬件状态,这包括储存在寄存器中的数据,状态信息,以及程序计数器,它表示当前执行了哪个指令。
四、进程的特性
1、动态性
动态性是进程的最基本特征,它是程序执行过程,它是有一定的生命期。它由创建而产生、由调度而执行,因得不到资源而暂停,并由撤消而死亡。而程序是静态的,它是存放在介质上一组有序指令的集合,无运动的含义。
2、并发性
并发性是进程的重要特征,同时也是OS的重要特征。并发性指多个进程实体同存于内存中,能在一段时间内同时运行。而程序是不能并发执行。
3、独立性
进程是一个能独立运行的基本单位,即是一个独立获得资源和独立调度的单位,而程序不作为独立单位参加运行。
4、异步性
进程按各自独立的不可预知的速度向前推进,即进程按异步方式进行,正是这一特征,将导致程序执行的不可再现性,因此OS必须采用某种措施来限制各进程推进序列以保证各程序间正常协调运行。
结构特征:从结构上,进程实体由程序段、数据段和进程控制块三部分组成,UNIX中称为“进程映象”。
五、进程的状态
运行态(Running)
指进程占有处理器运行
就绪态(Ready)
指进程具备运行条件等待处理器运行
等待态(Blocked )
又称阻塞态或挂起态,指进程由于等待资源、输入输出、信号等而不具备运行条件
六、进程状态的转换
就绪态–>运行态:当处理机空闲时,进程调度程序必将处理机分配给一个处于就绪态的进程 ,该进程便由就绪态转换为运行态。
运行态–>阻塞态:处于运行态的进程在运行过程中需要等待某一事件发生后(例如因I/O请求等待I/O完成后),才能继续运行,则该进程放弃处理机,从运行态转换为阻塞态。
阻塞态–>就绪态:处于阻塞态的进程,若其等待的事件已经发生,于是进程由阻塞态转换为就绪态。
运行态–>就绪态:处于运行状态的进程在其运行过程中,因分给它的处理机时间片已用完,而不得不让出(被抢占)处理机,于是进程由运行态转换为就绪态。
而阻塞态–>运行态和就绪态–>阻塞态这二种状态转换不可能发生。
处于运行态进程:如系统有一个处理机,则在任何一时刻,最多只有一个进程处于运行态。
处于就绪态进程:一般处于就绪态的进程按照一定的算法(如先来的进程排在前面,或采用优先权高的进程排在前面)排成一个就绪队列RL。
处于阻塞态进程:处于阻塞态的进程排在阻塞队列中。由于等待事件原因不同,阻塞队列也按事件分成几个队列WLi。