當「讀出」的調用之後被阻塞的方法,該內核從IOS讀取數據並將其應對到緩衝器,但如果是緩衝器,在內核中或在用戶空間(這是該參數的「讀「功能),從內核空間到用戶空間節省應對資源,以供後續選擇,而且用戶空間中的緩衝區更多。但每次應對時都應該改變cr3,這會刷新所有TLB數據。這就是我所知道的兩個選擇,還有別的嗎?讀取的實現:是否直接將內存複製到內核空間優先於用戶空間?
0
A
回答
1
其中一個方法是詢問設備驅動程序通過mmap將映射其內核緩衝區進程的用戶地址空間,並輪流使用類似於remap_pfn_range。
當驅動程序完成的I/O操作,複製到它的內核緩衝區並不需要CR3的改變或擊落的TLB。
當用戶進程正在等待I/O時,它很可能會被調度爲另一個新進程運行,然後cr3必須更改(+ TLB刷新)整個I/O操作完成。
1
,我在內核中看到一個常見的模式是一個緩衝區通常分配在內核空間 - kzalloc(PAGE_SIZE, GFP_KERNEL)
(不一定是PAGE_SIZE),然後讀上發生了緩衝區。然後,它被複制到使用simple_read_from_buffer(..)
(FS/libfs.c)用戶空間 - 其內部使用copy_to_user()
。儘管這通常是爲了簡單的I/O操作或其他(例如debugfs)讀取而完成的。
相關問題
- 1. 將數據從內核空間複製到用戶空間
- 2. 是否術語「用戶空間」和「內核空間」指的是物理內存?
- 3. 內核空間中的優先級
- 4. 內核讀取/寫入用戶空間內存
- 5. 何時將數據從內核空間讀取到用戶空間?
- 6. 從插座讀而不從內核空間到用戶空間
- 7. Linux內核空間和用戶空間
- 8. 內存分配內核空間和用戶空間進程
- 9. 將用戶空間代碼移植到內核空間
- 10. 從內核空間複製char *的二維數組到用戶空間?
- 11. WIndows驅動程序從用戶空間複製到內核空間
- 12. 用戶空間和內核線程之間的共享內存
- 13. 從用戶空間到內核空間的memcpy
- 14. 什麼是用於檢查內核空間和用戶空間的linux命令行使用的內存
- 15. 在用戶空間與內核空間中實現協議 - 性能隱含
- 16. 如何回調從用戶空間保持到內核空間
- 17. 從內核空間傳遞地址到用戶空間
- 18. 從內核空間繞過數據包到用戶空間
- 19. 內核空間和用戶空間的時間差
- 20. 用戶空間和內核空間崩潰之間的區別
- 21. 取在內核空間
- 22. Linux內核:從內核空間調用用戶空間的回調函數
- 23. 如何將內核函數鏈接到用戶空間程序?
- 24. 如何複製包含從用戶空間的指針,內核
- 25. a.out內核空間
- 26. RSS是否包含內核空間內存?
- 27. 用內核觸發用戶空間
- 28. 從用戶級空間訪問內核空間中的變量
- 29. 通過sysfs將信息從內核空間導出到用戶空間
- 30. bsd內核用戶空間事件kqueue