进程的状态和转换

简介: 注意:运行态回到就绪态有两种方式:1.运行态——阻塞态——就绪态2.运行态——就绪态(每个进程行CPU运行都是一个时间片,一个时间片的时间到了,CPU接收到时钟中断信号,该进程就会下CPU,进入就绪态)

一、进程的状态


1.创建态:进程正在被创建的阶段。此阶段,操作系统会为进程分配资源、初始化PCB。


2.就绪态:进程创建完毕即进入就绪态。此阶段,进程具备已经具备所有运行条件,但是此时CPU比较繁忙,没有空闲时间去运行该进程。


一个操作系统内存中会有很多个处于就绪态的进程,当CPU空闲时,操作系统会选择一个就绪态进程,使其上CPU上运行。


3.运行态:进程正在CPU上运行的阶段。此阶段,CPU会运行进程,执行一系列的指令。


4.阻塞态:进程运行过程中,请求等待某个事件的发生(如:等待某种系统资源的分配,等待某个进程的响应)而无法继续运行下去,下CPU等待的状态即为阻塞态。此时CPU会选择其他处于就绪态的进程上CPU运行。当阻塞态进程等待的事件发生了,该进程会变为就绪态。


例子:进程A处于运行态,CPU执行一系列指令,指令1、指令2、指令3(发出系统调用,请求使用打印机资源),而此时打印机资源正在被其他进程使用中,则进程A需要等待打印机资源的分配,进入阻塞态。此时CPU会选择就绪态进程B上CPU运行,进程B运行结束后CPU再次空闲,选择就绪态进程A运行。



5.终止态:一个进程执行exit系统调用,请求操作系统终止该进程,则进程进入中止态。处于终止态的进程,操作系统会让该进程下CPU,并回收该进程二点内存空间等资源,回收PCB。当终止进程的工作完成后,进程就彻底消失了。


二、进程状态间的转换


注意:运行态回到就绪态有两种方式:


1.运行态——阻塞态——就绪态


2.运行态——就绪态(每个进程行CPU运行都是一个时间片,一个时间片的时间到了,CPU接收到时钟中断信号,该进程就会下CPU,进入就绪态)

7f6dac6db05af593fb1d27191ad55aeb_e5289f65584a44a0a9296008024ac367.png



三、进程的组织方式 (进程PCB的组织方式)


PCB有两种组织方式:


1.链接方式


操作系统管理一系列的队列,每一个队列中都包含相应状态的进程PCB。


就绪态队列——PCB1——PCB2——PCB3——……(CPU会把优先级高的进程放在队头)


运行态队列——PCB4——PCB5——PCB6——……


阻塞态队列——PCB7——PCB8——PCB9——……(很多操作系统还会根据进程进入阻塞态的不同原因再细分不同的阻塞队列)



2.索引方式


操作系统会给不同状态的进程建立相应的索引表,每个索引表的表向会指向相应的PCB。

06df428372808010fb10d2249701393c_af8f30ce690d49b59617759bab7748cf.png

目录
相关文章
|
设计模式 编译器 API
【C/C++ Pimpl模式】隐藏实现细节的高效方式 (Pimpl Idiom: An Efficient Way to Hide Implementation Details)
【C/C++ Pimpl模式】隐藏实现细节的高效方式 (Pimpl Idiom: An Efficient Way to Hide Implementation Details)
1836 1
|
安全 数据处理 C++
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
3622 3
|
9月前
|
存储 Ubuntu Linux
「正点原子Linux连载」第二章Ubuntu系统入门
在图2.8.2.4中,我们使用命令umount卸载了U盘,卸载以后当我们再去访问文件夹/mnt/tmp的时候发现里面没有任何文件了,说明我们卸载成功了。
|
8月前
|
供应链 搜索推荐 Oracle
一文看懂 供应链管理系统:是什么,功能模块,怎么定制开发?
供应链管理系统就像企业的“智能管家”,帮助企业高效管理采购、生产、库存、物流和销售等环节。对于新手来说,它不仅能减少人为错误、优化库存、提升客户满意度,还能通过自动化流程节省大量时间和成本。无论是电商、小工厂还是个性化定制企业,都能找到适合自己的解决方案,尤其通过低代码平台(如Zoho Creator),无需编程也能轻松搭建专属系统。从基础功能入手,逐步优化,小企业也能实现高效运营,让生意越做越顺。
1168 0
|
10月前
|
监控 Linux 网络安全
Linux命令大全:从入门到精通
日常使用的linux命令整理
1559 13
|
存储 运维 负载均衡
HarmonyOS Next 端云一体化(1)
HarmonyOS Next端云一体化开发简介:借助Cloud Foundation Kit,开发者可便捷使用云函数、云数据库和云存储等服务,专注于业务逻辑。本文涵盖应用场景(如应用后端、计算密集型任务等)、资源介绍、项目创建流程(AGC平台与DevEco Studio配合)、云端环境操作及本地目录结构解析。建议优先使用DevEco Studio进行开发以提升体验,为深入学习打下基础。
538 6
HarmonyOS Next 端云一体化(1)
|
缓存 NoSQL 搜索推荐
【📕分布式锁通关指南 03】通过Lua脚本保证redis操作的原子性
本文介绍了如何通过Lua脚本在Redis中实现分布式锁的原子性操作,避免并发问题。首先讲解了Lua脚本的基本概念及其在Redis中的使用方法,包括通过`eval`指令执行Lua脚本和通过`script load`指令缓存脚本。接着详细展示了如何用Lua脚本实现加锁、解锁及可重入锁的功能,确保同一线程可以多次获取锁而不发生死锁。最后,通过代码示例演示了如何在实际业务中调用这些Lua脚本,确保锁操作的原子性和安全性。
780 6
【📕分布式锁通关指南 03】通过Lua脚本保证redis操作的原子性
|
传感器 监控 算法
基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
959 6
|
小程序 前端开发 测试技术
开发“校园帮”小程序:从构思到上线的完整指南
开发“校园帮”小程序:从构思到上线的完整指南
803 2
|
存储 芯片 内存技术
ROM和RAM的工作原理(DRAM和DROM)以及DRAM的刷新方法
ROM和RAM的工作原理(DRAM和DROM)以及DRAM的刷新方法
6132 2