【操作系统】内存管理

为什么要有逻辑地址

​ 逻辑地址需要映射到物理内存中,才能够完成对内存的操作,程序是写死的,操作固定的逻辑地址,但是硬件可用的物理内存却是一直变化的,而且程序无法知道可用的物理地址,所以必须要做出映射才能够操作对应的物理地址。

逻辑地址如何与物理地址映射?

  1. 固定偏移量,但是,随着时间的推移,程序使用的内存也会一直变化,无法固定。会产生碎片。

  2. 分页思想: 逻辑内存分为多个页,物理内存分为多个帧,通过页表来进行映射,每个进程都有自己的页表。

如果多个进程所占用的逻辑地址空间远超过物理内存空间的时候,就需要映射到磁盘上面,就需要页面置换算法来进行了。

快表(对分页思想的时间优化)

将最常访问的几个页表项存放到访问速度更快的硬件中,一般是在内存管理单元(集成在cpu中)中,这个表就是快表,进程寻址的时候先查快表,快表miss了之后再差页表。

因为程序最常访问的页没几个,所以快表命中率很高。

多级页表(对分页思想的空间优化)

程序内部的内存管理

像JVM中的堆区,栈区就是Java进程的段。

一个进程分为多个内存区域,称之为段,每个段的逻辑地址都是从0开始的。

可以段和页进行结合,就是页表变成了 段号+页号才会对应一个帧号(效率比较低,已经被淘汰)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值