システム コールを使用した HDD へのアクセスなど、ユーザー空間では許可されていない機能へのアクセスを提供するために、システム コールが存在することを理解していread()
ます。fread()
また、ハードウェア間の互換性を提供するために、これらが などのライブラリ呼び出しの形式でユーザー モード レイヤーによって抽象化されていることも理解しています。
したがって、アプリケーション開発者の観点からは、次のようなものがあります。
//library //syscall //k_driver //device_driver
fread() -> read() -> k_read() -> d_read()
私の質問は; fread()
およびread()
関数内のすべての命令をプログラムに直接インライン展開するのを妨げているのは何ですか? 命令は同じなので、CPU は同じように動作するはずですか? 試したことはありませんが、何らかの理由でこれが機能しないと思います。そうしないと、アプリケーションが任意のカーネル モードで動作する可能性があります。
TL;DR: アプリケーションがコピーできないカーネル モードに入るシステム コールを許可するのは何ですか?