Linux-linux在系统调用的疑问。

Linux-linux在系统调用的疑问。

虐人心 发布于 2017-09-19 字数 136 浏览 1119 回复 3

linux在系统调用进入内核时,为什么要将参数从用户空间拷贝到内核空间?不能直接访问,或是使用memcpy吗?非要使用copy_from_user才行吗?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灵芸 2017-11-06 3 楼

用memcpy不是可以直接把内核空间破坏了。

偏爱自由 2017-10-04 2 楼

http://blog.csdn.net/eroswang/article/details/3529750
有讲解。

想挽留 2017-09-23 1 楼

1.可以在内核直接访问用户空间内存,但是不保证安全性
2.memcpy 也能用,但是copy_from_user 用来处理用户态的指针
所指向的虚拟地址没有映射到实际物理内存的问题,这个问题在用户
空间发生时,缺页异常会自动提交物理内存,之后发生异常的指令正
常运行,但内核需要显式地去修正这个异常。因此相比memcpy
copy_from_user 加了access_ok的校验,更加安全。
3.如果需要速度,可以用get_user put_user传递char int型
的单一参数。