Chinaunix首页 | 论坛 | 博客
  • 博客访问: 200443
  • 博文数量: 61
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 22
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-11 20:47
文章分类
文章存档

2017年(3)

2016年(11)

2015年(47)

我的朋友

分类: LINUX

2015-03-22 18:31:32

原理上,内核态是可以直接访问用户态的虚拟地址空间的,所以如果需要在内核态获取用户态地址空间的数据的话,理论上应该是可以直接访问的,但为什么还需要使用copy_from_user接口呢?
因为:直接访问的话,无法保证被访问的用户态虚拟地址是否有对应的页表项,即无法保证该虚拟地址已经分配了相应的物理内存,如果此时没有对应的页表项,那么此时将产生page fault,导致流程混乱,原则上如果没有页表项(即没有物理内存时),是不应该对齐进行操作的。
所以直接操作有比较大的风险,而copy_from_user本质上也只是做了相关判断和校验,保证不会出现相关异常而已。
阅读(1144) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~