进程的状态有哪些?如何切换状态?有什么细节?
首先,进程的状态有三个:创建状态、就绪状态、运行状态、阻塞状态、终止状态。但是主要还是就绪状态、运行状态、阻塞状态。
创建态
在创建状态完成之后,进程已经准备好所有的资源,但是还未获得处理器资源,无法运行,然后进入就绪状态。
就绪态
在就绪态的进程都获得了除了处理机以外的其他所有资源,只等待处理机的调度了。
运行态
就绪态的进程获得处理机调度进入运行态,但是如果进程的时间片用完了就会再次进入就绪状态。或者需要某个资源但是获取不到或者I/O就会进入阻塞态,等到需要资源之后再进入就绪态。
阻塞态
在运行状态期间,如果进行了阻塞的操作,如耗时的I/O操作,或者等待需要的资源时进程暂时无法操作就进入到了阻塞状态,在这些操作完成后或者等到资源就进入就绪状态。
终止态
进程结束或者被系统终止,进入终止状态
如何切换
进程切换就是进程控制,简单说就是我们要怎么才能让进程进行进程的转换。首先,需要注意是进程控制都是通过原语来实现的,原语是原子的,不可中断的,也就是说进程在状态转换的时候是不可以被打断的。为什么要用原语来实现进程控制呢?因为进程之间转换并不是那么简单的,是一个比较复杂的过程,比如,进程A要从运行态转换到阻塞态,需要先保存进程A在运行态的上下文,也就是当前的运行环境,还要修该自己的PCB(每个进程的唯一标识,而且还存储了对应进程的很信息)相应的内容,再把进程A从运行态队列放到阻塞队列。试想一下,如果这几步前面的步骤都走完了,但是在进入阻塞队列的时候中断了,那不就乱套了嘛。
原语有哪些呢?
1.创建原语
创建一个新的进程
2.撤消原语
从PCB集合找到需要终止进程的PCB,剥夺该进程的一切资源,并且终止其所有的子进程,删除PCB。
3.阻塞原语
将进程从运行态转到阻塞态。
4.唤醒原语
将进程从就绪态转到运行态。
5。切换原语
时间片到将进程从运行态转到就绪态。
注意:
进程不能从就绪态到阻塞态,因为阻塞态是进程自己主动切换到的,而就绪态的进程根本就没有处理机调度,不可能”主动“。
网友评论