欢迎光临
我们一直在努力

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

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

在这里插入图片描述

🔥 期末冲刺指南:本文专为操作系统期末考试设计,浓缩核心考点,助你高效复习、精准拿分!

📌 学习导航

  • 要学习: 进程的基本概念,进程控制与线程,进程通信
  • 重点: 特征、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三方式 共享内存快、消息队列松、管道父子通
信号本质 软中断 + 异步通知

📝 备考建议:重点掌握三态转换图和四种原语的功能,线程与进程的区别是高频简答题,务必熟记三个核心区别的表述。祝各位同学期末考试顺利通关!🎉

赞(0)
未经允许不得转载:171主机测评 » (闪电系列)操作系统期末闪学 | 进程与线程管理
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址