一 进程的定义
进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程
进程的组成
进程包含了正在运行的一个程序的所有状态信息
代码
系统初始化(init)
正在运行的程序执行了创建进程的系统调用(比如 fork)
用户请求创建一个新进程
初始化一个批处理工作
数据
状态寄存器--CPU状态CR0,指令指针IP
通用寄存器--AX BX XX....
进程占用系统资源--打开文件,已分配内存...
进程的特点
动态性--可动态创建与结束进程
并发性--进程可以被独立调度并占用CPU运行
独立性--不同进程工作不互相影响
制约性--因访问共享资源/数据或进程间同步而产生制约
二 进程与程序的联系
进程是操作系统对于执行状态程序的抽象
程序 = 文件(静态的可执行文件)
进程 = 执行中的程序 = 程序+执行状态
统一程序的多次执行过程对应不同进程
如命令"xxx"的多次执行对应多个进程
进程执行需要的资源
内存--保存代码和数据
CPU--执行指令
进程与程序的区别
进程是动态的,程序是静态的
程序是有序代码的集合
进程是程序的执行,进程有内核态与用户态的切换
进程是暂时的,程序是永久的
进程是一个状态变化的过程
程序可长久保存在磁盘中
进行与程序组成不同
进程的组成包括程序 数据和进程控制块
三 进程的生命周期
进程创建
系统初始化(init)
正在运行的程序执行了创建进程的系统调用(比如 fork)
用户请求创建一个新进程
初始化一个批处理工作
进程执行
内核选择一个就绪的进程,让它占用CPU并执行
进程等待
进程进入等待(阻塞)的情况:
请求并等待系统服务,无法马上完成
启动某种操作,无法马上完成
需要的数据没有到达
只有进程自身才知道何时需要某种事件的发生,不会由于外部原因进入等待
进程抢占
进程被抢占的情况:
高优先级的进程就绪状态,需要马上进入执行状态,会将当前进程变成就绪状态.
当前进程执行当前时间超出最长时间,内核会让下一个进程运行
进程唤醒
唤醒进程的情况:
被阻塞进程需要的资源已经被满足
被阻塞进程等待事件到达
进程只能被别的进程或者操作系统唤醒
进程结束
唤醒结束的情况:
正常退出 错误退出 致命错误 被其他进程所杀
四 进程的状态以及切换
就绪状态
当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,这种状态称为就绪状态
执行状态
进程已获得CPU,其程序正在执行
阻塞状态
正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃CPU而处于暂停状态,亦即进程的执行受到阻塞,把这种暂停状态称为阻塞状态,有时也称为等待状态或封锁状态。比如进程当中调用wait()函数,会使得进程进入到阻塞状态。
创建状态与结束状态为辅助状态
挂起状态
在不少系统中进程只有上述三种状态,但在另一些系统中,又增加了一些新状态,最重要的是挂起状态。引入挂起状态的原因有:
终端用户的请求。当终端用户在自己的程序运行期间发现有可疑问题时,希望暂时使自己的程序静止下来。
父进程请求。有时父进程希望挂起自己的某个子进程,以便考查和修改该子进程,或者协调各子进程间的活动。
负荷调节的需要。当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。
操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。