复习(计算机基础)_2:内存管理

http://blog.sina.com.cn/s/blog_6720a9120100i02t.html


虚拟内存

  • 是一种抽象,处于应用层的内存请求和MMU(内存管理单元)之间。

进程虚拟内存处理

  • 代码段
  • 初始化数据段
  • 未初始化数据段
  • 堆栈段
  • 共享库

内存寻址(MMU)

  • 保护模式:不再使用BIOS,而是为计算机每个硬件提高驱动
  • 实模式:BIOS必须在实模式下运行

  • 逻辑地址到物理地址的过程,是地址翻译的过程:硬件的分段寻址(硬件电路),硬件的分页寻址(硬件电路)

  • 8086系统中采取分段寻址的方式,后来出现了分页寻址,为了兼容之前的系统,所以采用了分段分页结合的方法
  • risc体系只支持分页
  • 2.6版本的Linux只有在80X86下才使用分段机制

内存寻址(linux的8086)

  • 逻辑地址:程序的地址
  • 线性地址:虚拟地址(4GB)
  • 物理地址:实际的地址
逻辑地址-----分段单元(硬件)-----线性地址-----分页单元(硬件)-----物理地址
  • 在linux下:逻辑地址和线性地址是一致的

分段(硬件)


分页(硬件)

  • page:4kb(80386开始)
  • 32为线性地址:3个域:目录(10位置),页表(中间10位),offset(最低12位)

TLB

  • 转换后缓冲器,加速线性地址的转换

内存区的管理

slab分配器是Linux内存管理中非常重要和复杂的一部分,其工作是针对一些经常分配并释放的对象,如进程描述符等,这些对象的大小一般比较小,如果直接采用伙伴系统来进行分配和释放,不仅会造成大量的内碎片,而且处理速度也太慢。而slab分配器是基于对象进行管理的,相同类型的对象归为一类(如进程描述符就是一类),每当要申请这样一个对象,slab分配器就从一个slab列表中分配一个这样大小的单元出去,而当要释放时,将其重新保存在该列表中,而不是直接返回给伙伴系统。slab分配对象时,会使用最近释放的对象内存块,因此其驻留在CPU高速缓存的概率较高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值