📖

プロセス管理 -その1- (Linux)

2022/03/09に公開

今回の内容はプロセス管理について( ˙꒳​˙ᐢ )

今回の概要、対象者

IT系の仕事をする上で避けては通れないであろう\textcolor{Salmon}{ターミナル操作}(恐ろしい響きです)について学習したことをアウトプットしています。(꒪ཫ꒪; )


【対象者】

  • あの真っ黒な画面恐怖症な方
  • 少し慣れてきたけど未だにあの真っ黒な画面アレルギーな方
  • あの真っ黒な画面って何?ってな方
  • 間違いを訂正してやるぜ!という優しい方



あくまで勉強中の身なので間違いを発見した場合はコメントいただけると嬉しいです。(そして温かい目で見守っていただけると尚嬉しいです・・・(¯꒳¯ ))


【今回の内容】
前回はLinuxコマンドその3でした。
今回はLinuxコマンドから少し離れて\textcolor{Salmon}{プロセス管理}について Y(·∀·)Y {張り切っていきマショー!!


ついでに簡単な自己紹介

私は何者か

プロフィール

ITの勉強を始めて1年弱。
オーストラリア在住。現在General AssemblyのSEIコース受講中。
2022年9月ごろから転職活動予定。
趣味はピアノ。
ゆえに特技はキーボードを打つ時に指を異常な角度で打てること(え)



今回(も?)お世話になるコースはこちら


https://envader.plus/courses


では今回の本題、\textcolor{Salmon}{プロセス管理}について

プロセスってなんぞや

プロセスとは

一言で言うと\textcolor{Salmon}{OS上で実行中のプログラム}
二言で言うと\textcolor{Salmon}{プログラムを実行したときに生成されるインスタンス}
三言で言ってもいいなら\textcolor{Salmon}{OSがプログラムを実行するときに}
\textcolor{Salmon}{コンピュータリソース(CPUやメモリなど)を消費する状態、}
\textcolor{Salmon}{またそれを管理するための何か}のこと。


・・・何となくそれっぽく言ってみたかっただけです。
(状態については後ほど少し補足する予定(●⁰8⁰●))


つまり、
OSさんは何かを実行する時このプロセスというものを作ってるんですね。ふむふむ。
OSさん自体はただの現場監督なので実際にプログラム内部の計算などの処理をしてるわけではない模様(その辺は主にCPUさんメモリさんやらの職人さんたちの出番らしい)
コンピューターがプログラムを処理する時内部ではそういう流れで処理されてるんですね〜 Y(·∀·)Y

プログラムの処理の中身?

コンピューターがプログラムを処理するには

CPUさんやメモリさんはOS現場監督から割り当てられたプログラムを処理していくわけですが、その中にもいろんな作業があるわけです。


あれを動かしたり戻したりジャンプしてみたり足したり引いたり etc...
とりあえず地味な作業の集合体みたいなことを高速でやるのが得意みたいです。
ユーザーが打つコマンドひとつ取ってもCPUさんやメモリさんたちは色々なことを内部でやって納品しています。(何をしてるかの詳細は詳しく分かんないので彼らに直接聞いてください)


このいろいろやってる段階のことを\textcolor{Salmon}{プロセス(過程)}というのかなーと。(当社調べ)


あれ?じゃあ何でインスタンスとかあたかも実体があるように呼ぶんですか?
結局プロセスってモノなの?過程なの?
って疑問を持ったとこで次、いきましょう。

プロセスに実体はあるのかないのか

ってところに関しては、\textcolor{Salmon}{実体っぽくしないと人間さんに理解してもらえないから}、という理由がひとつあるのかな、と私は思っています。
コンピューターさんは0と1で出来た言語を喋ります。こういうやつ。↓

・・・読めない(꒪ཫ꒪; )と焦った方、安心してください。これが読めたら人間の領域を脱出しようとしています。
そして、そのための\textcolor{Salmon}{プロセス}さんです。
処理の過程というふわふわしたものをあたかも実体があるかのように扱うことで、私たち人間(バイナリコードが読める変態を除く)はプログラムがどこまで進んだか、どんな状態になっているのか、などを管理できるわけです!! 朗報!!


このあたりはファイルシステムなるものと似たものがあるのかなと思います(あくまで当社調べ)。
他にも理由はいろいろあると思うので詳しい方いたらぜひコメントください( ᐢ˙꒳​˙ᐢ )

余談

その1
インスタンス(instance)という言葉についてですが、
こちらも辞書を引いてもらえると出てくるんですが、その意味のひとつに
\textcolor{Salmon}{〔一連の出来事の〕過程、ステップ}というのがあります。


オブジェクト指向etcでinstance = 実体に固定されてる方も一定数いるかと思いますが、こういう意味もあるのか!と頭の片隅に置いておくとプロセスの理解に何かしら役に立つかも、ですね!


その2
ちなみにCPUの別名はプロセッサー(processor = 処理をする人(もの))
イメージの助けになるようなそうでもないような?(私は未だにぼんやりとしか分からないヨ!難しいもん(·∀·))


というところで、ではどうやってそのプロセスを管理するのかのコマンドについて。


ここで登場するのが、

psコマンド

psコマンド

そんなプロセスの状態を監視、管理するためにあるコマンド、それが\textcolor{Salmon}{psコマンド}
プロセスには、それぞれ“固有の番号”が割り当てられています。これを「プロセスID(PID)」と呼びます。
【書式】

  • ps 現在動作しているプロセスの一覧を確認

【オプション】
-a 端末が操作しているプロセスを表示
-u 各プロセスのCPUやメモリの使用率を表示
-x 現在実行しているプロセスを表示


ps auxで使うことが多い模様(当社調べ)

実際に見てみよう


恐怖の黒い画面の再来です。
が、恐るなかれ。我々にはPIDという知識があります!


また、
ps --pid プロセスID(プロセスIDを指定して表示する)
ps --ppid プロセスID(親プロセスのプロセスIDを指定して表示する)
こんなこともできます。


これでどのPIDで何のプロセスが動いているか確認できますね!
ちなみにps auxで表示される情報の詳細については次のトグルへgo!

ps auxで表示される情報

【一覧】
USER:実行しているユーザ名
PID:プロセスに割り振られた識別番号つまりプロセスID
%CPU:CPUの使用率
%MEM:メモリ使用率
VSZ:プロセスが確保しいる仮想メモリサイズ
RSS:実際に使用されているメモリ量
TTY:端末名
STAT:プロセスの状態を表示
START:コマンドが起動した時刻
TIME:プロセスが実行された総実行時間
COMMAND:コマンド名


STATの内容】
・R…稼働中
・S…一時停止中
・D…停止不可能で一時停止
・T…終了処理中
・Z…すでに実体がないゾンビプロセス
・W…実メモリ上にはなく、スワップアウトしている
・N…nice値


まとめ

  • プロセスはプログラムを実行中の状態
  • psコマンドは各プロセスを監視、管理するためのコマンド
  • ps auxが一番多く使われている組み合わせ



回し者でも何でもないですが私はLinuxコマンドの練習はここのインフラ仮想環境構築サイトにお世話になってます Y(·∀·)Y


コース一覧はこんな感じ↓  



Linux基礎コースは無料でできるみたいなので、実際にコマンドを叩いてみたい方は是非ともᕙ( ˙-˙ )ᕗ

Discussion