Linux操作系统的内存使用机制研究
linux的产生与发展,更多的应用与服务器,那么对于linux的各个管理机制要非常清楚,一个完整的linux系统主要有存储管理,内存管理,文件系统和进程管理等几方面组成,贴出一些以前学习过的一个很好的文章 。与大家共享!
以下主要说明swap和buffer cache机制
Linux支持虚拟内存(virtual memory),虚拟内存是指使用磁盘当作RAM的扩展,这样可用的内存的大小就相应地增大了 。内核会将暂时不用的内存块的内容写到硬盘上,这样一来,这块内存就可用于其它目的 。当需要用到原始的内容时,它们被重新读入内存 。这些操作对用户来说是完全透明的;Linux下运行的程序只是看到有大量的内存可供使用而并没有注意到时不时它们的一部分是驻留在硬盘上的 。当然,读写硬盘要比直接使用真实内存慢得多(要慢数千倍),所以程序就不会象一直在内存中运行的那样快 。用作虚拟内存的硬盘部分被称为交换空间(swap space) 。
一般,在交换空间中的页面首先被换入内存;如果此时没有足够的物理内存来容纳它们又将被交换出来(到其他的交换空间中) 。如果没有足够的虚拟内存来容纳所有这些页面,Linux就会波动而不正常;但经过一段较长的时间Linux会恢复,但此时系统已不可用了 。
有时,尽管有许多的空闲内存,仍然会有许多的交换空间正被使用 。这种情况是有可能发生的,例如如果在某一时刻有进行交换的必要,但后来一个占用很多物理内存的大进程结束并释放内存时 。被交换出的数据并不会自动地交换进内存,除非有这个需要时 。此时物理内存会在一段时间内保持空闲状态 。对此并没有什么可担心的,但是知道了是怎么一回事,也就无所谓了 。
许多操作系统使用了虚拟内存的方法 。因为它们仅在运行时才需要交换空间,以解决不会在同一时间使用交换空间,因此,除了当前正在运行的操作系统的交换空间,其它的就是一种浪费 。所以让它们共享一个交换空间将会更有效率 。
注意,如果会有几个人同时使用这个系统,他们都将消耗内存 。然而,如果两个人同时运行一个程序,内存消耗的总量并不是翻倍,因为代码页以及共享的库只存在一份 。
Linux系统常常动不动就使用交换空间,以保持尽可能多的空闲物理内存 。即使并没有什么事情需要内存,Linux也会交换出暂时不用的内存页面 。这可以避免等待交换所需的时间:当磁盘闲着,就可以提前做好交换 。
可以将交换空间分散在几个硬盘之上 。针对相关磁盘的速度以及对磁盘的访问模式,这样做可以提高性能 。
高速缓冲
与访问(真正的)的内存相比,磁盘的读写是很慢的 。另外,在相应较短的时间内多次读磁盘同样的部分也是常有的事 。例如,某人也许首先阅读了一段e-mail消息,然后为了答复又将这段消息读入编辑器中,然后又在将这个消息拷贝到文件夹中时,使得邮件程序又一次读入它 。或者考虑一下在一个有着许多用户的系统中 ls命令会被使用多少次 。通过将信息从磁盘上仅读入一次并将其存于内存中,除了第一次读以外,可以加快所有其它读的速度 。这叫作磁盘缓冲(disk buffering),被用作此目的的内存称为高速缓冲(buffer cache) 。
但是,由于内存是一种有限而又不充足的资源,高速缓冲不可能做的很大(它不可能包容要用到的所有数据) 。当缓冲充满了数据时,其中最长时间不用的数据将被舍弃以腾出内存空间用于新的数据 。
对写磁盘操作来说磁盘缓冲技术同样有效 。一方面,被写入磁盘的数据常常会很快地又被读出(例如,原代码文件被保存到一个文件中,又被编译器读入),所以将要被写的数据放入缓冲中是个好主意 。另一方面,通过将数据放入缓冲中,而不是将其立刻写入磁盘,程序可以加快运行的速度 。以后,写的操作可以在后台完成,而不会拖延程序的执行 。
推荐阅读
- 驿路梨花拼音 驿路梨花是什么意思
- 山西老陈醋的特点有哪些
- 删除Linux后如何找回Windows启动菜单
- 锡纸有什么用
- 故有舍本而问末者耶翻译 故有舍本而问末者耶的翻译
- 日记怎么写 正确的日记格式怎么写
- 春季如何降低仔猪胃肠炎的发生
- 一瓶煤气相当于多少度电
- 关于诺基亚的一些个人观点
- 吾乃常山赵子龙的常山是哪里