进程的基本状态是:运行态,就绪态,阻塞态。如果把创建和结束加上,就可以组成五态模型。
一、五种状态转换图

状态图说明:
就绪状态 -> 运行状态:根据系统的调度算法,处于就绪状态的进程获取到处理机资源(分派的时间片)
运行状态 -> 就绪状态:
处于运行状态的进程用完了系统分配给它的执行时间片,需要让出处理机
在可剥夺的OS中,当有更高优先级的进程就绪,调度算法会让更高优先级的进程先执 行
运行状态 -> 阻塞状态:当进程等待某一事件发生时,就会从运行状态切换到阻塞状态
阻塞状态 -> 就绪状态:当进程等待的事件已经发生,就会从运行状态切换到就绪状态
二、五种状态介绍
1. 创建状态
进程正在创建,尚未转到就绪状态。
创建过程:
- OS分配进程标识符,在内核中申请PCB
- 复制父进程的环境
- 分配资源(堆栈,文件…)
- 复制父进程空间里的内容(这里linux下
fork()函数采用COW技术)- 将进程设置为就绪状态,放入就绪队列
2. 结束状态
进程正在从系统中结束,原因可能是正常退出,也可能是异常退出。
退出过程:
- 根据终止进程的进程标识符在PCB集合中检索出要终止的进程,并查看该进程的状态
- 若该进程有子进程则全部递归终止
- 将该进程的所属资源还给父进程或者OS
- 将该进程的PCB从PCB集合中移除
3. 运行状态
进程正在处理机上运行,在单处理机环境下,每一时刻最多只有一个进程处于运行状态。那么由此可以推出,在单处理机环境下,如果创建了N个进程,每一时刻最多只有N-1个进程处于就绪状态。
4. 就绪状态
进程处于准备运行的状态,即 进程已经获得了除了处理机之外的一切所需资源,一旦得到处理机后就可以运行。
5. 阻塞状态
进程正在等待某一事件(某种资源的获取、IO…)而暂停运行。很显然这个状态下即使进程获得了处理机资源也不能立刻运行。
5325




被折叠的 条评论
为什么被折叠?



