843 / 学习讲义

信息技术 / 08

资源管理:让多个任务有序共处

一次解决一个小问题。从具体例子开始,理解条件,再亲手算一遍。

08 / 资源管理:让多个任务有序共处 · 小节 1

进程、状态与调度

读完这一节,你会

跟踪任务状态,计算简单调度指标。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:一条指令怎样执行 栈与队列:不同的出场顺序 · 符号回看

从一个问题开始

下载中的应用在等网络,CPU为什么可以去处理别的任务?

就绪、运行与阻塞

就绪、运行与阻塞。步骤文字在图下。就绪运行等待IO阻塞
1 / 3

调度器从就绪队列选择任务进入运行。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

程序是静态指令,进程是一次执行活动及其资源。线程是进程内执行流,通常共享进程地址空间而各有栈等执行状态。就绪表示除CPU外条件齐备;运行表示正在占用CPU;阻塞表示等待IO或事件。时间片用完是运行→就绪;发起IO等待是运行→阻塞;IO完成是阻塞→就绪,不直接保证运行。

先来先服务FCFS简单但可能有长任务阻挡;短作业优先可降低某些条件下平均等待,但须估计时长且可能饿死长任务;时间片轮转提高响应公平性,片太小切换开销大。周转=完成时刻−到达时刻,等待为在就绪队列等待的总时间。

为什么成立 · 关键推导

画甘特时间线,再逐任务记到达、开始、完成。单段CPU作业无IO时等待=周转−服务时间;有IO的多段任务不能无条件这么减。调度必须说明抢占与否、同到达排序、切换开销假设。

入门例题 / 1

A、B、C在0到达,服务3、1、2,FCFS按ABC且无切换开销:完成3、4、6,等待0、3、4,平均7/3。

典型应用与变式 / 2

同题非抢占短作业优先B C A:完成B1,C3,A6,等待B0,C1,A3,平均4/3。改善平均不代表每个人等待都更短,A从0变3。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

阻塞进程能因时间片轮到就直接运行吗?

需要一点提示

其等待的事件完成了吗?

查看过程、答案与错因

不能。必须先等事件完成变为就绪,再被调度。

计算与执行过程

两作业0到达,A需2,B需1,轮转片1,A先,完成时刻?

需要一点提示

按A、B、A排。

查看过程、答案与错因

0—1 A,1—2 B,2—3 A;B完成2,A完成3,平均周转2.5。

条件与错误辨析

多线程自动比单线程快吗?

需要一点提示

同步、CPU核数和任务性质。

查看过程、答案与错因

不一定。锁竞争、切换和串行部分可能抵消收益;共享数据还需要同步。

带走这一句

先写状态变化,再谈谁该得到CPU。

08 / 资源管理:让多个任务有序共处 · 小节 2

互斥、同步与死锁

读完这一节,你会

用交错执行解释错误,并识别资源等待环。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:进程、状态与调度 · 符号回看

从一个问题开始

两个人同时把库存从1减1,为什么可能卖出两件?

安全序列逐步释放资源

安全序列逐步释放资源。步骤文字在图下。可用1A需1B需2
1 / 3

总量3:A占1、B占1,可用1;A尚需1,B尚需2。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

临界区是访问共享状态、需要协调的代码段。互斥保证同一时刻最多一个执行者进入;同步还约束先后关系。信号量P(wait)请求资源,不足则等待;V(signal)释放或通知。互斥量初值1;有界缓冲区空位empty初值N、数据full初值0。生产者先P(empty),再P(mutex),写入后V(mutex)、V(full);消费者对称操作。

死锁是各方等待对方所占资源而无法推进,四必要条件为互斥、占有并等待、不可剥夺、循环等待。预防破坏某个条件;避免算法分析未来最大需求,安全状态存在能让所有任务依次完成的顺序,不安全不等于已经死锁。

为什么成立 · 关键推导

库存减一其实包括读、算、写。A读1,B读1,A写0,B写0,两次销售只减一次。把“检查有货并扣减”作为同一原子临界操作。生产者若持有mutex后再等empty,满缓冲区时可能挡住消费者释放空位,因此获取顺序重要。

入门例题 / 1

A先占打印机等扫描仪,B先占扫描仪等打印机,形成环。统一所有任务先申请打印机再申请扫描仪,可破坏此类循环等待。

典型应用与变式 / 2

总资源3,A已占1最多需2,B已占1最多需3,可用1。先给A还需1,A完成释放2,可用2;再满足B还需2,安全序列A B存在。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

资源分配图有环就总能断言死锁吗?

需要一点提示

每类资源是一实例还是多实例?

查看过程、答案与错因

单实例资源中在相应模型下环可判定死锁;多实例时环只是必要线索,不能单凭环判定。

计算与执行过程

总资源4,A占1最多3,B占1最多2,可用2,给一个安全序列。

需要一点提示

谁的尚需量不超过可用?

查看过程、答案与错因

先B需1可完成,释放其占用后可用3,再A需2完成;A B也可,因为A初始尚需2。

条件与错误辨析

把锁只加在写库存这一步就够了吗?

需要一点提示

读与检查是否也需一致?

查看过程、答案与错因

不够,两个任务仍可能先读到同一旧值;应把读、检查、更新纳入同一受保护操作。

继续实践 · 工具与示范

先按图示和正文用纸笔追踪,再阅读以下伪代码。箭头←为赋值,“若”为条件,“当”为循环;不是可直接编译的C。

生产者:P(empty) → P(mutex) → 放入 → V(mutex) → V(full)
消费者:P(full) → P(mutex) → 取出 → V(mutex) → V(empty)
初值:empty=N,full=0,mutex=1。
P/V操作本身必须原子化;不在持mutex时等待空位或数据。

带走这一句

互斥保护一致性,同步安排先后,死锁分析等待关系。

08 / 资源管理:让多个任务有序共处 · 小节 3

内存、文件与设备怎样管理

读完这一节,你会

完成简单分页地址转换和页面置换,解释文件持久化。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:互斥、同步与死锁 · 符号回看

从一个问题开始

程序觉得自己拥有连续地址,物理内存却分散,谁完成映射?

页号转换,页内偏移不变

页号转换,页内偏移不变。步骤文字在图下。逻辑2500页号2偏移452
1 / 3

2500 = 2×1024 + 452。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

分页把虚拟地址空间分成页,物理内存分成同样大小的页框。虚拟地址=页号与页内偏移;页表给出页号到页框号的映射,偏移不变。TLB缓存部分转换。需要的页不在内存触发缺页,由系统加载,必要时换出;FIFO淘汰最早进入者,LRU淘汰最近最久未使用者,二者不是一回事。

文件是有名称的数据集合,目录组织名称与文件信息;分配方式可为连续、链接或索引,各有随机访问、增长与碎片权衡。设备管理通过驱动、缓冲、排队协调慢设备;打印假脱机把任务先排到存储队列,减少应用直接占用打印机。

为什么成立 · 关键推导

页大小1024字节,逻辑地址除1024,商为页号,余数为偏移。页表查到页框f后,物理地址=f×1024+偏移。页面置换逐项记录命中/缺页及顺序,不能只数访问过多少种页面。

入门例题 / 1

逻辑地址2500:页号2,偏移452;若第2页映到第5页框,物理地址5×1024+452=5572。若该页不在内存,不能照无效页框直接访问。

典型应用与变式 / 2

2页框,访问1,2,1,3,1。FIFO:缺、缺、命中、缺(淘汰1)、缺(淘汰2),4次缺页。LRU:前两次缺,访问1更新最近性,3淘汰2,最后1命中,共3次。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

虚拟内存等于无限内存吗?

需要一点提示

磁盘、地址范围和访问成本都有界。

查看过程、答案与错因

不是。容量与系统资源有限,频繁缺页会抖动,严重拖慢系统。

计算与执行过程

页大小256,逻辑地址700,第2页映第9框,物理地址?

需要一点提示

700=2×256+188。

查看过程、答案与错因

9×256+188=2492。页内偏移188保持不变。

条件与错误辨析

应用显示“保存”后断电仍可能丢数据吗?

需要一点提示

缓冲写入何时真正落盘?

查看过程、答案与错因

可能,取决于提交与持久化语义。文件缓存和设备缓存可能尚未完成持久写入,需按场景设计可靠确认。

继续实践 · 工具与示范

先按图示和正文用纸笔追踪,再阅读以下伪代码。箭头←为赋值,“若”为条件,“当”为循环;不是可直接编译的C。

LRU访问(page):
  若page在页框:将其更新为最近使用
  否则:缺页次数加1
    若已满:淘汰最久未使用页
    装入page并记为最近使用
FIFO命中时不改变装入先后次序。

带走这一句

把地址映射、数据驻留和持久保存分成三件事。

章末 / 把知识接起来

综合训练

原创综合训练

2页框访问1,2,1,3,1,比较FIFO与LRU。再解释运行→阻塞与运行→就绪,并给出一种破坏循环等待的方法。

需要一点提示

页面命中是否更新顺序是关键。

查看过程、答案与错因

FIFO缺页4次,LRU3次。等待IO导致阻塞,时间片用完且仍可执行导致就绪。统一资源申请顺序可破坏循环等待,需所有相关任务遵守;不代表所有资源问题都已消除。

一点一点,积累下来。

今日学习

00:00:00

累计学习

00:00:00

学习天数

0 天

点击“开始计时”后累计时间。同一科目内切换章节或刷新会接续;切换科目不会自动启动另一科。仅当前获得焦点的可见页面累计,离开、关闭或休眠期间不补计。两科的时间与成就分别保存。

记录保存在当前浏览器,关闭后仍保留;清除网站数据会删除记录。每天累计满 1 分钟记为一个学习日,不要求连续打卡。

学习成就

已达成 0 / 10

成就记录投入与阅读进展,不代表掌握程度。阅读类成就随已读标记更新,撤销标记后会重新计算。