
ではstart_kernel()
、カーネルが最初に行うことの 1 つは を実行することですsetup_arch()
。setup_arch()
はサポートされているすべてのアーキテクチャに対して定義されているため、適切なコマンド ラインへのポインタが渡されます。
このポインターはどのように初期化され、カーネルはいつどのようにコンピューターのアーキテクチャを取得するのでしょうか?
答え1
特定のカーネルは単一のアーキテクチャ用に構築されるため、 の実装も 1 つになりますsetup_arch
。ジェネリックstart_kernel
それを呼び出しますが、初期化されたポインタをコマンド ラインに渡すのではなく、ポインタへのポインタをコマンド ラインに渡します。setup_arch
そのポインタを初期化するのは の仕事の一部です。
例えば、x86にはグローバルcommand_line
変数がある、およびそのsetup_arch
そのアドレスを、start_kernel
。
したがって、カーネルは構築時にコンピューターのアーキテクチャを効果的に取得します。