内存概念、术语

主存

物理内存,计算机的高速数存储区域,动态随机访问内存(DRAM)。

常驻内存

当前处于主存中的内存。

虚拟内存

一个抽象的主存概念,它几乎是无限的和非竞争性的。虚拟内存不是真实的内存。他向每个进程和内核提供巨大的、线性的而且私有的地址空间。它简化了软件开发,把物理内存的分配交给操作系统管理。它也支持多任务,因为虚拟地址空间被设计成分离的,而且可以超额订购,即使用中的内存可以超出主内存的容量。

过度提交

允许分配超过系统可以存储的内存————超过物理内存与交换设备的总和。它依赖于按需换页以及程序通常不会使用分配给它们的大部分内存。有了过度提交,应用程序提交的内存请求会成功。应用程序开发人员能够慷慨地分配内存并按需稀疏使用,而不是谨慎地分配内存以控制在虚拟内存的限额内。

标记为特殊用途的一块内存区域。

匿名内存

无文件系统位置或者路径名的内存,它包括进程地址空间的工作数据,称作堆。

地址空间

内存上下文。每个进程和内核都有对应的虚拟内存地址空间

操作系统和CPU使用的内存单位。它一直以来是4KB或8KB,现代处理器允许多种页大小以支持更大的页面尺寸

缺页

无效的内存访问。使用按需虚拟内存时,这是正常事件。

严重缺页

需要访问存储设备的缺页,例如访问未缓存映射到内存的文件

换页

将页面换入和调出内存,它们分别被称为页面换入和页面换出。与交换整个程序不同,由于页的尺寸相对较小,换页是精确管理和释放主存的手段

  • 运行部分载入的程序

  • 运行大于主存的程序

  • 高效地在主存和存储设备间迁移

    文件系统换页:
    文件系统换页由读写位于内存中的映射文件页引起。对于使用文件内存映射(mmap())的应用程序和使用了页缓存的文件系统,这是正常行为,被称为“好的”换页,需要时,内核可以调出一些页释放内存。如果一个文件系统页在主存修改过(脏的),页面换出要求将该页写回磁盘。如果文件系统页没有修改过(干净的),因为磁盘已经存在一份副本,页面换出仅仅释放这些内存。

    匿名换页:
    匿名换页牵涉进程的私有数据:进程堆和栈。匿名是由于它在操作系统中缺乏有名字的地址(例如,没有文件系统路径)。匿名换页要求迁移数据到物理交换设备或者交换文件。在Linux中用交换(swapping)来命名这种类型的换页。
    匿名换页拖累性能,被称为“坏的”换页。当应用程序访问被调出的页时,会被读页的磁盘IO阻塞。这就是匿名页面换入,他给程序带来同步的延时。匿名页面的换出可能不会直接影响程序性能,因为它由内核异步执行。
    性能在有没匿名换页(交换)的情况下处于最佳状态。可以通过配置应用常驻内存并且监控页面扫描、内存使用率和匿名换页,来确保不存在内存短缺的迹象

按需换页

按需换页的操作系统将虚拟内存按需映射到物理内存。这会把CPU创建映射的开销推迟到实际需要或者访问时,而不是初次分配这部分内存时。
在这里插入图片描述
虚拟内存和按需换页的结果是任何虚拟内存页都可能处于如下状态:
A:未分配
B:已分配,未映射(未填充并且未缺页)
C:已分配,已映射到内存(RAM)
D:已分配,已映射到物理交换空间(磁盘)

如果系统内存压力而换出页就会到达状态D
状态B到C就是缺页
如果需要读写磁盘就是严重缺页。否则轻微缺页

常驻内存大小(RSS):已经分配到主页C的大小
虚拟内存大小:B + C + D

字长

处理器可能会支持多种字长,例如32位和64位,这样两种应用程序可以运行。地址空间受限于字长的寻址空间,因此32位地址放不下需要4GB以上的应用程序,必须用64位或更大的字长来编译。

交换

Linux中交换指页面转移到交换设备(迁移交换页)。
交换出一个进程,要求进程的所有私有数据必须被写入交换设备,包括线程结构和进程堆(匿名数据)。源于文件系统而且没有被修改的数据可以被丢弃,需要的时候再从原来的位置读取。
由于进程的一小部分元数据总是常驻于内核内存中,内核仍然能知道已交换出的进程。至于将要哪个进程交换回来,内核会优先考虑线程优先级、磁盘等待时间以及进程的大小。长期等待和较小的进程享有更高优先级。
交换严重影响性能,因为已经交换出的进程需要很多磁盘IO才能重新运行

分配器

当虚拟内存处理多任务物理内存时,在虚拟地址空间中实际分配和内存堆放通常由分配器来处理。用户态库或者内核程序向程序员提供简单的内存使用接口。分配器对性能有显著明显的影响,一个系统通常会提供多个可选择的用户态分配器库。分配器可以利用包括线程级别对象缓存在内的技术以提高性能,但是如果分配器变碎并且损耗变高,它们也会损耗性能。


参考书籍:《性能之巅 洞悉系统、企业与云计算》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值