主な機能はどこに割り当てられますか?

主な機能はどこに割り当てられますか?

プロセスのメモリレイアウトに関して、プロセス内のすべての関数呼び出しは、新しいスタックフレームをスタックに入れます。

エントリポイント機能以上の機能を実行しているようにmain見えるため、これが関数に合っているかどうかはわかりません。main

main新しいプロセスが初期化されると、関数も独自のスタックフレームを取得しますか?

これが実装固有の詳細である場合は、一般的なLinux実装の説明が役に立ちます。

ベストアンサー1

通常_start、主なポイントではなくエントリポイントです。

mainによって呼び出される別のサブルーチンです_start。他のサブルーチンと同様に、スタックにスタックフレームを取得します。

しかし、カーネルは思ったほど多くのことをしません。プロセスには、_start多くのタスクを実行するメイン(Cコンパイラによって生成されますが、Cプログラムの一部ではない)の前に実行されるいくつかのコードがあります。 setupなどexecの以前に実行された(Cプログラムが実行される前)コードもあります。stdinstdoutstderr

カーネルは_start他のサブルーチンのように実行されないようにいくつかのトリックを使用できますが、これは次のようになります。カーネルは、プロセスが_entry呼び出されたかのようにプロセスを設定します(ただしそうではありません)。制御が再度渡されると、_startexitが呼び出されます。

(含まれている詳細のいくつかが混乱している可能性があります_entry)。

おすすめ記事