致力于自动化测试技术,性能测试技术的研究,测试技术培训以及项目实施,做一个技术与实施的主导者。

Linux中关于swap、虚拟内存和page的区别

上一篇 / 下一篇  2012-04-16 18:33:37 / 天气: 舒适 / 心情: 平静 / 个人分类:Linux

最近看了linux的一些内存管理知识,发现一些既熟悉又陌生的几个名词,swap、虚拟内存、page分页,都是与内存相关的一些信息,但他们之间有什么区别呢?要明白这个首先要知道什么是保护模式和实模式。51Testing软件测试网C(WA#W cFX3i

;l%J4wc@F0以前的操作系统是实模式,例如dos。每个时候只有一个进程在跑,这个进程使用全部的物理内存。
6ZLG4O#o,[051Testing软件测试网7t/o8NQ/O
后来发展到保护模式,分时多进程。一个CPU上跑多个进程, 但进程不知道到底有多少内存可以用,它能访问内存最大地址。例如16位系统就能访问2^16byte,32位就是2^32位。但是实际上没有那么多内存阿?怎么办?保护模式就应运而生了。51Testing软件测试网8M5eE^*p;g Iu/v0VS.X

&v:t8vb f/H-k0假设进程是一个刘翔,裁判(系统)一发令他就开始跑步。但是裁判说给你1秒,可以跑100米。于是刘翔开始跑步(内存地址),一秒后刘翔只跑了10米,裁 判吹哨说:刘翔你先歇会,我要去给王军霞吹哨呢,现记住你跑到哪里了(保护),等会从这里开始。裁判给王军霞吹哨,一只跑一秒,回来再给刘翔吹哨再跑1 秒,如此往复。开始跑步的人少,刘翔还可以站在跑道上休息。后来跑步的人越来越多,跑道都挤满了人,那么只能把一些人移动到跑道旁的草地上休息(交换)。 后来发现有些人横七竖八的躺着,占了不少空间,于是规定每个人只能站着(page),这样可以容纳很多的人。
I2W;U"^LY+\$v051Testing软件测试网:hv voY%s n]+cC
swap -- 草地,就是存放page的硬盘空间。51Testing软件测试网#Sh ]!Z6D3U
virtual memory -- 假设刘翔跑n圈就已经是到北京的距离了,可是他们还在原地。虚拟就是不存在的。51Testing软件测试网;]RM IvU
page -- 草地上的格,每次只容纳一个人。51Testing软件测试网$DM3E k(l] m
51Testing软件测试网#H5`gR$\PW9U}
为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache.前者针对磁盘块的读写,后者针对文件inode的读写.这些Cache有效缩短了I/O系统调用(比如 read,write,getdents)的时间.51Testing软件测试网8s ov)pD7B!cRr
51Testing软件测试网/U0j NB]-FyJnQ
内存活动基本上可以用3个数字来量化:活动虚拟内存总量,交换(swapping)率和调页(paging)率.其中第一个数字表明内存的总需求量,后两 个数字表示那些内存中有多少比例正处在使用之中.目标是减少内存活动或增加内存量,直到调页率保持在一个可以接受的水平上为止.51Testing软件测试网KP E(k`N
51Testing软件测试网qs(m'e B@"[
活动虚拟内存的总量(VM)=实际内存大小(size of real memory)(物理内存)+使用的交换空间大小(amount of swap space used)
U\Z&U,jl051Testing软件测试网m6xJK Y2gf
当程序运行需要的内存大于物理内存时,linux系统采用了调页机制,即系统copy一些内存中的页面到磁盘上,腾出来空间供进程使用。51Testing软件测试网Q nk$@`1^{

^ FT!X u-\9od0大多数系统可以忍受偶尔的调页,但是频繁的调页会使系统性能急剧下降。51Testing软件测试网3UNX*Yu
51Testing软件测试网2e/V-^{#}rk6R
linux内存管理:linux系统通过2种方法进行内存管理,“调页算法”,“交换技术”。
S&lz/z:t"M]&Q6D0
$M0v+|+VG0调页算法是将内存中最近不常使用的页面换到磁盘上,把常使用的页面(活动页面)保留在内存中供进程使用。
'{[j o9T U@8^0
pcM{8rH9Et8Zt0交换技术是系统将整个进程,而不是部分页面,全部换到磁盘上。正常情况下,系统会发生一些交换过程。
/E:td |]M2?7T8cD051Testing软件测试网\D P7k%b+NKhM%C
当内存严重不足时,系统会频繁使用调页和交换,这增加了磁盘I/O的负载。进一步降低了系统对作业的执行速度,即系统I/O资源问题又会影响到内存资源的分配。
@X1XQ hf0
'T6N2G0M!}?.Y+zR n0linux的虚拟内存51Testing软件测试网W:BOMx!OT)}

giXo*?Q8rb0linux的虚拟内存是一个十分复杂的子系统,它实现了进程间代码与数据共享机制的透明性,并能够分配比系统现有物理内存更多的内存,某些操作系统的虚存 甚至能通过提供缓存功能影响到文件系统的性能,各种风格的linux的虚存的实现方式区别很大,但都离不开下面的4个概念。
#T!z.Dkwo0
n D:CrVJQuE01:实际内存
3hu j&WF[(\4V/D}051Testing软件测试网$iP]B8M
实际内存是指一个系统中实际存在的物理内存,称为RAM。实际内存是存储临时数据最快最有效的方式,因此必须尽可能地分配给应用程序,现在的RAM的形式有多种:SIMM、DIMM、Rambus、DDR等,很多RAM都可以使用纠错机制(ECC)。
%Hx9xoK051Testing软件测试网P+[bm'r1B
2:交换空间
z,S+|1v2KS(H3S7y051Testing软件测试网YO0T4V4DgEk D"w7?
交换空间是专门用于临时存储内存的一块磁盘空间,通常在页面调度和交换进程数据时使用,通常推荐交换空间的大小应该是物理内存的二到四倍。
y/r{Oo5AD4j'@051Testing软件测试网$qY T,SNS_.q`)C
3:页面调度51Testing软件测试网"@bU]v1J@

#sm&|g%f-n7l#J0页面调度是指从磁盘向内存传输数据,以及相反的过程,这个过程之所以被称为页面调度,是因为linux内存被平均划分成大小相等的页面;通常页面大小为 4KB和8KB(在Solaris中可以用pagesize命令查看)。当可执行程序开始运行时,它的映象会一页一页地从磁盘中换入,与此类似,当某些内 存在一段时间内空闲,就可以把它们换出到交换空间中,这样就可以把空闲的RAM交给其他需要它的程序使用。
:oM v7V,utvX2{051Testing软件测试网$\*|nJI'DYT2Iq1T
4:交换
HKSN{0
${jWz gKo0页面调度通常容易和交换的概念混淆,页面调度是指把一个进程所占内存的空闲部分传输到磁盘上,而交换是指当系统中实际的内存已不够满足新的分配需求时,把整个进程传输到磁盘上,交换活动通常意味着内存不足。51Testing软件测试网:U FxPV1[+?9VQ#?D

V4W,\YyG&p+{*y.QI0vmstat监视内存性能:该命令用来检查虚拟内存的统计信息,并可显示有关进程状态、空闲和交换空间、调页、磁盘空间、CPU负载和交换,cache刷新以及中断等方面的信息。

TAG:

 

评分:0

我来说两句

vprince

vprince

6年软件测试经验,TIB自动化测试工作室核心成员,ATF框架核心设计和开发人员,熟悉软件自动化测试、性能测试,多年从事软件项目的自动化测试和性能测试,对自动化测试的框架设计开发、框架搭建以及实施有较为丰富的实战经验。 目前关注开源自动化测试领域、 基于Selenium构建Web自动化测试框架,为多家企业进行自动化测试培训、实施自动化测试项目。

日历

« 2024-05-12  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 67537
  • 日志数: 49
  • 建立时间: 2009-09-09
  • 更新时间: 2012-12-14

RSS订阅

Open Toolbar