vmalloc()的工作方式理解起来很简单:
1).寻找一个新的连续线性地址空间;
2).依次分配一组非连续的页框;
3).为线性地址空间和非连续页框建立映射关系,即修改内核页表;
vmalloc()的内存分配原理与用户态的内存分配相似,都是通过连续的虚拟内存来访问离散的物理内存,并且虚拟地址和物理地址之间是通过页表进行连接的,通过这种方式可以有效的使用物理内存 。但是应该注意的是,vmalloc()申请物理内存时是立即分配的,因为内核认为这种内存分配请求是正当而且紧急的;相反,用户态有内存请求时,内核总是尽可能的延后,毕竟用户态跟内核态不在一个特权级 。
【Linux 虚拟内存和物理内存的理解】
推荐阅读
- 一步一步带你解决linux系统CPU资源耗尽难题
- Kali Linux实战篇:Windows Server 2012 R2系统漏洞利用过程
- Linux系统架构-----Apache与Nginx动静分离
- 困扰无数人的Linux Vim退出方法,原来这么简单?
- Linux下如何用nginx+ffmpeg搭建流媒体服务器
- 只会用chmod 777?Linux下的文件权限居然还有这么多骚操作
- Linux文件与目录管理 目录存放着Linux的源代码
- 为什么黑客都用Linux系统?原来是这四大原因
- ssh-add linux Permission 0644 for are too open 错误解决方案
- Deepin-linux操作系统下的tex文件的常用的编辑器介绍和安装