系统内存
物理内存就是安装在你计算机中的随机存取存储器(RAM)。在系统启动的时候,在系统控制台上会显示已安装的物理内存的数目:
Physical: xxxxxxx kbytes
并不是所有的物理内存都能被操作系统使用。一些物理内存会被内核代码和数据结构占用。剩下的内存被称为有效内存,被系统用作需求分页。在系统引导时,会显示有效内存的数目:
Available: xxxxxxx kbytes
全部或部分的有效内存都可以被一个子系统或是用户进程锁定。被锁定的内存不能被交换到磁盘上去。典型的情况是,被锁定的内存页中保存有频繁存取的程序代码或数据结构,通过将程序代码和数据结构常驻内存,可以提高进程的执行效率。但是如果系统的大部分的内存都被锁定会导致系统死锁,所以必须要有一些未锁定的内存存在来避免系统死锁。
在系统启动的时候,能够被锁定的内存的总数会显示出来:
Lockeable: xxxxxxxx kbytes
有效内存减去被子系统或用户进程实际锁定的内存就是虚拟内存分页实际可用的内存。系统参数,unlockable_mem 中保存了不能被锁定的内存的大小。
注意:dmesg 命令可以显示系统启动的时候显示的信息,这些信息包括物理内存的数目,有效内存,和可锁定内存的大小。
什么是交换分区
交换分区是在高速存储设备上的一块区域,交换区是为虚拟存储系统进行分页进程而保留的。物理内存是系统中的有限的资源,这意味着在同一个时刻只能有一定数量的进程可以使用物理内存,甚至会有许多的进程实际上处于等待运行或等待执行当中。当进程运行的时候,程序的数据页和数据结构(文本)从内存中被拷贝到磁盘上或从磁盘上拷贝到内存中(在需要的时候),这就被称为需求分页。通常,程序的文本部分在程序执行的时候不会更改。所以在需要的时候,文本可以从包含可执行程序的文件中被拷贝到RAM中,执行中的程序的数据页会更改,因此,如果一个数据页必须从RAM移动到另外的空间,必须先将其拷贝到交换空间。
分页
内核通常会保持一定数量的空闲内存页来确保系统的效率。这个数字称为lotsfree,只要不低于这个数字,就不会发生分页行为,当空闲内存页的数目小于这个数字的时候,一个称为vhand的进程就会启动,这个守护进程会选择那些最近没有被访问的内存页,在需要的时候将这些内存页拷贝到交换分区中。这个过程被称为page out ,当一个进程试图存取当前内存中不存在地址的时候会发生page fault,这时,这个内存页会被拷贝到RAM中。
当系统有许多的请求内存需要时(例如系统中有许多的大的进程运行),分页守护进程可能变得十分繁忙,忙于交换内存页的进出,这会导致系统花费太多的时间在分页过程中,以至于没有足够的时间来运行其他的进程。在这种情况下,系统的性能下降的十分快,有时会导致系统没有任何地反映,在这种情况下,称为系统颠簸,因为系统的内部开销远大于生产性的工作。
交换器(swapper)
术语交换最早可以追溯到早期的unix用来管理物理内存的方式,其工作原理是在主内存和二级存贮器之间移动整个进程。现代的大多数虚拟内存系统不再交换整个进程,因为这种方式会导致系统消耗大多数的时间在I/O操作上,而没有时间作实际的工作。这种方式已经被一种非活动性的方案所代替,这种方案允许内存页以一种分页的机制被推出。分页是一种更有效的管理虚拟内存的机制。
当系统开始颠簸的时候,或当空闲内存的数量低于另外一个界限的时候,(这个界限被称为minfree),交换器会被激活,然后交换器会停止进程的活动,这样就降低了新的内存页被存取的速度。哪些属于被停止进程的内存页不会被访问,并且会成为分页守护进程释放的内存候选对象。当交换器检查到有效的内存数量回升到minfree界限之上,系统不再处于无效状态,它会重新激活被停止的进程。
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 管理 关于 一个 交换 系统 文件 使用 设备 内存 分区 |
注册
个人空间
