爲什麼要使用copy_from_user?

原理上,內核態是可以直接訪問用戶態的虛擬地址空間的,所以如果需要在內核態獲取用戶態地址空間的數據的話,理論上應該是可以直接訪問的,但爲什麼還需要使用copy_from_user接口呢?
因爲:直接訪問的話,無法保證被訪問的用戶態虛擬地址是否有對應的頁表項,即無法保證該虛擬地址已經分配了相應的物理內存,如果此時沒有對應的頁表項,那麼此時將產生page fault,導致流程混亂,原則上如果沒有頁表項(即沒有物理內存時),是不應該對齊進行操作的。
所以直接操作有比較大的風險,而copy_from_user本質上也只是做了相關判斷和校驗,保證不會出現相關異常而已。
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
閱讀(32) | 評論(0) | 轉發(0) |
給主人留下些什麼吧!~~
評論熱議
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章