3章、スレッドと軽量プロセス で混乱気味。
3.2 基本的な概念要素 で
本節では、3つの重要なタイプであるカーネル・スレッド、軽量プロセス、ユーザ・スレッドについて述べる
とある。ここの軽量プロセス( lightweight process, LWP ) が、?
カーネル支援ユーザ・スレッドのことである
と書かれていて、読んでる最中はいまいちピンと来ず、 「支援」と書かれているからかな・・と思い
すべてのプロセスは、1つあるいはそれ以上のLWPを持つ。その各LWPは別個のカーネル・スレッドで支援されている(図 3.4)
その図には 1つの P(プロセス) が複数のL(LWP) と対応していて、L と K(カーネル・スレッド) が 1:1 で対応している。
各LWPはカーネル・スレッドに関連している一方で、カーネル・スレッドにはシステム・タスクに貢献してLWPを持たないものもある。
・・・その後に
メモ: LWP という術語は、SVR4/MP と Solaris 2.x の術語から借りてきたものである。 SunOS バージョン 4.x では、LWP は次の項のユーザ・レベル・スレッドを指しているので、混乱がある。しかし、本書では、LWP をカーネル支援ユーザ・スレッドとして一貫して用いる。あるシステムでは、仮想プロセッサとして用いているが、本質的には LWP と同じである。
はい・・?
カーネルがLWPを生成、同期、管理する機構を提供する一方で、LWPの賢明な使用はプログラマに任される。多くのアプリケーションはユーザ・レベル・スレッド機能の方がよりよいサービスを受けられる。
と。スレッドのご利用は計画的にと。「次の項」の 3.2.3 ユーザ・スレッドには以下
Mach の Cスレッドや POSIX の pスレッドなどのライブラリ・パッケージを介して実現する。
うーん・・?グリーンスレッドとは違う?ややわけがわから無くなってきたのでなんとなく wikipedia を頼ると・・・ https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)#%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%81%A8%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89
書かれている、「カーネルスレッドとLWPを総称してネイティブスレッドと呼ぶこともある。」だと自分としてはしっくりくる感。
その後の 3.5 節ではスケジューラ・アクティベーションが出てくる。前の NetBSD 。https://ja.wikipedia.org/wiki/Scheduler_activations
「Scheduler activations は 1999年に Anderson、Bershad、Lazowska、Levy により提唱された」と書かれているけど 1991年ではないかな。Received June 1991; revised August1991; accepted September 1991とある。
https://en.wikipedia.org/wiki/Light-weight_process
原書が出た当時に触ってたら「これなー」となるんだろうな。2000年代前半にいた職場では Solaris 入れたラップトップを持ってる人いたけど、LWP がどうの、というのは一度も聞いたことがなかったなぁ。
https://docs.oracle.com/cd/E19253-01/819-0390/mtintro-75924/index.html
その後2003年には Linux で ネイティブなパジックススレッドライブラリが出てくる。
Red Hat Linux 9 のプレスリリース残ってるのね
https://www.redhat.com/en/about/press-releases/press-redhatlinux9
0 件のコメント:
コメントを投稿