Help us understand the problem. What is going on with this article?

スレッドとマルチプロセスの比較

More than 3 years have passed since last update.

半年間、MySQLを基礎からやり直すことにしたので、その間に勉強したことをQiitaに投稿していきます。

スレッドとマルチプロセスの大まかな違い

大きな違いとしては、子スレッドは親とヒープ(グローバルなプログラムデータ)を共有するのに対し、
子プロセスは共有しない

スレッドのメリット・デメリット

メリット

  • メモリ使用率が低い。
  • サーバグローバルデータにアクセスするのに高度なテクニックがいらない。
  • 同時実行スレッドによるデータ変更の際も、相互排除ロック(ミューテック)を使用して該当セクションを保護するだけで済む。
  • ヒープセグメントをコピーする必要が無いので、プロセスよりもずっと少ない時間で作成できる
  • スケジューラのコンテキストスイッチでカーネルが要する時間が、プロセスよりも少ない

デメリット

  • 1つのスレッドがクラッシュするとサーバ全体に影響が及んでしまう
  • プログラミングミスが起こりやすい
  • スレッドサーバでの同期バグ(共有アドレス空間による)
  • ミューテックス競合が起こると収拾がつかなくなる(過度なコンテキストスイッチ発生の原因になる)

マルチプロセスのメリット・デメリット

メリット

  • 不正なサーバプロセスがあってもサーバ全体へ影響が出ない
  • 1つの実行スレッドのみを頭に入れていればよいので、プログラミングミスが起きにくい
  • ファントムバグ(意図的に再現できないバグ)が起きる可能性が低い為、バグの再現が容易に行える
  • 個々のプロセスで専用のアドレス空間を持つ為、プロセス間での相互作用は大きくならない

デメリット

  • 子プロセスが分岐した場合、大きなメモリセグメントが不要にコピーされる可能性がある
  • プロセス間でデータを共有するのに手間がいり、サーバグローバルデータへのアクセスが面倒
  • プロセスの作成にカーネルにより多くのオーバヘッドを強いる
  • 親プロセスのデータセグメントをコピーしなければならない
  • プロセス間のコンテキストスイッチにより多くの時間を消費する

考察

接続ハンドラ間で、大量のデータを共有する必要がある(プログラムスキルが高い)場合は、スレッドサーバが向いてているかと個人的には思いました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした