1 前面已经有了分段的概念,那么为什么 有分页的出现呢?
这是为了提高内存分区导致的内存效率问题,在程序转载到内存的时候,我们知道程序是分段载入的,通过内存分区来装载不同的段。那么如果有下面问题,我现在需要请求的空间为160k,而我的总空闲空间是大于160k的,但是没有一个空闲分区大于160k,那么按照分区的管理,就无法利用这总共的内存区域,而内存中的空闲区域也就变成了内存碎片,为了解决这个问题,引出了分页机制!其实就是将内存分成更小的块来进行管理,每块为4k
2 有了分页机制之后,我们的内存分配单元就变成以页为分配单位了,并且同一个段的不同页是可以不连续的,如下图:
回答上图的问题,最大的内存浪费不超过4k,因为每个页的空间大小是4k,最多浪费是无限接近于4k,这个值比起原来的160k已经改善很多了
3, 现在来回答最后一个问题,有了分页机制之后,每执行一条指令,如何得到它的物理地址,也就是说如何从逻辑地址变为物理地址。与分段类似,这里引出了页表, 每个页表保存着页号和页框号(页表保存在PCB中),除以4k相当于右移12位,每次执行通过硬件(内存管理单元)得到物理地址,就能保证正确的执行!
时间: 2024-10-02 07:44:46