linux 内存管理优化,<<Linux性能优化实战>> 内存篇 阅读笔记

第十五讲 基础篇:Linux内存是怎么工作的(2020.6.8)

这一讲相关的内容正好之前看csapp的时候总结了一下,可以直接贴出来作为总结了。

Linux的内存工作原理,这又是一个特别大的话题。一切向着尽量利用物理资源的方向在发展,

在没有虚拟内存的世界里,所以的进程都能看到同一个物理内存在这种模式下如果有多个进程那么这个内存管理就很复杂了(在DSP,嵌入时系统中可能总共就一个程序这时候完全可以直接使用物理内存)。针对Unix这种多进程的系统后来就有了虚拟内存的概念。

虚拟内存 是硬件异常,硬件地址翻译,主存,磁盘和内核软件的完美交互,他为没有进程提供一个很大的,一致的地址空间。

它将内存看成一个存储在磁盘上很大的连续的空间,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传递数据,通过这种方式很好的使用了内存。

为每个进程提供了一致的地址空间,从而简化了内存管理

每个进程的地址空间是独立的,避免了进程之间在地址空间上的破坏

物理地址和虚拟地址

物理寻址(嵌入式设备/DSP设备):

c160e13fd228d5aeffa2c5939a8246ba.png

虚拟寻址系统(现代处理器):

7188880ca9abaa8ecb922ccbe65fb4f9.png

虚拟内存作为磁盘的高速缓存工具

DRAM 作为磁盘的缓存,通过虚拟内存来管理磁盘上的那个块缓存到内存中来。

VP(virtual page):将虚拟内存分割成大小固定的块

PP(physical page):物理页(叶帧)

VP---->PP 关系

ef1975798804a6d94408e2e83fa3ebb7.png

通过页表(page table) 来判定一个虚拟页是否缓存在DRAM中。如果命中就指向一个物理页中, 如果不命中,系统必须判断这个虚拟页存放在磁盘的那个位置,在物理内存中选择牺牲一个页,将虚拟页从磁盘复制到DRAM中,替换掉牺牲页。

b0185ed3e42b8b0f67681fd1c81fdb8b.png

页命中:

43b6446bd769916a143dd6f5ab881c2b.png

缺页:

9f3a4296dc3f569622ea1690b8d909c3.png

虚拟内存作为内存管理工具

5ac764ff03585a8038342583ede1fbc8.png

虚拟内存除了作为磁盘的高速缓存之外,还作为Linux的内存管理工具,这样Linux中的每个进程都有相同的的地址空间格式,两个进程通过将虚拟页面映射到相同的物理页帧上是实现了共享内存。

b434755e0f989a56ff2659b138dc2417.png

虚拟内存作为内存保护的工具

d21b94246ffba1b404674d8059d3721d.png

地址翻译

02fd7760ee7d6c05b27cc77d8bb1c160.png

165ecc364a266ae607dfc268a180dc0b.png

d03110390fba4778cea9c3f7649a935d.png

多级页表:

3fc7454f7e91ba31fe7b1416878dddac.png

5f9d7e3d13d9bdcd735dcc93e8572e52.png

linux 内存系统

fe53328edb5915607fb5c58e4b9da57f.png

86ef4c8f01a2e6f802513b5a014add48.png

dc8552f8c25e26de00d09855d351b2d7.png

内存分配与回收

标准库中的malloc有两种实现方式:

小块内存(小于128k) 使用sbrk分配(释放并不返还给系统,容易造成系统碎片(详细见参考2))

大块内存(大于128k) 使用mmap内存映射的方式分配(每次unmap之后都会返还给系统,所以每次mallo都会导致缺页异常,内核的管理负担增大)

系统回收内存三种方式

LRU

回收不常访问的内存,把不常访问的内存通过交换分区直接写入磁盘

OOM

参考资料

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值