見出し画像

IT未経験アラサーの学習記録~Linux標準教科書メモ書き 第11章~

皆様こんにちは。Kです。
自己紹介はこちらにまとめているので、お時間がある方はぜひご覧ください。
ここ数日間、Linux標準教科書(Ver.3.0.4)を用いてハンズオン学習に取り組んでいるので、学習記録兼ノートのメモ書きとして記します。

教材
Linux標準教科書 PDF版(無料)

章末テスト解答参考
Yukishi log. 勝手ながらご紹介させていただきました。

学習方法
①教科書を読む ②ハンズオンで挙動を確認 ③新しい知識、教科書外で調べた内容をnoteにまとめる。必要があれば、Lucidchartで図を作成する。

学習環境
Windows PowerShell に Ubuntu-20.04 を入れました。

筆者ITスキル
AWS CLF-01、AWS SAA-03取得済み。
Web技術・ネットワーク・セキュリティ・クラウドの知識については、「イラスト図解式 この一冊で~」シリーズを1周読んだのみ。


第11章 プロセス管理(p197~p206)

11.1 プロセスとは

プロセス:メモリ上で実行中のプログラム(アプリケーション)の管理単位

【プロセス生成から消滅までの流れ】
①ユーザがコマンドを実行する。
②シェルが自身の分身を作る。
 このことを fork という。元からあるシェルを親プロセス、分身を親プロセスという。
③子プロセスがコマンドを実行する。
④コマンドの終了を親プロセスへ伝え、子プロセスは消滅する。
⑤子プロセスからの終了を受け取った親プロセスは、結果(シェルプロンプト)を表示し、次のコマンドに備える。


11.2 スケジューリング

Linux は1つの CPU(Central Processing Unit 中央演算処理装置)でも
マルチユーザ(複数ユーザ同時ログイン可)
マルチタスク(複数プロセス同時実行可)
の OS 。実際にはプロセスは1つずつ実行されており、スケジューラで管理される。

ラウンドロビン方式

①各プロセスは Run Queu で待機。
②自身の順番が来るとCPUを使用できる。一定時間(タイムスライス)の間、処理を進める。
③一定時間経過後、またキューで待機。

Nice 値:プロセスごとに指定可能な実行優先度のパラメータ。-20~19の間で指定。
nice コマンド:Nice 値をプロセスに指定
renice コマンド
:実行中のプロセスの Nice 値を変更

FIFO 方式
First In First Out 先入先出。データの順序が保たれる。

11.3 フォアグランドジョブとバックグラウンドジョブ

ジョブ:シェルが管理するプログラム(プロセスの集まり)の単位undo / redo:操作の取消/操作の取消の取消
サスペンド 「Ctrl」 Z:作業中の状態をメモリに保存した状態で一時停止させ、次回利用するときに中断した状態から復帰できる機能

コマンドをバックグラウンドで起動する

【書式】コマンド &

ジョブ一覧を確認する

【書式】jobs [オプション][% ジョブ番号]

【出力結果】
ジョブ番号/カレントジョブの表示+-/状態/コマンド
【ジョブ番号の指定】
%n     :n 番のジョブ
%+
又は %%:カレントジョブ
%-     
:以前のジョブ

ジョブをバックグラウンドにする

【書式】「Ctrl」 Z
    bg [ジョブ番号]

ジョブをサスペンドしてから行う。ジョブ番号未指定だとカレントジョブがバックグラウンドになる。
fg コマンド:bgコマンドと同様


11.4 プロセス ID

プロセスには一意のプロセス ID(PID)が付与される。シェル自身の PID を取得するには、$$ を出力する。

実行中のプロセス一覧を表示する

【書式】ps [オプション]


11.5 シグナル

シグナル:プロセスを制御するイベント(何らかの状態変化や、ユーザーによる操作によって発生した事象全般)

Linux標準教科(Ver.3.0.4) p201

【シグナル送信方法】
①シェルに割り当てられたキーの入力(Ctrl C や Ctrl Z など)
stty -a コマンド:シグナルとキーの割り当てを確認

kill コマンド:実行中のプロセスにシグナルを送信。デフォルトアクションは上の表にある通りプロセスの終了。オプション・サブオプションの参考:IBM
kill -l コマンド:シグナルの種類を確認

③プログラムで kill() 関数を呼ぶ

sed コマンド:Stream EDitor 入力を行単位で読み取り、sedスクリプトと呼ばれるシンプルな命令文に従ってテキスト変換などの編集をおこない、また行単位で出力する。オプション・サブオプションの参考:IBM


11.6 top コマンドと pstree コマンド

top コマンド:プロセスの状態をダイナミックに表示する。CPU使用率が高い順に表示される。コマンド中にシグナルを送信できる。(参考 Qiita
pstree コマンド
:プロセスの親子関係をツリー表示する。


11.7 プロセス間通信

プロセス通信 IPC Inter Process Communication:複数のプロセスがコミュニケーションを取りながら同期したり、動作を変更してある処理を完了すること。

【分類】(参考 Qiita
通信:プロセス間のデータ通信、交換に関する機構
同期:プロセス、スレッド間の同期に関する機構
シグナル:条件によっては同期にも通信にも用いることが出来る

System V IPC と POSIX IPC が存在する。POSIX IPC が後出。
基本的には同じ。細かい違いは Web 参照(Qiita , stack over flow

【それぞれの特徴】
通信
パイプ:パイプ左側コマンドの標準出力を右側コマンドの標準入力に繋ぐ
共有メモリ
:特定のメモリ領域を複数のプロセスで共有することでメッセージの受け渡しができる
メッセージキュー
:キューにメッセージを格納しておき、複数のプロセス間での非同期の通信を実現
同期
シグナル
:特定のシグナルの受信を持って特定の処理を開始する
セマフォ:資源のロックを行い、複数のプロセス間で同時に書き込みをしたりしないよう排他処理を実現
ソケット:ネットワーク経由のホスト間のプロセスでの通信を実現



章一覧

第1章 Linux とは
第2章 Linux のインストール(環境構築不要のため未実施)
第3章 基本的なコマンド
第4章 正規表現とパイプ
第5章 基本的なコマンド2
第6章 viエディタ
第7章 管理者の仕事
第8章 ユーザ権限とアクセス権
第9章 シェルスクリプト
第10章 ネットワークの設定と管理
第11章 プロセス管理
第12章 ファイル管理

この記事が気に入ったらサポートをしてみませんか?