存储器分配替代库

1、由于存储器分配出错很难跟踪,某些系统提供了这些函数的其他实现版本。

ptmalloc2是Unix使用的内存分配库

tcmalloc号称比ptmalloc2快,属于gperftools

Hoard 的目标是使内存分配在多线程环境中进行得非常快

nedmalloc是一个跨平台的高性能多线程内存分配库,windows word都使用了这个库

2、C 语言里有一个 alloca 函数,可以在堆栈上分配一块内存,当前函数退出时,由于系统堆栈指针的调整,这块内存会被自动回收。今天,在各种编程文档中已经

不太提倡使用了。因为它有许多不安全因素。

3、牛文:内存管理内幕(动态分配的选择、折衷和实现)http://www.ibm.com/developerworks/cn/linux/l-memory/

操作系统的存储器分配算法通常分为三种:连续分配、非连续分配和虚拟存储器。 1. 连续分配 连续分配是指在物理内存中为每个进程分配一块连续的内存区域。常见的连续分配算法有三种: (1)首次适应算法(First Fit):从内存的起始位置开始寻找第一个能够满足进程需要的内存块。如果找到了合适的内存块,则分配给进程;如果没有找到,则继续查找下一个内存块。 (2)最佳适应算法(Best Fit):从内存中所有能够满足进程需要的内存块中选择最小的一个分配给进程。这种算法会产生很多小的空闲内存块,不利于后续进程的分配。 (3)最坏适应算法(Worst Fit):从内存中所有能够满足进程需要的内存块中选择最大的一个分配给进程。这种算法会使内存中留下很多不连续的小空闲块。 2. 非连续分配 非连续分配是指将进程所需的内存分为若干个大小相等的块,每个块可以分配到内存中的任意一个位置。常见的非连续分配算法有两种: (1)分页存储管理:将进程的内存分为固定大小的若干页,每一页的大小相同。当进程需要内存时,操作系统将进程的页逐一地分配到内存中的任意一页中,页与页之间可以不连续。 (2)分段存储管理:将进程的内存分为若干个大小不同的段,每个段可以分配到内存中的任意位置。这种方式适用于那些具有明显段结构的程序,如编译程序、多任务系统等。 3. 虚拟存储器 虚拟存储器是指将进程的部分数据存储在物理内存中,而将另一部分数据存储在硬盘等外部设备中,当进程需要访问数据时,操作系统会自动将数据从硬盘中加载到内存中。这种方式可以支持更大的进程,提高系统的利用率,但是会增加系统的开销。常见的虚拟存储器算法有页面置换算法、分页存储管理和分段存储管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值