(闪电系列)操作系统期末闪学 | 进程与线程管理

🔥 期末冲刺指南:本文专为操作系统期末考试设计,浓缩核心考点,助你高效复习、精准拿分!
📌 学习导航
- 要学习: 进程的基本概念,进程控制与线程,进程通信
- 重点: 特征、PCB、状态转换、进程与线程的异同、三种通信方式
- 难点: 线程共享资源、原语
一、进程的基本概念
1. 进程定义
进程定义: 操作系统中,能独立运行且作为资源分配的基本单位,是程序在某个数据集合上的一次执行过程。
💡 理解提示:程序是静态的代码文件,而进程是动态的执行实体。同一个程序可以同时对应多个进程(如同时打开多个浏览器窗口)。
2. 进程的四大特征
进程的四大特征: 动态性,即进程是程序的执行过程,有创建、运行到终止的生命周期;并发性,即多个进程可在同一时间段内同时执行,也就是宏观并行,微观交替;独立性,即进程是资源分配和调度的基本单位,可独立获取资源;异步性,即进程按不可预知的速度向前推进,需通过同步机制协调。
| 动态性 | 生命周期 | 从创建到消亡的动态过程 |
| 并发性 | 宏观并行 | 多进程在一段时间内同时推进 |
| 独立性 | 资源分配 | 拥有独立的地址空间和资源 |
| 异步性 | 不可预知 | 执行进度不确定,需同步机制 |
3. 进程的组成与PCB
进程三部分组成: PCB(进程控制块)、程序段、数据段。
核心要点: PCB是进程存在的唯一标志,记录进程的所有状态信息(如进程ID、状态、资源占用情况等),操作系统通过PCB管理进程。
#mermaid-svg-Xbfk9i3BOPKYf4P6{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Xbfk9i3BOPKYf4P6 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .error-icon{fill:#552222;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .marker.cross{stroke:#333333;}#mermaid-svg-Xbfk9i3BOPKYf4P6 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Xbfk9i3BOPKYf4P6 p{margin:0;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .cluster-label text{fill:#333;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .cluster-label span{color:#333;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .cluster-label span p{background-color:transparent;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .label text,#mermaid-svg-Xbfk9i3BOPKYf4P6 span{fill:#333;color:#333;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .node rect,#mermaid-svg-Xbfk9i3BOPKYf4P6 .node circle,#mermaid-svg-Xbfk9i3BOPKYf4P6 .node ellipse,#mermaid-svg-Xbfk9i3BOPKYf4P6 .node polygon,#mermaid-svg-Xbfk9i3BOPKYf4P6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .rough-node .label text,#mermaid-svg-Xbfk9i3BOPKYf4P6 .node .label text,#mermaid-svg-Xbfk9i3BOPKYf4P6 .image-shape .label,#mermaid-svg-Xbfk9i3BOPKYf4P6 .icon-shape .label{text-anchor:middle;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .rough-node .label,#mermaid-svg-Xbfk9i3BOPKYf4P6 .node .label,#mermaid-svg-Xbfk9i3BOPKYf4P6 .image-shape .label,#mermaid-svg-Xbfk9i3BOPKYf4P6 .icon-shape .label{text-align:center;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .node.clickable{cursor:pointer;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .arrowheadPath{fill:#333333;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Xbfk9i3BOPKYf4P6 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Xbfk9i3BOPKYf4P6 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Xbfk9i3BOPKYf4P6 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .cluster text{fill:#333;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .cluster span{color:#333;}#mermaid-svg-Xbfk9i3BOPKYf4P6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Xbfk9i3BOPKYf4P6 rect.text{fill:none;stroke-width:0;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .icon-shape,#mermaid-svg-Xbfk9i3BOPKYf4P6 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .icon-shape p,#mermaid-svg-Xbfk9i3BOPKYf4P6 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .icon-shape .label rect,#mermaid-svg-Xbfk9i3BOPKYf4P6 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Xbfk9i3BOPKYf4P6 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Xbfk9i3BOPKYf4P6 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Xbfk9i3BOPKYf4P6 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
进 程
PCB(控制块)
程序段(代码)
数据段(变量)
二、进程状态与控制
1. 三态模型及转换
进程状态中的三态模型及其转换: 就绪态、运行态、阻塞态。就绪态通过进程调度被选中进入运行态;运行态时间片用完,回到就绪态。运行态进程主动等待I/O或其他事件发生时,转为阻塞态;阻塞态进程等待的事件完成后,转为就绪态。
#mermaid-svg-E1HF4T8we7UXRSP0{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-E1HF4T8we7UXRSP0 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-E1HF4T8we7UXRSP0 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-E1HF4T8we7UXRSP0 .error-icon{fill:#552222;}#mermaid-svg-E1HF4T8we7UXRSP0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-E1HF4T8we7UXRSP0 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-E1HF4T8we7UXRSP0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-E1HF4T8we7UXRSP0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-E1HF4T8we7UXRSP0 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-E1HF4T8we7UXRSP0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-E1HF4T8we7UXRSP0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-E1HF4T8we7UXRSP0 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-E1HF4T8we7UXRSP0 .marker.cross{stroke:#333333;}#mermaid-svg-E1HF4T8we7UXRSP0 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-E1HF4T8we7UXRSP0 p{margin:0;}#mermaid-svg-E1HF4T8we7UXRSP0 defs #statediagram-barbEnd{fill:#333333;stroke:#333333;}#mermaid-svg-E1HF4T8we7UXRSP0 g.stateGroup text{fill:#9370DB;stroke:none;font-size:10px;}#mermaid-svg-E1HF4T8we7UXRSP0 g.stateGroup text{fill:#333;stroke:none;font-size:10px;}#mermaid-svg-E1HF4T8we7UXRSP0 g.stateGroup .state-title{font-weight:bolder;fill:#131300;}#mermaid-svg-E1HF4T8we7UXRSP0 g.stateGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-E1HF4T8we7UXRSP0 g.stateGroup line{stroke:#333333;stroke-width:1;}#mermaid-svg-E1HF4T8we7UXRSP0 .transition{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-E1HF4T8we7UXRSP0 .stateGroup .composit{fill:white;border-bottom:1px;}#mermaid-svg-E1HF4T8we7UXRSP0 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px;}#mermaid-svg-E1HF4T8we7UXRSP0 .state-note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-E1HF4T8we7UXRSP0 .state-note text{fill:black;stroke:none;font-size:10px;}#mermaid-svg-E1HF4T8we7UXRSP0 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-E1HF4T8we7UXRSP0 .edgeLabel .label rect{fill:#ECECFF;opacity:0.5;}#mermaid-svg-E1HF4T8we7UXRSP0 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-E1HF4T8we7UXRSP0 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-E1HF4T8we7UXRSP0 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-E1HF4T8we7UXRSP0 .edgeLabel .label text{fill:#333;}#mermaid-svg-E1HF4T8we7UXRSP0 .label div .edgeLabel{color:#333;}#mermaid-svg-E1HF4T8we7UXRSP0 .stateLabel text{fill:#131300;font-size:10px;font-weight:bold;}#mermaid-svg-E1HF4T8we7UXRSP0 .node circle.state-start{fill:#333333;stroke:#333333;}#mermaid-svg-E1HF4T8we7UXRSP0 .node .fork-join{fill:#333333;stroke:#333333;}#mermaid-svg-E1HF4T8we7UXRSP0 .node circle.state-end{fill:#9370DB;stroke:white;stroke-width:1.5;}#mermaid-svg-E1HF4T8we7UXRSP0 .end-state-inner{fill:white;stroke-width:1.5;}#mermaid-svg-E1HF4T8we7UXRSP0 .node rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-E1HF4T8we7UXRSP0 .node polygon{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-E1HF4T8we7UXRSP0 #statediagram-barbEnd{fill:#333333;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-E1HF4T8we7UXRSP0 .cluster-label,#mermaid-svg-E1HF4T8we7UXRSP0 .nodeLabel{color:#131300;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-cluster rect.outer{rx:5px;ry:5px;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-state .divider{stroke:#9370DB;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-state .title-state{rx:5px;ry:5px;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-cluster.statediagram-cluster .inner{fill:white;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#f0f0f0;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-cluster .inner{rx:0;ry:0;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-state rect.basic{rx:5px;ry:5px;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#f0f0f0;}#mermaid-svg-E1HF4T8we7UXRSP0 .note-edge{stroke-dasharray:5;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-note text{fill:black;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram-note .nodeLabel{color:black;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagram .edgeLabel{color:red;}#mermaid-svg-E1HF4T8we7UXRSP0 #dependencyStart,#mermaid-svg-E1HF4T8we7UXRSP0 #dependencyEnd{fill:#333333;stroke:#333333;stroke-width:1;}#mermaid-svg-E1HF4T8we7UXRSP0 .statediagramTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-E1HF4T8we7UXRSP0 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
创建/唤醒
进程调度
时间片用完
等待I/O或事件
事件完成
终止
就绪态
运行态
阻塞态
⚠️ 易错点提醒:阻塞态不能直接转换为运行态,必须先进入就绪态等待调度。
2. 进程控制原语
进程控制原语以及四种原语: 不可中断的原子操作,用于实现进程状态的转换和管理,包括创建原语,即创建新进程,分配资源、创建PCB,将进程置为创建态;终止原语,即终止进程,释放资源、删除PCB,将进程置为终止态;阻塞原语,即将运行态进程转换成阻塞态,保存进程上下文;唤醒原语,即将阻塞态进程转换为就绪态,恢复进程上下文,加入就绪队列。
| 创建原语 | 分配资源、创建PCB | → 创建态 |
| 终止原语 | 释放资源、删除PCB | → 终止态 |
| 阻塞原语 | 保存上下文 | 运行态 → 阻塞态 |
| 唤醒原语 | 恢复上下文、入就绪队列 | 阻塞态 → 就绪态 |
三、线程:轻量级进程
1. 线程定义与优势
线程定义: 进程内的一个执行单元,是操作系统调度的基本单位,也就是轻量级的进程。
线程的核心优势: 线程共享所属进程(PCB、程序段、数据段)的资源,无需单独分配资源,因此上下文切换开销远低于进程,能提高系统并发效率。
2. 进程与线程的核心区别
线程与进程的三个核心区别: 资源分配单位不同,即进程是资源分配的基本单位,线程不单独分配资源;调度单位不同,即线程是操作系统调度的基本单位,进程是调度的宏观单位;上下文切换开销不同,即进程切换开销大(需切换资源),线程切换开销小(共享资源,仅切换执行上下文)。
| 资源分配 | 基本单位,独立拥有 | 不单独分配,共享进程资源 |
| 调度单位 | 宏观调度单位 | 基本调度单位 |
| 切换开销 | 大(需切换页表等资源) | 小(仅切换寄存器/栈) |
| 通信方式 | 需IPC机制 | 可直接读写共享数据 |
🎯 难点突破:线程共享资源是双刃剑——提高了效率,但也引入了数据竞争问题,需要使用互斥锁、信号量等同步机制来保证安全。
四、进程通信机制
1. 三种通信方式
进程通信的类型: 共享存储器,即进程共享一块公共内存区域,通过读写该区域实现通信,如共享内存;消息传递,即进程通过发送/接收消息实现通信,无需共享内存,如消息队列;管道通信,即通过管道(半双工)传递数据,适用于父子进程间通信,如Linux中的管道命令。
| 共享存储器 | 速度快,需同步机制 | 共享内存、内存映射文件 |
| 消息传递 | 解耦,支持分布式 | 消息队列、Socket |
| 管道通信 | 半双工,亲缘关系限制 | ls | grep txt |
2. 信号机制
信号机制中的信号定义: 一种软中断信号,是操作系统向进程发送的异步通知,用于告知进程发生了某个事件。
信号机制的核心作用: 实现进程间的异步通信,例如进程A向进程B发送信号,进程B可在合适时机处理该信号(无需等待)。
常见信号示例:
- SIGINT (Ctrl+C):中断进程
- SIGKILL:强制终止(不可捕获)
- SIGTERM:请求优雅终止
- SIGCHLD:子进程状态改变
✅ 期末速记清单
| 进程特征 | 动并独异(动态、并发、独立、异步) |
| 三态转换 | 调度→运行,时间片→就绪,I/O→阻塞,完成→就绪 |
| 四种原语 | 创终阻唤(创建、终止、阻塞、唤醒) |
| 线程vs进程 | 资源归进程,调度归线程,切换线程轻 |
| IPC三方式 | 共享内存快、消息队列松、管道父子通 |
| 信号本质 | 软中断 + 异步通知 |
📝 备考建议:重点掌握三态转换图和四种原语的功能,线程与进程的区别是高频简答题,务必熟记三个核心区别的表述。祝各位同学期末考试顺利通关!🎉




