基于Linux网络服务器的内存分配方法研究
摘要:笔者在开发一款基于linux的网络服务器时,被要求设计一种高效的、并且碎片率很低的内存分配方法。为此,先对当前流行的动态存储管理方法进行了研究分析,这些方法由于各种各样的原因,不能直接应用于linux网络服务器中。为此,本文中引入了一个全新的o(1)分配算法,形成了一个符合现实需求、高效的、并且内存碎片率很低的用户内存分配方案。
关键词:linux;内存分配;网络服务器;响应时间
中图分类号:tp393.08文献标识码:a文章编号:1007-9599 (2013) 05-0000-03
1概述
笔者在开发一款基于linux的网络服务器时,被要求设计一种高效的、并且碎片率很低的内存分配方法。为此,先对当前流行的动态存储管理方法进行了研究分析,例如:顺序搜索,buddy算法,分类搜索,索引搜索,位图搜索等。这些方法要么效率不高,时间复杂度是o(n)或者o(logn);要么设计复杂、实现困难,而服务器要求7*24小时连续不间断的提供服务,这种复杂的设计在服务器运行中容易出错;要么会产生较高的内存碎片率,服务器被要求长年
累月的运转,较高的内存碎片率很影响服务器的效率。因此,不能将这些内存分配方法直接应用于linux网络服务器的开发中。笔者在linux内核代码的研究中,发现在内核代码的某个模块中存在一种o(1)分配算法。因此,笔者在linux网络服务器的研发中,引入了这个o(1)分配算法的思想,并且融入了新的设计,形成了一个符合现实需求、高效的、并且内存碎片率很低的用户内存分配方案。
免费永久的linux服务器
2内存分配方法设计
2.1需求分析
linux网络服务器是整个项目系统的一部分,它位于上位机和终端设备之间。这个系统对服务器的内存分配方法有具体的要求:
1)提高实时性。分配和释放内存都必须在一个确定的时间内完成。
2)减少内存碎片。服务器程序需要7*24小时连续不间断的提供服务,产生过多的内存碎片会影响系统的性能。