🌴

OSで使われているプロセスについて

2021/06/09に公開

OSの仕組みや原理をざっくり書いていく
参考書籍:インフラエンジニアの教科書2

プロセス

OS上での処理の最小実行単位
どんなプログラムもOS上ではプロセスとしてメモリ上に展開されて、OSが複数のプロセスを適切に管理し、並列処理を行う
6つの要素で構成されている

  • PID(プロセスID)
  • プログタム実行命令コード
  • 変数などのデータ
  • ファイル記述子(ファイルでスクリプタ、ファイルハンドルとも呼ぶ)
  • コンテキスト・・・CPUの状態
  • スレッド
    プロセスは必ずプロセスから生成される
    OS起動時にsystemdプロセスから起動する👉全てのプロセスはsystemdプロセスの子孫
    おやプロセスから子プロセスができるときはコピーをする👉forkすると言う
    forkした子プロセスはその後自分の中身を書き換える👉execする
    プロセス同士は直接データの受け渡しができない👉プロセス間通信を利用して通信を行う

プロセスの状態遷移

  • 生成
  • 実行待ち・・・OSによってCPUリソースが割り当てられるのを待ってる状態
    👉この状態のプロセスが多いとユーザーが体感遅いと感じる
    👉CPUのコア数分プロセスを同時に実行中状態にすることができる
  • 実行中・・・割り当てられた状態
  • 休止中・・・ほとんどのプロセスがこの状態
  • 終了

ファイル記述子(ファイルディスクリプタ)

みんな大好きわわわ
プロセスから開かれているファイルを識別するために割り振られる0以上の整数値のこと
OSがファイルを読み込んだり削除したり、なんらかの処理をする際にファイルを参照する必要がある
👉直接ファイルは参照できないため、ファイルに対するデータの通り道を識別する必要がある
👉識別するためにファイル記述子が使われる

スレッド

並列処理を目的としてプロセス内に複数作ることができるタスクの実行単位
スレッドは軽量プロセスとも呼ばれており、OSはプロセスと同様に並列処理を行う
同じプロセス内にある各スレッドがプロセス内のメモリ空間を共有

GitHubで編集を提案

Discussion