Linux-Kernel
為什麼linux系統呼叫介面架構依賴?
所以我不清楚的一件事是為什麼從使用者空間轉換到核心空間是依賴於架構的。例如,用於進入核心空間的系統呼叫的 linux 核心 v5.4 程式碼對於x86 和不同的體系結構是不同的,並且包含依賴於體系結構的彙編指令,而不僅僅是 C 程式碼。
為什麼會這樣?為什麼整個 linux 核心不能只用 C 編寫……?
任何想法表示讚賞。
謝謝。
核心模式與使用者模式非常不同。核心可以做它想做的任何事情/訪問硬體的任何部分,但使用者空間不是。程式碼如何告訴硬體在模式之間切換是特定於架構的——因此切換機制被實現為機器程式碼——但封裝在 C 庫中。您會在作業系統與硬體介面的任何地方找到相同的東西——即在設備驅動程序中。
C 旨在成為一種用於編寫作業系統並提供跨架構可移植性的語言。