1 思维导图总览
五种状态:
创建态、终止态、就绪态、运行态、阻塞态。
2 进程的状态
2.1 三种基本状态(就绪、运行、阻塞)
三种基本的状态:
(1)运行态:占有CPU,并在CPU上运行;
(2)就绪态:已经具备运行条件,但是由于没有空闲的CPU,而暂时不能运行;
(3)阻塞态:因为等待某一事件而暂时不能运行。
2.2 创建态和结束态
创建态
结束态
3 进程状态之间的转换
- 进程一共有如下5种状态,那么他们之间如何实现切换呢?
从一个进程的从无到有看起,来了解进程5种状态之间的转换
(1)创建态:系统完成创建进程的一系列工作。只能转换到就绪态。
(2)就绪态:拥有除过CPU之外的其他所需的所有资源。当拥有CPU时就可以转换到运行态。
(3)运行态:用于CPU和所需的所有资源。
当时间片到或者处理机被抢占了,就转换到就绪态;
当进程用【系统调用】的方式申请某种系统资源或者请求等待某个事件的发生,则进入阻塞态。(主动)
(4)阻塞态:没有所需要的资源。当所需要的资源得到分配时,进入就绪态(被动)。
(5)终止态:进程运行结束或者于大盘不可修复的错误时,由运行态转到终止态。
发生进程上下文切换有哪些场景?
- 为了保证所有进程可以得到公平调度,CPU 时间被划分为一段段的时间片,这些时间片再被轮流分配给各个进程。这样,当某个进程的时间片耗尽了,进程就从运行状态变为就绪状态,系统从就绪队列选择另外一个进程运行;
- 进程在系统资源不足(比如内存不足)时,要等到资源满足后才可以运行,这个时候进程也会被挂起,并由系统调度其他进程运行;
- 当进程通过睡眠函数 sleep 这样的方法将自己主动挂起时,自然也会重新调度;
- 当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起,由高优先级进程来运行;
- 发生硬件中断时,CPU 上的进程会被中断挂起,转而执行内核中的中断服务程序;
转载:2.1.2 操作系统之进程的状态(运行、就绪、阻塞、创建、终止)及转换(就绪->运行、运行->就绪、运行->阻塞、阻塞->就绪)_BitHachi的博客-CSDN博客_运行就绪阻塞的转换