11月4日の学び②

長いので終わらなかった。続きはまた今度。

プロセステーブル(プロセス制御ブロック)

Kernelがプロセスの状態を管理するデータ構造

プロセスの生成

  • あるプロセス上で別のプロセスを実行すると必ず親子関係が生じる
  • CLIコマンドを実行すると端末(bash)が親プロセスとなり、実行されるコマンドが子プロセスとなる

親プロセスから子プロセスへの変数の引き渡し

  • ここではあくまでも変数の引き渡し
  • シェル変数では子プロセスは参照できないが、環境変数ならば子プロセスは参照できる

シグナルを用いたプロセス間通信

  • 任意のプロセス間ではシグナルを用いてイベントの発生を通信できる
  • あくまでのイベントの発生であってTCP/IP通信のように任意の信号ではない
  • シグナルの送信をkill、シグナルの受信はtrapと呼ぶ
  • シグナル一覧は"kill -l"コマンドで確認できる
  • killはプロセスを殺すわけではない。(シグナルを省略すると殺すが。)
$ kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL
 5) SIGTRAP  6) SIGABRT  7) SIGEMT   8) SIGFPE
 9) SIGKILL 10) SIGBUS  11) SIGSEGV 12) SIGSYS
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG
17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD
21) SIGTTIN 22) SIGTTOU 23) SIGIO   24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM   27) SIGPROF 28) SIGWINCH
29) SIGINFO 30) SIGUSR1 31) SIGUSR2

ログインシェル

  • ログインした際に実行されるシェル
  • つまりログインシェルは対話型のアプリケーションの一つであり起動時に自動で実行される。
  • シェルはログイン直後から動き出す
  • 2つ以上のシェルを同時に使えない(1度に使えるのは1つだけ)
  • 使うシェルを途中で変えることができる

関連

blog.a-know.me shellscript.sunone.me language-and-engineering.hatenablog.jp