读书频道 > 系统 > linux > Linux内核精髓:精通Linux内核必会的75个绝技
HACK #14 虚拟存储子系统的调整
2013-02-20 08:10:41     我来说两句 
收藏    我要投稿   
经过近20年的发展,Linux操作系统已经成为当今最成功的开源软件之一,使用广泛,影响深远。随着Linux操作系统功能的不断丰富和完善,Linux内核的源代码也从最初的几万行增加到如今的数百万行,庞大无比,对于Lin...  立即去当当网订购

本节介绍如何使用/proc进行虚拟存储子系统的调整。

虚拟空间存储方式

在Linux上向应用程序分配内存时,是通过以页面为单位的虚拟存储方式进行的。采用虚拟存储方式,在实际操作中具有不需要确保连续的物理内存(不用担心内存碎片)的优点。最近的处理器大部分都具备用于虚拟存储的处理器嵌入式TLB(Translation lookaside buffer,旁路转换缓冲区,或称为页表缓冲区)和处理不存在的页面访问的结构。除了部分嵌入式应用外,大多数Linux应用中都可以使用虚拟存储方式的内存管理。

使用虚拟存储方式的内存管理,具有下列特点。

 程序使用的页面是在应用程序最初访问时由内核分配的。

 如果分配的页面为程序文本、有初始值的数据(.data)区域或(被mmap的)数据文件区域,则在页面分配的同时从对应的文件读取数据,页面通过这些数据初始化。

 如果对于不存在拥有初始值的数据的区域,则只进行页面分配处理。该页面作为匿名(anonymous)页面处理。

应用程序通过malloc()等分配可用的存储区时,不会立刻向该区域(空间)分配实际的页面。而是在必要时仅分配需要用到的页面。

多数应用程序一般都不会使用分配到的所有存储区。有时分配与最大数据量大小相等的缓冲区,有时也会需要为散列表(hash table)等分配没有实体的空间。这种情况下,使用虚拟存储方式延迟内存分配,就不需要向未使用的空间分配内存。

由于根据需要分配页面,因此应用程序启动时不能事先得知该应用程序最终使用的最大页面数,这是虚拟存储方式的缺点。进程在逻辑上的虚拟内存空间与实际分配给该空间(已使用)的实际内存空间之间不再有直接的关系,最大使用内存量会根据环境(处理的数据等)的变化而变化。

应用程序使用的内存量对系统稳定性有很大的影响,因此不能无限度地使用内存。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:关于Block I/O控制器的CFQ设置用虚拟文件
下一篇:虚拟空间超额使用量的调整
相关文章
图文推荐
3.3.6 GNOME的软件管
3.3.5 GNOME的文件管
3.3.4 GNOME的窗口管
3.3.3 收藏夹和快捷
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站