文章目录
分页、分段管理方式的优缺点
分页管理的优缺点
优点
内存利用率高,不容易产生外部碎片,只会有少量的内部碎片
缺点
不方便按照逻辑地址实现信息的共享和保护
分段管理的优缺点
优点
由于是按照逻辑模块来分段,相较于分页管理更加容易实现信息的共享和保护
缺点
如果段长过长,为其分配内存空间很不方便,以及由于段分配的随机性,很容易产生外部碎片
分段+分页的结合——段页式管理
如下图所示,首先高位拿出16位进行分段
中间拿3位作为页
其余作为业内偏移量
段表、页表
可以看到段页式管理的是通过段表和页表一起记录的。就以下图所示的进程的0号段为例,我们通过段表可以看到它对应的页所在的内存块号为1。
然后再访问内存块1看到这个页表对应的指令又在内存块k、n,虽然不是连续的地址,但是由于页表是连续记录,所以我们执行进行指令运算的时候也与连续分配的无异。
如何实现地址变换
以下图为例,地址变化做了以下几件事:
- 拿着逻辑地址A的段号和段表长度比较,若段号超出范围则报错,反之继续执行
- 通过段表起始地址+段号*段表项长度找到对应段表项
- 看到对应的页表对应的内存块号
- 拿着逻辑地址A的页号与当前访存找到的页表长度进行比较,看看是否越界,若越界也报错
- 如果没越界就通过页表对应的内存块号找到对应的内存块,配合页内偏移量找到对应内存单元执行指令
注意:上述进行了三次访问,很明显性能相较于之前的分段、分页可能有所降低,所以我们同样可以引入快表机制解决这个问题