所以我不清楚的一件事是为什么从用户空间转换到内核空间是依赖于架构的。例如,用于进入内核空间的系统调用的 linux 内核 v5.4 代码对于x86 和不同的体系结构是不同的,并且包含依赖于体系结构的汇编指令,而不仅仅是 C 代码。
为什么会这样?为什么整个 linux 内核不能只用 C 编写……?
任何想法表示赞赏。
谢谢。
所以我不清楚的一件事是为什么从用户空间转换到内核空间是依赖于架构的。例如,用于进入内核空间的系统调用的 linux 内核 v5.4 代码对于x86 和不同的体系结构是不同的,并且包含依赖于体系结构的汇编指令,而不仅仅是 C 代码。
为什么会这样?为什么整个 linux 内核不能只用 C 编写……?
任何想法表示赞赏。
谢谢。
内核模式与用户模式非常不同。内核可以做它想做的任何事情/访问硬件的任何部分,但用户空间不是。代码如何告诉硬件在模式之间切换是特定于架构的——因此切换机制被实现为机器代码——但封装在 C 库中。您会在操作系统与硬件接口的任何地方找到相同的东西——即在设备驱动程序中。
C 旨在成为一种用于编写操作系统并提供跨架构可移植性的语言。