进程于线程 -1
进程概念和基本特征
1. 进程的概念
核心定义:进程是 “进程实体的运行过程”,是OS进行 资源分配和调度的独立单位(分配CPU时间片、内存等资源)。
- 进程实体(进程映像) = 程序段(可执行代码) + 数据段(原始数据/运行结果) + PCB(进程控制块,核心)。
- PCB的重要性:
✅ 进程存在的 唯一标志(创建进程=创建PCB,撤销进程=删除PCB)。
✅ 记录进程状态(就绪/运行/阻塞)、CPU现场(寄存器值)、优先级等关键信息,供OS调度和管理。
2. 进程的四大特征
特征 | 含义 | 关键点 |
动态性 🚀 | 进程是程序的一次执行过程,有创建、运行、暂停、终止的生命周期。 | 最基本特征,区别于静态的“程序”。 |
并发性 🔄 | 多个进程同存于内存,在一段时间内同时运行(宏观并行,微观交替)。 | 引入进程的核心目的(OS最基本特性)。 |
独立性 🛡️ | 进程是独立运行、获取资源、接受调度的基本单位(依赖PCB实现)。 | 无PCB的程序无法独立参与运行。 |
异步性 ⏳ | 进程按不可预知的速度推进(因资源竞争),可能导致结果不可再现。 | 需同步机制(如信号量)保证正确性。 |
3. 进程的组成(三部分)
1. 进程控制块(PCB) 📋(核心)
- 作用:OS通过PCB感知进程存在,管理进程状态、资源和调度。
- 常驻内存,包含信息:进程ID、状态(就绪/阻塞/运行)、CPU寄存器值(现场保护)、优先级、内存地址、打开文件列表等。
- 组织方式:
- 链接方式:同状态PCB组成队列(如就绪队列、阻塞队列)。
- 索引方式:同状态PCB通过索引表访问(如就绪索引表、阻塞索引表)。
2. 程序段 💻
可执行代码段,能被CPU调度执行。支持多进程共享(如多个用户同时运行浏览器程序)。
3. 数据段 📊
程序加工的原始数据或运行中产生的中间结果(如变量、数组)。
4. 进程 vs 程序(核心区别)
对比项 | 进程 | 程序 |
本质 | 动态执行过程(有生命周期) | 静态指令集合(无执行含义) |
资源 | 占用资源(CPU、内存、PCB) | 不占用资源(存储在磁盘) |
独立性 | 独立运行单位(有PCB) | 不能独立运行(需绑定进程) |
并发性 | 支持并发执行 | 不可并发(单道程序顺序执行) |
考试重点
- 进程定义:动态执行过程,资源分配和调度的独立单位(核心是“动态性”和“独立性”)。
- PCB的作用:进程存在的唯一标志,记录进程状态和控制信息。
- 进程特征:动态性(最基本)、并发性(核心目的)、独立性(依赖PCB)、异步性(需同步机制)。
- 进程实体组成:PCB(核心)+ 程序段 + 数据段。
✨ 一句话总结:进程是动态执行的程序及其资源的集合,通过PCB实现独立调度与并发运行,是OS管理并发的基本单位! ✨
进程的状态与转换
1. 进程的5种状态
进程在生命周期中会因资源竞争和事件触发而切换状态,核心分为 3种基本状态 和 2种过渡状态:
状态名称 | 含义 | 关键点 |
运行态(Running) 🚀 | 进程 正在CPU上执行。 | 单CPU系统同一时刻仅1个进程处于此状态。 |
就绪态(Ready) ⏸️ | 进程 已获得除CPU外的所有资源,等待CPU调度。 | 就绪队列中多个进程排队,一旦获得CPU立即运行。 |
阻塞态(Blocked) 🚫 | 进程 等待某事件(如I/O完成、资源释放),即使CPU空闲也无法运行。 | 可按阻塞原因分多个队列(如I/O阻塞队列、信号量阻塞队列)。 |
创建态(New) 🐣 | 进程 正在被创建(申请PCB、分配资源),尚未就绪。 | 若资源不足(如内存不够),则停留在创建态。 |
终止态(Terminated) 💀 | 进程运行结束或异常终止,正在释放资源并被系统回收。 | 终止后PCB被删除,进程彻底消亡。 |
2. 3种基本状态的转换(核心!)
(1)就绪态 → 运行态 ✅
- 触发条件:进程被调度程序选中,获得CPU时间片。
- 例:就绪队列中优先级最高的进程被调度执行。
(2)运行态 → 就绪态 ⏳
- 触发条件:
- 时间片用完(分时系统)。
- 更高优先级进程就绪(可剥夺调度)。
- 例:进程A时间片结束,CPU切换到进程B,A进入就绪队列。
(3)运行态 → 阻塞态 🚧
- 触发条件:进程主动请求资源(如I/O)或等待事件(如信号量)。
- 本质:通过 系统调用 放弃CPU(主动行为)。
- 例:进程执行
read()
系统调用读取文件,进入I/O阻塞态。
(4)阻塞态 → 就绪态 🔄
- 触发条件:等待的事件完成(如I/O结束、资源可用)。
- 本质:由中断处理程序或其他进程唤醒(被动行为)。
- 例:磁盘I/O完成,中断处理程序将进程从阻塞队列移至就绪队列。
3. 就绪态 vs 阻塞态(易混点)
对比项 | 就绪态 | 阻塞态 |
缺什么资源 | 仅缺少CPU | 缺少CPU之外的资源(如I/O设备、信号量) |
能否直接运行 | 能(获得CPU后立即执行) | 不能(需等待事件触发后转为就绪态) |
转换频率 | 高(时间片轮转,频繁切换) | 低(I/O等事件耗时较长,切换较少) |
考试重点
- 状态定义:区分就绪态(缺CPU)和阻塞态(缺其他资源),运行态的唯一性(单CPU)。
- 转换条件:
- 就绪→运行:调度程序选中。
- 运行→阻塞:主动请求资源(系统调用)。
- 阻塞→就绪:事件完成(被动唤醒)。
- 主动/被动行为:运行→阻塞是主动(进程自身请求),阻塞→就绪是被动(依赖外部事件)。
✨ 一句话总结:进程状态核心是“就绪等CPU,阻塞等事件,运行占CPU”,通过调度和事件触发实现状态转换,是OS并发管理的基础! ✨