Sionの技術ブログ

SREとして日々の学習を書いて行きます。twitterは@sion_cojp

プロセスの実装と生成・終了ってどうなってるの?





プロセスってどう管理されてるの?

  • プロセステーブルにプロセスが起動するたびにエントリが追加、削除されてる




プロセステーブルのエントリには何が書かれてるの?

  • C言語のstructとして定義されてることが多い(プロセス構造体)
  • 主に下記3つ
  • ①プロセス管理情報
    • レジスタの退避領域:プロセス切替えの時レジスタ(PCやSP)を退避するための領域
    • プロセスの属性:プロセスIDや所有者など
    • 統計情報:プロセスが動いた時間
  • ②メモリ管理情報(コード、データ、スタック領域)
  • ③ファイル管理情報(オープンしたファイルの情報)




プロセスの生成の流れ

  1. プロセステーブル内の空き領域を探す
  2. プロセス構造体を割り当てる
  3. プロセス構造体の初期化(プロセスID決め、データ・スタック・コード領域の大きさを決め割り当て)
  4. プロセス実行




プロセス終了の流れ

  1. オープンしてたファイルをすべて閉じる
  2. プロセスが使用してたメモリ領域の解放
  3. プロセス構造体を解放
  4. プロセステーブルのエントリ解放
  5. プロセスの終了