基本分页存储,分段存储管理等内容讲解
树图思维导图提供 非连续分配管理 在线思维导图免费制作,点击“编辑”按钮,可对 非连续分配管理 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:31fe334a160297524973ad9d366c8a79
非连续分配管理思维导图模板大纲
分页存储
内存被分为一个个大小相等的分区,称“页框”(页框 = 页帧 = 内存块 = 物理块 = 物理页面)
进程逻辑地址也分为与页框大小相等的一个个部分,称“页”或“页面”;
页和页框一一对应,操作系统以页框为单位为各进程分配内存
页表
PCB中有指向页表的指针,一个进程对应一张页表(常驻内存)
页表寄存器
页表基址寄存器PTBR:存放顶级页表物理地址(一级页表)
页表长度寄存器PTLR:存放页表长度
页表项:(页号(隐藏),页框号)
页号和页框号都从0开始,页表项中页号连续,页框号未必连续
逻辑地址结构
逻辑地址位数 ≥ 内存地址位数
(页号P,页内偏移W)
常见:页面大小为2的整数次幂字节
页内偏移位数由页面大小确定,剩余为页号
若不是
页号 = 逻辑地址/页面大小
页内偏移 = 逻辑地址 % 页面大小
基本地址变换机构
地址变换过程
1、根据逻辑地址算出页号、页内偏移
2、检查页号是否合法(可以对比页表长度)
3、若合法,根据页表起始地址、页号找到对应页表项
第1次访问内存:访问页表
4、根据页表项计算物理地址:用页框号拼接页内偏移
其实是页框号000 + 页内偏移,这里页内偏移都是以字节为单位,直接加就行
5、访问内存
第2次访问内存
页式管理中地址是一维的
快表
TLB,访问速度比主存快得多
具有快表的地址变换机构
125同上
3、先查快表,命中则立刻得到物理地址,否则4(有时也可能是一起查)
4、查页表,找到页面存放页框号,将页表项复制到快表
快表命中:访存1次
快表未命中:访存2次
就算是多级页表,查到快表后也是直接就能找到内存块号,只需访存1次
两级/多级页表
把页表分页离散存储,用页目录表/外层页表/顶层页表来记录
逻辑地址:(一级页号(页目录号),二级页号,页内偏移)
这时想求页目录号和页表索引可以利用右移>>> 和 按位与&来取出几个二进制的值
地址变换时,查页目录表->查下一级页表->...->到物理地址
若无快表则三次访存
多级页表中各级页表大小不能超过一个页面
通过一个页面可以放多少个页表项来确定各级页号最多多少位
二级页表详解见笔记例图
查页目录表会得到页表起始地址(页框1,偏移0),说明了页表起始在内存的页框1中!
查内存一定要注意:地址 = 首地址 + 页号(页框号) × 页表项(一项)大小;
千万千万别忘乘!!!
分段
将地址空间按照程序自身逻辑关系划分为若干段,每段从0开始编址。
逻辑地址(段号,段内地址)
编程时决定如何分段
各段在内存中连续,各段之间可以不相邻
段表
段表项
(段号(隐藏),段长,基址)
地址变换
其余同页表,区别在于
在确定物理地址之前,要先检查段内地址是否超过段长
段式地址变换时各种异常
基址为空(不在内存):段缺失
写 只读的段
越权异常
段内地址超过段长
越界异常
段号越界
越界异常
无异常
物理地址 = 基址 + 段内地址
分段 vs 分页
分页对用户不可见(透明),分段对用户可见(不透明)
分页地址空间一维,分段地址空间二维(程序员标识地址时,既要给出段名又要给出段内地址)
段式存储有利于
方便编程
分段共享
内存中进保存一份段S的内容,各进程共享 共享段 在 共享段表 中的段表项
分段保护
动态链接、动态增长
分段+分页
将地址空间按照程序自身逻辑关系划分为若干段,再将各段分为大小相等页面
分段方法分配用户地址空间,分页方法管理物理存储空间
逻辑地址
(段号,页号,段内偏移量)
段表、页表
每个段对应一个段表项
(段号(隐含),页表长度,页表存放地址)
每个页对应一个页表项
(页号(隐含),页面存放的内存块号)
地址变换
逻辑地址得到段号、页号、页内偏移
段号与段表寄存器的段长度比较,检查是否越界
查段表找到对应段表项
第1次访存
根据段表中记录的页表长度,检查页号是否越界
查询页表,找到页表项
第2次访存
得到最终物理地址并访问
第3次访存
引入快表只需要访问1次内存
树图思维导图提供 数智技术在工程设备管理中的应用 在线思维导图免费制作,点击“编辑”按钮,可对 数智技术在工程设备管理中的应用 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:f9a2de84ad9a9ceebc96385d71be9ebe
树图思维导图提供 催收系统升级 在线思维导图免费制作,点击“编辑”按钮,可对 催收系统升级 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:71297774a95b163403440d1ee14ad2e1