内存满时的操作系统响应:从虚拟内存到OOM Killer
版权申诉
151 浏览量
更新于2024-08-07
收藏 877KB DOC 举报
“本文讨论了当系统内存满时会发生的情况,主要涉及虚拟内存的作用、内存分配过程、内存回收机制以及OOM(Out of Memory)杀手机制。文章深入解释了内存管理的关键概念,包括虚拟内存如何解决多进程地址冲突,以及在物理内存不足时,系统如何通过直接内存回收和后台内存回收来应对。当所有回收方法都无法解决问题时,内核会启动OOM机制,杀死占用内存高的进程以释放资源。”
在计算机系统中,内存管理是一个至关重要的环节。当内存资源紧张时,系统的响应和性能可能会受到严重影响。文章首先介绍了虚拟内存的主要作用,它为每个进程提供了独立的地址空间,防止了进程间的地址冲突,并通过页表中的权限控制提供了额外的安全性。
接着,文章详细阐述了内存分配的过程。在程序使用`malloc`等函数申请内存时,实际操作的是虚拟内存,而非直接分配物理内存。只有在实际访问这些虚拟内存时,才会触发缺页中断,由操作系统负责映射物理内存并处理内存分配。如果物理内存不足,内核会采取两种主要的内存回收策略:
1. 后台内存回收(kswapd):这是一个异步过程,会在内存紧张时被唤醒,尝试回收内存,但不会立即阻塞进程执行。
2. 直接内存回收(direct reclaim):当后台回收不足以满足需求时,会同步进行内存回收,这将阻塞进程直到回收完成。如果直接回收仍无法解决问题,系统将启动OOM机制。
OOM(Out of Memory)杀手机制是内存管理的最后手段,它会选择并杀死占用物理内存较多的进程,以此来释放内存资源。如果即使这样仍不能缓解内存压力,OOM杀手将持续杀死更多进程,直到有足够的内存可用。
可以被回收的内存主要包括两类:一是进程使用的匿名内存,即非文件映射的内存;二是页面缓存,如文件系统缓存,这些都可以在需要时被移除以释放内存。
这篇文章深入解析了内存管理的核心机制,帮助我们理解当系统内存满时,操作系统如何通过各种手段来应对和保持系统的稳定运行。对于开发者和系统管理员而言,这些知识对于优化系统性能和预防内存相关问题至关重要。
2022-06-26 上传
2023-05-19 上传
2024-04-12 上传
2024-10-24 上传
2023-03-28 上传
2023-03-31 上传
2023-06-01 上传
书博教育
- 粉丝: 1
- 资源: 2837
最新资源
- AKP签名手册-SignTool
- Sentinel-1.8.6
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- winsockt客户端连接测试
- Python (2).zip
- 源码分享一个开源的即时通信demo,H5即时通讯聊天系统源码
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- 本资源主要实现Xmind思维导图用例转换为Excel测试用例,及TestLink测试用例互转,具体使用说明参考我的博客
- 前端面经文档-技术要点-面试编程题-资源-html-前端-web-计算机-计算机前端面试题目-校招-大学生-计算机前端求职面经
- 前端面经文档-技术要点-面试编程题-资源-html-前端-web-计算机-计算机前端面试题目-校招-大学生-计算机前端求职面经
- STM32G4系列片上FLASH读写函数
- 基于PHP的中文域名转码系统HTML5版源码.zip
- 前端面经文档-技术要点-面试编程题-资源-html-前端-web-计算机-计算机前端面试题目-校招
- 基于PHP的中文域名转码系统HTML5版v1.2源码.zip
- 基于PHP的中文域名punycode转码工具源码.zip