タグ

2016年7月12日のブックマーク (2件)

  • Threadのスタック - memologue

    Linuxでpthread_create()をすると、生成されたスレッドにはそれ固有のスタック領域が割り当てられる。具体的にどのように割り当てられるのかを調査。 stack smash 対策を考える1場合、スタックの割り付け方を知っていると多少有益かもしれないので[securiy]カテゴリにも入れてみました。なお、exec-shield などの、address space randomize系パッチとの相互作用は未調査です。調べないとなぁ…。SELinuxで遊ぶ計画も延び延びだ。 NPTLのstack allocation手法 NPTLで、pthrad_create()時にそのスレッド用のスタックがどう割り当てられるか調査した。調査といっても nptl のソースコードを軽く読んだだけですが。 (1) スタックサイズ nptl/allocatestack.c を見るに、pthread_set

    Threadのスタック - memologue
  • マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー

    また Linux カーネルの話です。 Linux では fork によるマルチプロセスと、pthread によるマルチスレッドでの並行処理を比較した場合、後者の方がコストが低く高速と言われます。「スレッドはメモリ空間を共有するので、マルチプロセスとは異なりコンテキストスイッチ時にメモリ空間の切り替えを省略できる。切り替えに伴うオーバーヘッドが少ない。」というのが FAQ の答えかと思います。 が「オーバーヘッドが少ない」と一言にいわれても具体的にどういうことなのかがイメージできません。そこで Linux のスレッド周りの実装を見て見ようじゃないか、というのが今回のテーマです。 3分でわかる(?) マルチプロセスとマルチスレッド まずはうんちく。マルチプロセスとマルチスレッドの違いの図。以前に社内で勉強会をしたときに作った資料にちょうど良いのがあったので掲載します。Pthreadsプログラミ

    マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー