计算机操作系统25,26

📅 发布时间:2026/8/9 1:10:03
计算机操作系统25,26 第二十五课分页存储管理Paging一、为什么需要分页先回顾动态分区。假设内存高地址 ---------------- 程序A ---------------- 空闲10MB ---------------- 程序B ---------------- 空闲20MB ---------------- 程序C ---------------- 空闲30MB现在来了一个程序需要50MB怎么办虽然空闲10203060MB但是没有连续50MB。所以放不进去。这就是外部碎片问题。分页的思想不要要求连续。例如程序需要50MB。拆成5个10MB。可以放内存 第1块 第7块 第20块 第35块 第100块只要有空间就可以。二、分页的基本思想分页把两个东西都切小。① 程序切成页Page也叫页面。例如程序大小16KB。规定每页4KB。那么分成4页。程序 页0 页1 页2 页3② 内存切成页框Frame也叫物理块。例如内存切成4KB一块。内存 块0 块1 块2 块3 ...注意非常重要页大小 页框大小为什么因为这样一页刚好放入一个页框。三、页和页框的关系程序看到页内存实际存放页框关系程序 页0 ↓ 内存 页框5 程序 页1 ↓ 内存 页框9所以必须有一个表记录对应关系。这个表叫页表Page Table四、页表是什么简单理解就是一个地址转换表。例如程序认为自己有4页。页表记录页号 页框号 0 → 5 1 → 9 2 → 3 3 → 8意思程序访问页0。操作系统查页表。发现页0在页框5。于是去物理内存第5块找。五、逻辑地址如何转换★★★★★这是分页最重要内容。CPU产生不是物理地址。而是逻辑地址。逻辑地址分成两个部分逻辑地址 页号 页内偏移例如逻辑地址页号 2 偏移量 100意思访问第2页里面第100个字节。转换第一步查页表。找到页2对应页框。例如页2 ↓ 页框8第二步组成物理地址物理地址 页框号 页内偏移所以得到页框8 偏移100六、一个完整例子重点假设页面大小4KB某逻辑地址8196问页号偏移第一步计算页号公式页号 逻辑地址 ÷ 页面大小也就是8196 ÷ 4096因为4KB4096字节。结果页号2第二步计算偏移公式偏移 地址 mod 页面大小所以8196 mod 4096得到偏移4所以逻辑地址8196 ↓ 页号2 偏移4七、为什么分页没有外部碎片因为所有空间都是固定大小。例如每页4KB。内存全部4KB块。不会出现10MB 20MB 30MB这种不连续空洞。但是分页有新的问题。八、分页的缺点内部碎片例如页面大小4KB。程序大小10KB。需要多少页计算10÷42.5必须向上取整3页。占3×412KB实际需要10KB。浪费2KB。这就是分页产生内部碎片。九、分页 vs 分区★★★★★连续分配分页要求连续需要不需要碎片外部碎片内部碎片管理单位分区页灵活性低高十、页表为什么重要因为分页之后程序地址不能直接找到内存。必须转换逻辑地址 ↓ 页表 ↓ 物理地址没有页表操作系统不知道页放在哪里。十一、分页系统运行流程完整过程CPU产生逻辑地址 ↓ 分成 页号 页内偏移 ↓ 查页表 ↓ 得到页框号 ↓ 组合 页框号 偏移 ↓ 访问内存十二、本课重点★★★★★今天必须掌握1. 分页思想把程序分成页把内存分成页框。2. 页和页框关系页大小 页框大小3. 页表作用记录页号 → 页框号4. 地址转换逻辑地址页号 页内偏移物理地址页框号 页内偏移5. 碎片分页没有外部碎片。但是有内部碎片。第二十六课快表TLB与多级页表一、为什么需要快表 TLB先回顾分页系统。CPU产生逻辑地址页号 页内偏移然后查页表。例如页表页号页框号05192338CPU访问页2。查页2 → 页框3然后访问页框3。问题页表在哪里答案也在内存。所以过程CPU ↓ 内存查页表 ↓ 得到地址 ↓ 内存取数据需要两次内存访问。二、TLB是什么TLB全称Translation Lookaside Buffer中文快表它是什么一句话存放最近常用页表项的小型高速缓存。注意TLB不是替代页表。而是页表的缓存。类似生活例子你家有一本通讯录。里面有所有人的电话。但是你经常联系的人号码你直接记脑子里。对应通讯录 页表 脑中记忆 TLB三、使用TLB后的地址转换流程变成CPU产生逻辑地址 ↓ 查询TLB ↓ 找到 ↓ 是 ↓ 直接得到页框号 ↓ 访问内存如果TLB没有找到怎么办再查页表。完整流程CPU ↓ TLB ↓ 命中 ↓ 是 → 得到页框 ↓ 否 ↓ 查页表 ↓ 更新TLB四、TLB命中率考试重点定义CPU访问的页号在TLB中找到的概率。叫命中率。记作α。例如命中率α80%意思100次访问80次TLB找到。20次查页表。五、地址转换时间计算★★★★★这是考试常考计算。假设条件TLB访问时间20ns内存访问时间100nsTLB命中率80%求平均访问时间。情况1TLB命中流程访问TLB ↓ 访问内存时间20 100120ns情况2TLB未命中流程访问TLB ↓ 访问页表 ↓ 访问数据时间20 100 100220ns平均时间公式有效访问时间 命中率×命中时间 未命中率×未命中时间代入0.8×120 0.2×220计算9644 140ns所以平均访问时间140ns六、为什么需要多级页表现在又出现一个问题。页表本身太大。举例一个程序地址空间32位。页面大小4KB。计算页数量2^32 / 2^12 2^20页也就是约100万个页。一个进程页表可能非常巨大。但是很多地址根本没有使用。例如程序实际只用了几个区域。代码区 ↓ 堆 ↓ 栈中间大量空白。如果建立完整页表浪费巨大。所以出现多级页表七、二级页表思想核心不要一次建立全部页表只建立需要的部分。以前一级页表页号 ↓ 页表 ↓ 页框二级页表拆开。例如32位地址分成一级页号 二级页号 页内偏移结构逻辑地址 ↓ 一级页表 ↓ 二级页表 ↓ 页框八、为什么多级页表节省空间假设程序只用了一小部分地址。那么一级页表只保存存在的二级页表地址。没有使用的不创建。类似目录。一本书如果每一页都建立目录。很浪费。所以先一级目录。需要再展开二级目录。九、页表项里面有什么考试可能问。一个页表项通常包括页框号 状态位 访问权限 修改位例如状态位表示页面是否在内存。权限位表示能否读写执行。修改位表示页面是否被修改。用于页面置换。后面会讲。十、本课核心总结1. TLB是什么页表项的高速缓存。作用提高地址转换速度。2. 地址转换顺序有TLBCPU ↓ TLB ↓ 页表 ↓ 内存3. TLB命中一次访问TLB 内存。4. TLB未命中需要TLB 页表 数据5. 多级页表目的减少页表占用空间。思想用多少建多少。十一、口诀★★★★★TLB先查快表命中直接走没命中再查页表。多级页表页表太大分级保存。