Linux カーネルとユーザー空間で物事がどのように機能するかの「全体像」を構築しようとしていますが、かなり混乱しています。ユーザー空間がシステムコールを利用してカーネルと「対話」することは知っていますが、その方法はわかりません。C ライブラリとカーネルのソース コードを読んでみましたが、複雑でわかりにくいです。また、プロセス、メモリ、デバイスの管理など、オペレーティング システムに関する概念的な事実に関する本も何冊か読みましたが、それらは「移行」(ユーザー空間 -> カーネル) を明確にしていません。では、ユーザー空間とカーネル空間の間の移行は正確にはどこで行われるのでしょうか? C ライブラリは、マシンで実行されている Linux カーネル内のコードをどのように実行しますか?
例えるなら、家があると想像してください。家は施錠されています。家を開く鍵は家の中にあります。家の中にいるのは、カーネルという 1 人だけです。ユーザー空間は、家に入ろうとしている人です。私の質問は次のとおりです。カーネルは、家の外に誰かが鍵を欲しがっていることをどのように認識し、どのメカニズムがその鍵で家を開くことができるのでしょうか?