前言
王道408书上很多内容是没有的,但是这些内容是超级重要的考点,也能加深理解,所以我将其补充一下。
《25操作系统408王道》p184-185
混淆点
页框、页帧是指内存中。页框号同理。
页面、页是指页表中。页号、页内偏移量同理。
每个页表项占多少字节【经常考察】
一个页表项占多少字节,也就是说块号或者页框号占多少字节。
注意点:块号的下标是从0开始的。一个页面的大小就指一个内存块的大小。通过上图左下角的计算过程,可以算出块号占多少字节。页号是不需要占内存空间的,可以是隐含的,类比数组。知道了页号为i,那么第i号的页表项的存放地址就为X+3✖i(X是起始地址),就相当于一个数组。存储一个页表,需要3✖(n+1)字节。页面记录是内存块号,而不是内存的起始地址,内存块的起始地址为: J号内存块的起始地址=J✖内存块大小(这里的存放地址指的是内存中的存放地址而不是页表中的)
【数量单位知识补充看《https://www.cnblogs.com/yidianxingyuan/p/18280603》】
如何实现地址的转换
如果是连续存放,操作系统采用的方式为:实际物理地址=目标逻辑地址(偏移量)+重定位寄存器
![image-20240705194703473](https://gitee.com/zhanghaoyang233/picgg/raw/master/image/202407051947552.png)
分页管理中的地址转换:
如何确定一个逻辑地址(页表中的地址)所对应的页号和页内偏移量?
页号是前面这20位的数字,页内偏移量是后面这12位表示的数字。通过这个原理,计算机就不用做很复杂的操作,直接取号数就行了。
为什么页面大小要取2的整数幂?
我的一些理解
通过逻辑地址可以算出页号和偏移量,然后通过页号找到块号,然后可以算出内存的起始地址,然后加上偏移量就是物理地址。
进程的页表存储
尽量存储到连续的内存空间,好调用。
![image-20240705205459422](https://gitee.com/zhanghaoyang233/picgg/raw/master/image/202407052054486.png)