https://zenn.dev/hsaki/books/golang-concurrency/viewer/kernel
上記サイトのページにて、
ユーザー空間上のプロセス(orスレッド)と、カーネル空間上のスレッドの対応に関しての部分(中盤少し下)で対応がN:1の説明の部分にて、 どれだけユーザー空間上でスレッドを作ったとしても、カーネル空間上では1つにまとまってしまうので、マルチプロセッサでの並列処理というのは起こりえません。その代わりコンテキストスイッチのコストを削減することができます。
という部分があり、少し理解に戸惑いましたので質問させていただきます。
コンテキストスイッチのコストを削減という部分は具体的にはどう解釈すべきでしょうか?
1:1だろうと、N:1だろうと、システムコールした際には必ずカーネルスレッドへの切り替えのためにコンテキストスイッチが発動すると思います。
このコンテキストスイッチでN:1の場合には1側(カーネルスレッド)が常に同一のアドレスであるため、そのアドレスを特定する手間がいらないという意味でコスト削減なのでしょうか?
それとも本来は発動するコンテキストスイッチが発動しないという意味でのコスト削減なのでしょうか?
自分の中での整理が崩れるため前者であってほしいと考えておりますが...
よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー