Chinaunix首页 | 论坛 | 博客
  • 博客访问: 254131
  • 博文数量: 57
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 102
  • 用 户 组: 普通用户
  • 注册时间: 2015-11-27 15:26
个人简介

自己学习总结,学会总结分享

文章分类

全部博文(57)

文章存档

2016年(49)

2015年(8)

分类: LINUX

2016-02-28 12:00:27

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