的執行我只是想知道爲什麼copy_from_user(從,字節)做真正的副本?因爲它只是希望內核訪問用戶空間數據,它能直接將物理地址映射到內核的地址空間而不移動數據嗎? 謝謝,copy_from_user()
0
A
回答
0
「這是更好的之前知道爲什麼調用copy_from_user()使用」
因爲內核絕不允許用戶空間應用程序直接訪問內核內存,因爲如果指向的內存是無效的或在讀取時發生故障,只需簡單地使用用戶空間應用程序就可以使內核恐慌。
「這就是爲什麼!!!!!!」
所以在使用調用copy_from_user是一切,它可以創建一個錯誤給用戶,並不會影響內核功能
儘管這是它確保內核的安全可靠運行額外的努力
2
copy_from_user()
通常用於編寫某些設備驅動程序。請注意,這裏沒有「映射」字節,唯一發生的情況是將字節從用戶空間映射的某個虛擬位置複製到內核空間位置的字節。這樣做是爲了強制內核和用戶分離,並防止任何安全漏洞 - 你永遠不希望內核開始訪問和讀取任意用戶內存位置,反之亦然。這就是爲什麼系統調用的參數和結果在實際運行之前被複制到用戶/從用戶複製的原因。
1
copy_from_user()在開始複製數據之前會進行一些檢查。從用戶空間直接操作數據絕不是一個好主意,因爲它存在於可能被換出的虛擬地址空間中。
http://www.ibm.com/developerworks/linux/library/l-kernel-memory-access/
0
的系統調用實現的主要要求之一是檢查作爲參數傳遞用戶參數指針的有效性,內核不應該盲目追隨用戶指針作爲用戶指針可以在許多方面做手腳。主要問題是: 1.它應該是來自進程地址空間的指針 - 所以它不能進入其他進程地址空間。 2.它應該是一個來自用戶空間的指針 - 它不應該玩弄內核空間指針。 3.它不應該繞過內存訪問限制。
這就是執行copy_from_user()的原因。它正在阻塞和進程休眠,直到頁面錯誤處理程序可以將交換文件中的頁面帶到物理內存。
相關問題
- 1. copy_from_user()的返回值
- 2. copy_from_user返回錯誤
- 3. copy_to_user和copy_from_user與結構
- 4. copy_from_user不適用於字符*
- 5. Kernel Panic - 失敗的copy_from_user,kmalloc?
- 6. 調用copy_from_user兩次 - 字符設備
- 7. 哪一個是真正的copy_from_user()?
- 8. 聲明瞭copy_from_user()的標題是什麼?
- 9. Linux內核:copy_from_user - 結構與指針
- 10. 如何使用copy_from_user的正確方法?
- 11. copy_from_user是否修改用戶指針?
- 12. copy_from_user()在用戶空間或內核空間運行?
- 13. Linux內核的copy_from_user如何在內部工作?
- 14. copy_from_user - 難以從用戶空間複製雙指針
- 15. 應用程序了GET_USER的當存在調用copy_from_user
- 16. 我可以說copy_to_user()/ copy_from_user()是access_ok()的memcpy嗎?
- 17. 聲明和內存分配到目標參數在copy_from_user調用
- 18. 如何處理copy_from_user()中的頁面錯誤?
- 19. 爲什麼當我使用copy_from_user時,一些模糊的字符被添加到原始緩衝區中?
- 20. 如何從內核緩衝區打印字符串?我是否正確使用copy_from_user()?
- 21. 如何複製包含從用戶空間的指針,內核
- 22. 奇GCC警告行爲
- 23. copy_to_user在哪裏定義
- 24. 在Linux中執行什麼地址檢查acees_ok()
- 25. 用戶空間和內核線程之間的共享內存
- 26. 'xorb%b1,%b1`中的%b1(b一個,而不是b L)?
- 27. 設備驅動程序IOCTL傳遞int
- 28. 系統調用write
- 29. 內核崩潰由於OOM錯誤(USB_SUBMIT_URB)
- 30. 鎖定copy_ [來自] _user()在linux內核
你的意思是爲什麼它不做真正的副本?源代碼告訴你什麼? –