プロセスが終了したときにプロセス自体をクリーンアップしますか、カーネルをクリーンアップしますか?

プロセスが終了したときにプロセス自体をクリーンアップしますか、カーネルをクリーンアップしますか?

最近、PowerPointプレゼンテーションで次のことがわかりました。

プログラムがコンパイルされリンクされると、リンカはプログラムに追加のコードを挿入します。呼び出すコードはまさにこのコードです。基本関数は、ユーザーが「サブ関数」と呼ぶのとほぼ同じ方法です。

追加コードには2つの機能があります。

  • Cプログラムが正しい環境で実行されていることを確認してください。
  • 成功した終了後のクリーンアップ

以前は、クリーンアップがカーネルの作業だと思いました。正しい話は何ですか?

答え1

カーネルとCランタイムの両方がいくつかのタスクを実行します。

Cランタイムはカーネルがしないことを行います。つまり、以前に登録されたハンドラを実行し、整数戻り値が使用されたかのようにシステムに返されるようにatexit()準備します。main()exit()

もちろん、カーネルはユーザースペースが何をしても、すべてのリソース(ファイル、メモリ)を取得します。

関連情報