route -n: 查看路由表
arp -a: 查看arp缓存

内存分段:

  • 虚拟地址:段选择子,段内偏移量
  • 段寄存器,:段号 -> 段表
  • 段表项:段的基地址,段的界限和特权等级

分段机制,程序被分为几个段(代码段,数据段,栈段,堆段),整个程序不必放在一个连续的
内存中,但是一个段必须放在连续的内存中。毕竟我们访问一个段时,是通过基地址+段内偏移量
定位的,如果一个段不是连续的,那么通过这种定位方式就会出错。、

参考
https://www.eet-china.com/mp/a122058.html

内存分页:

虚拟地址 -> 切分成:虚拟页号和页偏移
查页表:虚拟页号->物理页号
例如,在32位系统下,页面大小为4KB,每个进程都有一个页表,每个页表都有2^20个项。
每项占4B的话,每个进程就都有一个4MB的页表。
4MB的页表需要1024个页来存储(一页为4KB)

多级页表:节约页表的内存占用。原因:根据需要动态创建二级页表

那么为什么不分级的页表就做不到这样节约内存呢?
我们从页表的性质来看,保存在内存中的页表承担的职责是将虚拟地址翻译成物理地址。
假如虚拟地址在页表中找不到对应的页表项,计算机系统就不能工作了。所以页表一定要覆盖全部虚
拟地址空间,不分级的页表就需要有 100 多万个页表项来映射,而二级分页则只需要 1024 个页表
项(此时一级页表覆盖到了全部虚拟地址空间,二级页表在需要时创建)。


参考:
https://blog.csdn.net/CillyB/article/details/73522516
https://blog.51cto.com/u_15169172/2986431

内存分配和回收

  • malloc分配的是虚拟内存,且只在对虚拟内存进行读写时才真正的去分配物理内存
  • 后台内存回收(kswapd
  • 直接内存回收(direct reclaim
  • OOM(out-of-memory) :/proc/pid/oom_score_adj
  • 回收匿名页的倾向:/proc/pid/oom_score_adj
    
    参考:
    https://xiaolincoding.com/os/3_memory/mem_reclaim.html
    

待看:

内存管理单元:MMU
页表是存储在内存里的,内存管理单元 (MMU)就做将虚拟内存地址转换成物理地址的工作。
而当进程访问的虚拟地址在页表中查不到时,系统会产生一个缺页异常,进入系统内核空间分配物理内存、更新进程页表,最后再返回用户空间,恢复进程的运行。

直接回收内存会阻塞当前的进程,什么叫阻塞当前进程?
后台回收内存不会阻塞当前进程,为什么?

原文地址:http://www.cnblogs.com/jujubos/p/16755685.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性