プロセス
概要
プログラムコードやメモリ空間などを含めた実行処理のインスタンス
プロセスはメモリを共有していない
プロセスの影響はその中に閉じていて他のプロセスには及ばない
新しくプロセスが作成される
プロセスは他のプロセス(親)からforkされて作成される コピーオンライトなので子プロセスが生まれてすぐにメモリが全部コピーされるわけじゃない
exec
Linuxにおいて活動する主体はユーザーではなく、プロセスである
概念
PID
カーネルが管理
プロセスグループ
セッション
セッションとはプロセスグループの集合
セッションは一つの制御端末を持つことが出来て、制御端末を持つセッションのセッションリーダーを制御プロセスという。 sshでログインして、インタラクティブなシェルを実行している場合、セッションリーダーはシェルである。
スレッド
OSスレッド、ネイティブスレッド、軽量プロセス(LWP)
カーネルからはプロセスのみが存在する→カーネルからはプロセスもスレッドも同じに見えている
OSがスケジューリングする
スレッド同士はメモリとシグナルハンドラを共有する
クレデンシャル
「とあるユーザーAがアクセス」とは「ユーザーAの属性を持ったプロセスがアクセスする」ということ
Linuxにおいて活動する主体はユーザーではなく、プロセスである
クレデンシャルはユーザーAの代理として動作している証明書
ユーザーがログインした時にクレデンシャルが作成され、以後プロセスがforkされる毎にクレデンシャルも複製される
ユーザー空間
アプリケーション
main関数あり
カーネル空間
カーネル
デバイスドライバ
main関数がない
プロセスが持つ属性
PID
UID
GID
そのUID,GIDの権限の範囲内で動作します。 プロセスが持つUID,GIDは、そのプログラムを実行したユーザーのUID,GIDから引き継がれます
tty
制御端末
紐付いているプロセスに働きかけることができるtty/ptyデバイス
?→制御端末なし
サービスとして動作するプロセスには、制御端末があると困るので?状態に設定する
setsidコマンドで?にできる
STAT
プロセスの状態
コマンド
参照