基本分页存储管理的基本概念
基本地址变换机构
具有快表的地址变换机构
以下是基本分页存储管理的基本概念
引入
因为连续分配方式的各种缺点,而产生了非连续分配方式。
知识总览
把“固定分区分配”改造为“非连续分配版本”
基本分页存储管理的思想:把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分。
分页存储管理的基本概念
简而言之:将内存分为若干大小相等的分区(假设大小为a),每个分区称为==“页框”==。==每个分区有一个编号,从0开始。==将进程分为若干大小为a的部分(最后一部分<=a)。页框不能太大,否则产生过大的内部碎片。(如进程大小为20,a为3,那么进程就分为6个3和1个2,2就是最后一个页框存储的大小,多出来的1就是内部碎片)。
操作系统以页框为单位为各个进程分配内存空间。
进程的页面与内存的页框是一一对应的。
如何实现地址的转换
分页大概是分成这样:
如何计算:
页号=逻辑地址/页面长度。
页内偏移量=逻辑地址%页面长度。
与二进制的联系:(好复杂 我好像没在课上听过)
后k位是余数,是会变的,是页内偏移量。
其余是除数,是不变的,是页号。
逻辑地址结构
感觉就是上面内容的总结。
页表
为了知道进程的每个页面在内存中的存放位置,操作系统要为每个进程建立一张页表。
- 一个进程对应一张页表
- 进程的每一页对应一个页表项
- 每个页表项=页号+块号
- 页表记录进程页面和实际存放的内存块之间的对应关系
- 每个页表项的长度相同,页号隐含
关于为什么每个页表项长度相同,页号隐含:
以下是基本地址变换机构
基本地址变换机构
基本地址变换机构也属于基本分页存储管理,它是用于实现逻辑地址到物理地址转换的一组硬件机构。
逻辑地址到物理地址转换的步骤:
文字版步骤:
第二步举个例子:算出的页号P是5,页表长度M是5,说明需要的地址在第五页,而已有的页为0、1、2、3、4这5个,越界。
用一个例题来深刻理解这个知识:
对页表项大小的进一步探讨
简而言之:让一个页表项更大,更方便(?)。
以下是具有快表的地址变换机构
局部性原理
简而言之:如果一个存储单元被访问了,那么跟它同一个“局部”的之后很有可能被访问。
什么是快表TLB
快表,又称为联想寄存器(TLB),是一种访问速度比内存快得多的高速缓冲存储器,用来存放当前访问的若干页表项,以加速地址变换的过程。与此对应,内存中的页表常称为慢表。
流程图:
引入快表之后,地址的变换过程
注意:快表没有命中则要对目标逻辑地址进行两次访存。
(一次找,一次放进快表)
一个例子:
总结