試圖理解用戶空間和內核空間之間的關係。 用戶空間程序使用系統調用與內核進行交互。如果我有一個程序從文件中讀取數據。然後執行用戶空間中的二進制文件以及內核空間。難道我們有兩個進程在內核上執行一個進程,另一個進程在用戶空間執行,或者它是在用戶和內核上運行的單個進程。在用戶空間和內核空間上執行進程
回答
只有相同的過程。但該流程的基礎操作是在user mode
和kernel mode
中運行。
現代處理器體系結構通常允許CPU以至少兩種不同 模式操作:user mode
和kernel mode
(有時也被稱爲supervisor mode
)。
硬件指令允許從一種模式切換到另一種模式。相應地,虛擬內存的區域可以標記爲user space
或kernel space
的一部分。在user mode
中運行時,CPU只能訪問標記爲user space
中的內存;嘗試訪問kernel space
中的內存會導致硬件異常。在kernel mode
中運行時,CPU可以訪問用戶和內核內存空間。
某些操作只能在處理器在kernel mode
中運行時執行。例子包括執行暫停指令來停止系統,訪問內存管理硬件以及啓動設備I/O操作。通過利用這種硬件設計將操作系統置於內核空間中,操作系統實施者可以確保用戶進程不能訪問內核的指令和數據結構,或者執行會對操作系統的操作產生不利影響的操作系統。
內核模式:
模式,所有的內核程序執行(不同的驅動程序)。它可以訪問每個資源和底層硬件。任何CPU指令都可以執行,並且每個存儲器地址都可以被訪問。此模式被保留用於其上的最低水平
用戶模式運行驅動程序:
模式,所有的用戶程序執行。它無法訪問RAM和硬件。原因是因爲如果所有程序都以內核模式運行,它們將能夠覆蓋對方的內存。如果它需要訪問任何這些功能 - 它會調用底層API。除了系統進程在用戶模式下運行外,每個進程都由Windows啓動。
交換的B/W內核和用戶模式:
從用戶模式到內核模式的切換不是由CPU自動完成。 CPU被中斷(定時器,鍵盤,I/O)中斷。當發生中斷時,CPU停止執行當前正在運行的程序,切換到內核模式,執行中斷處理程序。該處理程序保存CPU的狀態,執行其操作,恢復狀態並返回到用戶模式。
http://en.wikibooks.org/wiki/Windows_Programming/User_Mode_vs_Kernel_Mode
- 1. 內存分配內核空間和用戶空間進程
- 2. Linux內核空間和用戶空間
- 3. 從內核空間執行用戶空間函數
- 4. 在Linux內核空間執行程序
- 5. 內核空間和用戶空間的時間差
- 6. 用戶空間和內核空間崩潰之間的區別
- 7. copy_from_user()在用戶空間或內核空間運行?
- 8. 在內核空間和用戶空間中工作
- 9. 用戶空間和內核線程之間的共享內存
- 10. 用戶空間vs內核空間驅動程序
- 11. linux內核和用戶地址空間
- 12. Netlink用戶空間和內核空間通信
- 13. Linux用戶空間和內核空間調度
- 14. 內核空間和用戶空間佈局
- 15. 從內核空間執行ioctl
- 16. std :: threads在用戶或內核空間中進行管理?
- 17. Linux ioctl命令在用戶空間和內核空間之間變化
- 18. 從內核空間進行GPIO訪問
- 19. 使用用戶空間進程來協助內核模塊
- 20. Linux內核:從內核空間調用用戶空間的回調函數
- 21. 在哪裏執行設備驅動程序代碼?內核空間還是用戶空間?
- 22. 用內核觸發用戶空間
- 23. 從插座讀而不從內核空間到用戶空間
- 24. 如何回調從用戶空間保持到內核空間
- 25. 從內核空間傳遞地址到用戶空間
- 26. 從用戶級空間訪問內核空間中的變量
- 27. 將用戶空間代碼移植到內核空間
- 28. 從內核空間繞過數據包到用戶空間
- 29. 如何從用戶空間訪問內核空間?
- 30. 從內核空間訪問用戶空間 - get_user_pages
因此,我們必須當一個進程運行時創建了兩個棧。一個在用戶空間,另一個在內核空間。用戶模式切換到內核模式由中斷x80完成。如何將用戶級別的堆棧內容傳遞到內核空間。系統調用對此負責? 。但是我們的名字是在用戶空間進行數字映射,並且在內核空間[2 - sys_fork()]處有名稱映射的名稱爲[fork() - 2]。 – Angus 2014-10-09 05:10:27
如何將用戶級別的內容傳遞給內核空間。例如:將文件從用戶級別打開到內核級別的流程是什麼。 – Angus 2014-10-09 05:15:03
請參閱http://www.tldp.org/HOWTO/KernelAnalysis-HOWTO-3.html – 2014-10-09 05:23:11