オブジェクト コードにコンパイルされた後、オブジェクト ファイルが静的または別の方法でリンクされると、それらは に配置されます[VAD][1]
。少なくとも、2000 年代後半にさかのぼる最新の Windows オペレーティング システムでは、これを確実に知っています。私の推測では、これは私の頭の上からのものですが、動的にリンクされたカーネル ライブラリは、メインの実行可能ファイルと共に TBL のページ化された仮想アドレス空間に配置され、動的にリンクされたライブラリが存在する場合は、C の標準のように、それらはメインの実行可能ファイルと一緒にリンクされていますが、静的なもの[SDL][2]
はそうではありません。では、実行可能ファイルは、リンクされたカーネル ライブラリを介して、ドライバーなどの保護されたメモリにどのようにアクセスするのでしょうか?
私の質問があまり混乱しないことを願っています。
基本的に、私が聞きたいことは、最短の質問では次のとおりです。
コンパイル済み/リンク済みの実行可能ファイルとそれに付随するライブラリ/API は、実行時のハードウェア操作に必要な OS API、カーネル API、またはその他のシステム ソフトウェアに実際にどのように到達し、対話するのでしょうか?