Linuxシステムコールインターフェイスアーキテクチャはなぜ依存しているのですか?

Linuxシステムコールインターフェイスアーキテクチャはなぜ依存しているのですか?

だから私が明確ではないのは、ユーザー空間からカーネル空間への変換がアーキテクチャに依存する理由です。例えば、Linux カーネル v5.4 システムは、カーネル空間に入るコードを呼び出します。これはアーキテクチャが他のx86とは異なり、Cコードだけでなく、アーキテクチャに依存するアセンブリ命令も含みます。

なぜこれですか?なぜLinuxカーネル全体をCで直接書くことができないのですか?

どんなアイデアにも感謝します。

ありがとうございます。

答え1

カーネルモードユーザーモードとはかなり異なります。カーネルは必要なものは何でもでき、ハードウェアのすべての部分にアクセスできますが、ユーザースペースはそうではありません。コードがハードウェアにモード間切り替えを指示する方法は、アーキテクチャによって異なります。したがって、変換メカニズムは機械語コードで実装されますが、Cライブラリにカプセル化されます。オペレーティングシステムがハードウェアとインタフェースする場所、つまりデバイスドライバで同じものを見つけることができます。

Cは、オペレーティングシステムを作成し、アーキテクチャ間の移植性を提供するための言語です。

関連情報