
t0mmy
2020年12月30日に参加
学習履歴詳細
Linuxの仕組み 5章 プロセス管理 読了
やったこと
- Linuxの仕組み 5章 プロセス管理 読了
学んだこと
学び
- メモリの効率化に余念がない
- Copy on Write (CoW)
- パイプも、プロセス間通信手段の一つ
- ソケットには以下の二つが存在する
- Unixドメインソケット
- TCP/UDPソケット
- flock / fcntrl システムコールの存在
- マルチスレッド/マルチプロセスの利点と欠点
気付き
- 共有メモリのやってることは、グローバル変数と変わらない
- 極力使用は避ける
- マルチスレッド処理を実装する場合は、言語が提供する便利な機能を活用しよう
- 自力でスレッドセーフなプログラムを組むのは大変
メモ
コピーオンライトによる、プロセス作成処理(fork)の高速化
- fork実行時、親ページのページテーブルのみコピーする(親プロセスが使用しているメモリはコピーせず、親子で共有する)
- 子プロセス側で更新処理を行った時に初めて、該当部分だけ子プロセス用メモリ領域を確保する
デマンドページングによる、execve関数の高速化
- execve関数実行時も、デマンドページングの仕組みを用いて、実行に必要な物理メモリを割り当てている
プロセス間通信
■共有メモリ
- 親プロセスと子プロセスで共有できるメモリ領域のこと
- 子プロセスで共有メモリを更新すると、親プロセスにも反映できる
- mmap システムコールを使用することで、共有メモリを確保できる
■シグナル
- 「シグナルが届いた」という情報を別プロセスに伝える仕組み
- データの受け渡しは出来ないため、データの受け渡しをしたい場合は別途仕組みを用意すること
■パイプ
- あるプロセスの出力を、別のプロセスに入力する仕組み
- 確かにプロセス間通信
■ソケット
- プロセス間で通信する仕組みの一つ
- ソケットには以下の二つが存在する
- Unixドメインソケット
- 一つのマシン上のプロセス間で通信できる
- 言い換えると、マシンをまたいだプロセス間通信はできない
- TCP/UDPソケット
- TCP/IP を活用したプロセス間通信
- TCP/IP を実装していれば、マシンをまたいだ通信が可能
排他制御
- flock / fctcl システムコールを使用することで、ファイルのアトミック制御を実現できる
マルチプロセス/マルチスレッドの利点と欠点
■利点
- プロセスと比較して、スレッドの生成時間が短い
- ページテーブルのコピーが不要のため
- リソースを節約しやすい
- リソースの共有が容易のため
- 協調動作が容易
- 全スレッドでメモリを共有するため
■欠点
- 一つのスレッドの障害が、全スレッドに波及する
- 各スレッドが呼び出す処理が、スレッドセーフか常に考慮する必要がある
linux
2023年03月26日(日)
1.5時間