初心者のWEBデザイン

HTML,CSS、その他WEBデザインに関する事を記述していきます。

Linuxソフトウェアの概要

プロセス

実行するプログラムの単位

  • 一つのプロセつは1つのメモリ空間を持つ(別のプロセスとの間の変数アクセスは不可)
  • PID(Process ID)・task_struct構造体(task_t型)で管理される
  • 親プロセスが存在する

プロセス作成の仕組み

  1. プロセスはシステムコール fork()で子プロセスを作成(親プロセスになる)
  2. システムコール exec()で新しいプログラムを実行
  3. 子プロセスはexit()で終了
  4. 親プロセスはシステムコール wait()で子プロセスの終了ステータスを取得(監視)


例えばShellで何かコマンドを実行した場合、シェルが親プロセスになり実行したコマンドが子プロセスとして動作する。

スレッド

プロセス内の処理単位を細かくしたもの

IPC

前述で説明した通り、ユーザー空間の各プロセスは、別の仮想空間メモリで動作してる為
お互いのメモリのアクセスは出来ない。
IPCがプロセス同士でアクセスや処理をする場合に、プロセス間の通信を担う。

IPCの種類
シグナル プロセスに対して決まった通知をする。決まった内容しか通知できない。システムの事象を通知するために用いる。
パイプ’ 親子関係があるプロセス間で利用できる。単方向通信のみで双方向通信は不可。
FIFIO 親子関係がないプロセス間で利用される。双方向通信可。
セマフォ プロセス間でデータへのアクセス制限をする場合に用いる。デッドロックの原因になりやすい
メッセージキュー 異なるプロセス同士が1対1で通信する場合に利用される。AからBにデータや処理を依頼する場合に、Aはメッセージを生成してキューを置き、Bに処理を依頼する。
共有メモリ プロセス同士でデータを交換する場合に利用される。メッセージキューより大きなデータのやり取りが可能。
ソケット ネットワークの通信に利用される。同一システム・異なるシステムとのプロセス間通信で利用される。

カーネル

OSの核の部分
システムコールインターフェースをユーザー空間に提供する
ユーザーがファイルを開く場合には、下記の経過をたどっている。
ユーザーからファイルを開くプロセスを実行 > カーネルが提供するopen()が呼び出される > 実行結果が返ってくる