社区
Linux_Kernel
帖子详情
vfree对内核页表项的清除操作 怎么影响到 用户页表项
CaseZheng-菜鸟
2015-08-31 07:31:11
http://blog.chinaunix.net/uid-20671208-id-4440254.html
通过这篇文章,我们知道了vmalloc对内核页表项的修改通过缺页中断来影响用户页表项
那么,我们vfree也是对内核页表项的修改,但我们没有清除用户页表项,
如果我们可以通过用户页表项访问我们已经释放的物理页,这样不是就跪了嘛。。。。。。
求大神解答!!!
...全文
141
1
打赏
收藏
vfree对内核页表项的清除操作 怎么影响到 用户页表项
http://blog.chinaunix.net/uid-20671208-id-4440254.html 通过这篇文章,我们知道了vmalloc对内核页表项的修改通过缺页中断来影响用户页表项 那么,我们vfree也是对内核页表项的修改,但我们没有清除用户页表项, 如果我们可以通过用户页表项访问我们已经释放的物理页,这样不是就跪了嘛。。。。。。 求大神解答!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nswcfd
2015-09-01
打赏
举报
回复
以下是个人结合ULK第8章的理解,仅供参考。 vmalloc分配的时候,只是修改了init_mm的页表,如果user process引用这段空间,会产生缺页中断,发现是vmalloc地址范围,就复制init_mm对应的页表。 (说是“复制”,其实只是pmd_u和pmd_k引用同样的page table,并没有为user space单独分配page table的空间) 同样,vfree的时候,也只是修改了init_mm的页表。这里的“修改”只是清除了pte的present位,页表本身的空间并没有被释放。这个clear操作对user space的页表是可见的(因为前面的copy的行为,pte实际是共享的),因此后续的user space对vfree区域的访问,会导致正常的缺页中断,并认为是非法访问。 实际上user app本来就没有权限访问vmalloc出来的地址空间,在vfree之后访问此地址只能发生在kernel态,而这显然是bug。 这个机制就保证了当产生这种bug的时候系统可以正确反应,比如crash。
linux驱动开发(6)-
内核
虚拟空间管理
此时就可以使用per-CPU变量,让系统中每个处理器都使用独属于自己的该变量的副本,这样在变量更新时就无须考虑多处理器的锁定问题,可以提高性能。实际代码中ioremap还有一些相关的变体,包括ioremap_nocache、ioremap_cached等,这些变体的主要功能是通过加入一些映射标志位来
影响
相关
内核
页表项
的设置,比如设备驱动程序中最常用的ioremap_nocache,就是通过
清除
页表项
中的C(ache)标志[插图],使得处理器在访问这段地址时不会被cache,这对外设空间的地址是非常重要的。
深入理解Linux
内核
vmalloc内存释放:v
free
实现的完整指南
Linux
内核
的内存管理系统是
操作
系统高效运行的核心,其中vmalloc机制为
内核
提供了灵活的虚拟内存分配能力。本文将详细解析
内核
中vmalloc内存释放的关键函数v
free
的实现原理,帮助开发者理解虚拟内存管理的底层机制。 ## v
free
函数的核心作用与使用场景 v
free
函数是Linux
内核
用于释放vmalloc分配的虚拟内存区域的核心接口,定义在[mm/vmalloc.c](https
[Linux
内核
源码阅读笔记] 4 物理内存的管理
文章目录1 物理内存的管理1.1 页表虚拟地址分解页表分析
页表项
的附加信息1.2 TLB的管理1.3 伙伴系统(页分配器)伙伴系统的基础伙伴系统的分区域管理区域水线1.4 slab块分配器基本原理编程接口通用内存缓存的编程接口针对特定对象类型的内存缓存的编程接口内存缓存的数据结构slab实现分配特定对象缓存slab分配通用缓存slab着色slab内存回收改进的块分配器1.5 不连续页分配器编程接口数据结构 1 物理内存的管理 1.1 页表 页表用于记录虚拟地址到物理地址的一一映射关系。每一个
页表项
除了存放物
详细讲解从
用户
空间申请内存到
内核
如何为其分配内存的过程
Linux内存管理 摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到
内核
中讨论系统物理内存管理和
内核
内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解
内核
内存管理与
用户
内存管理之间的关系,希望大家最终能驾驭Linux内存管理。 前言 内存管理一向是所有
操作
系统书籍不惜笔墨...
linux
用户
空间与
内核
空间关系
A:
内核
空间和
用户
空间: Linux的虚拟地址空间范围为0~4G,Linux
内核
将这4G字节的空间分为两部分,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF)供
内核
使用,称为“
内核
空间”。而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF)供各个进程使用,称为“
用户
空间。因为每个进程可以通过系统调用进入
内核
,因此,Linux
内核
由系统内的所有进程共享。...
Linux_Kernel
4,468
社区成员
17,459
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章