タグ

preemptiveとthreadに関するyassのブックマーク (2)

  • 第19章 スレッド

    rubyスレッド スレッドは「みんな一斉に動く」というのが建前だが、実際には少しの時間ず つ順番に動いているわけだ。厳密に言えばマルチCPUのマシンでそれなりに工 夫すれば同時に二つ動いたりもできるが、それでもCPUの数以上のスレッドが あればやはり順番に動かなければならない。 つまりスレッドを作り出すためにはどこかで誰かがスレッドを切り替えてやら ないといけないわけだが、その手法には大きく分けて二種類ある。 カーネルレベルスレッドと ユーザレベルスレッドだ。これはどちらも読んで字の如く、ス レッドというものをカーネルで作るかユーザレベルで作るかという違いである。 カーネルレベルならマルチCPUを生かして複数のスレッドを同時に動かしたり もできる。 ではrubyのスレッドはどうなのかと言えば、これはユーザレベルスレッドで ある。 そして(それゆえ)同時に動けるスレッドは厳密にただ一つと制限

    yass
    yass 2014/03/09
    " そこでrubyのスレッドはどうかと言うと、Rubyレベルではプリエンプティブで、 Cレベルではノンプリエンプティブである。つまりCのコードを書いているときは スレッドが切り替わるタイミングをほぼ確実に特定できる。"
  • 並列処理/並列化 - le4 parallel programming

    並列処理/並列化 マルチプロセッサ(マルチコア)とマルチスレッド マルチプロセッサ(multiprocessor), マルチコア(multi-core) 複数のプロセッサ(コア)を持つ計算機(ハードウェア) Pプロセッサ(コア)で、理想的にはP倍の高速化 共有メモリ型並列計算機 マルチプロセッサ(マルチコア)計算機上では、 複数のプロセッサ(コア)がそれぞれpcやレジスタ(spを含む)を持ち、 メモリについては共有して動作する。 共有されていないメモリでは, load命令などの実行によりあるアドレスの値を読み出す(read)と, store命令などの実行により最後にそのアドレスに書き込み (write)した値が読み出せる. 共有メモリ(shared memory)は, 非常におおざっぱにいうと: +------------+ +------------+ | processor | | p

  • 1