私が理解したのは、POSIXシステムはfork()
exec()
一連の呼び出し中にメモリを設定するために特定のリンカ形式を使用することです。 a.out、COFF、およびELFは、オペレーティングシステムで使用されるよく知られたバイナリオブジェクトファイル形式です。
これを順番に読むコードがどこにあるのか知っている人はいますかfork()
exec()
?
答え1
普遍的な答えはありませんが、ほとんどのPOSIXシリーズシステムでは、カーネルは実行可能ファイルのロードとメモリ設定の一部を処理します。
Linux(認証されたPOSIXシステムではありませんが、POSIX様システム)でサポートされている実行可能ファイル形式のカーネルローダーは、次の場所にあります。fs
カーネルソースコードディレクトリ、名前がbinfmt_
。バラよりLinuxにはどのような実行ファイルがありますか?詳細については。
macOS(認証済みPOSIXシステム)では、ローダーは次の場所にあります。bsd/kern/kern_exec.c
ダーウィンの起源から、さまざまなexec_*_imgact
機能から。
OpenBSDでは、ローダーは次の場所にあります。sys/kern
exec_*
、ファイルから。exec_elf.c
ELF実行可能ファイルを処理します。