内存管理

(32位)每个进程4GB独立的虚拟内存(虚拟地址空间).

   

分配内存:(1)分配虚拟内存

             (2)访问映射 到 物理内存/Swap/文件

    

MMU管理虚拟内存和物理内存的映射

   

内存映射:虚拟内存映射到 物理内存/Swap/文件/...    (Linux:MMap,Windows:MapViewOfFile)

             有实际存储的虚拟内存

      

内存分配算法:管理OS系统分配虚拟内存(堆:以页为单位) (OS分配虚拟内存时会计算实际内存的的大小)

 

内存管理:虚拟内存管理(分配算法)

             物理内存管理/映射(OS)

     

4GB虚拟内存的划分:1.Windows (1)NULL区

                                               (2)用户区(不同进程只有用户区不同)

                                               (3)隔离区

                                               (4)内核区(系统区)

                             2.Linux       (1)内核区:1G(0xC0000000-0xFFFFFFFF)

                                               (2)用户区:3G(0x00000000-0xBFFFFFFF)

      

 

        

Malloc的实现:

(1)Doug Lea Malloc :Doug Lea Malloc 实际上是完整的一组分配程序,其中包括 Doug Lea 的原始分配程序,GNU libc 分配程序和 ptmalloc 。 Doug Lea 的分配程序有着与我们的版本非常类似的基本结构,但是它加入了索引,这使得搜索速度更快,并且可以将多个没有被使用的块组合为一个大的块。它还支持缓存,以便更快地再次使用最近释放的内存。 ptmalloc 是 Doug Lea Malloc 的一个扩展版本,支持多线程

(2)BSD Malloc :BSD Malloc 是随 4.2 BSD 发行的实现,包含在 FreeBSD 之中,这个分配程序可以从预先确实大小的对象构成的池中分配对象。它有一些用于对象大小的 size 类,这些对象的大小为 2 的若干次幂减去某一常数。所以,如果您请求给定大小的一个对象,它就简单地分配一个与之匹配的 size 类。这样就提供了一个快速的实现,但是可能会浪费内存

(3)Hoard :编写Hoard 的目标是使内存分配在多线程环境中进行得非常快。因此,它的构造以锁的使用为中心,从而使所有进程不必等待分配内存。它可以显著地加快那些进行很多分配和回收的多线程进程的速度。

    

内存管理内幕

   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值