3.1.6 OS之分页存储(页号、页偏移量等)
1.为什么学习分页存储?
2.基本分页存储管理的思想
3.分页存储管理的重要概念
4.如何实现地址的转换
如何计算页号和页偏移量
总结一下,就是将一个进程分成几块,内存也分成几块,把进程分块的放进内存中,这样可以减少前面所提到的那些方法会产生的外部碎片以及内部碎片,并且可以不用按顺序,大的进程可以分成小的,也就不用去将小内存拼凑成大内存了,然后操作系统用一个数据结构存储每块的首地址,然后加上对应的数就得到他所在的位置
为什么页面大小一般设为2的整数次幂?
分页存储的逻辑结构
如何知道页面在内存中的起始地址?
这里引入一个新的概念:页表
先在用户逻辑地址空间找是哪一页,然后根据页表,用页号找内存的块号,然后再用块号乘以内存块大小,就是起始地址了
3.1.7 OS之分页存储管理的基本地址变换结构
1.页表寄存器
地址变换过程
首先计算机对页号P和页内偏移量W都是直到的,则首先先检查页号P是否合理,页表长度为m,说明有M页,如果超过M,此时访问的逻辑地址不合法,抛出越界中断,如果合法,则进行计算页号对应页表项,并找到内存块号,然后根据内存偏移量找到逻辑地址
一道例题加深印象:
因为逻辑地址是2500B,而每页是1k = 1024B,所以用2500%1024 = 452,就可以得到他的偏移量了。说明他第三个页的第452个,而这里面为什么说他是内存块号是8而不是3呢,因为别忘记了一个进程分页后每个块可能不是连续的,是通过页表找到的,页号是3,内存块号就是8喽,然后每块是1kb就是1024b,第八个首地址就是8*1024 ,然后再加上偏移量就是第八个内存里的具体位置了就是8 *1024+452
2.对页表项大小的进一步讨论
3.1.8 OS之快表的地址变换结构
1.局部性原理引入快表机制
2.快表(TLB)
一个例图了解基于快表的地址变换结构
引入快表后,地址变换的过程的文字描述:
3.基本地址变换与快表地址变换的比较
3.1.9 OS之二级页表的原理和地址结构
1.为什么引入二级页表?
因为单级页表存在一些问题,所以引入二级页表和多级页表,有两个问题:
上面提到了这两个问题,那么总结一下,并提出解决思想,引入二级页表的概念。
2.二级页表的原理和地址结构
对页表再次分组
二级页表的地址结构及对应关系
3.如何实现二级页表的地址变换?
上面的部分我们解决了问题一,接下来是问题二,这里简单叙述一下,后面的文章会继续深入剖析。
4.几个小细节