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時間