わかりやすく コンテキストスイッチ とは
作業を切りかえるたびに、どこまでやったかを書きとめ、戻ってきたらそのメモを読み込みます。交代のしくみの裏には、この小さなメモがあるのです。
止めるときはメモを残す
机で仕事をしている最中に、急に別のことをしなければならなくなったとしましょう。そのまま席を立つと、戻ってきたときにどこまでやったか思い出せません。
そこで「ここまでやった」とメモを一枚書いてから席を離れ、戻ったらそのメモを見て、途切れたところからすぐ続けます。
コンピュータも同じことをします。作業を止めるとき、いまの状態をメモのようにまるごと保存しておき、戻るときにそれをそのまま読み込むのです。
ゲームをいったん止めて、またつけてもその場所から続けられるのも、止めた瞬間の状態を保存しておいたからです。
離れる前に状態を書きとめ、戻ってきたらそのまま続けます。
作業を止めるときは状態を保存し、戻るときはその状態を復元します。
切りかわる瞬間を広げてみる
作業を切りかえる、その短い瞬間をゆっくり広げてみましょう。
まず作業Aが動いています。切りかえるときが来たらAの状態を保存し、次に作業Bの保存しておいた状態を読み込みます。そこでやっとBが動き始めます。
ここで大事なのは、保存と読み込みのあいだは、AもBも仕事ができないということです。その時間は、純粋に席を入れかえるために使われます。
保存が終わらないと復元を始められないので、この空き時間は飛ばせません。
保存と復元のあいだは、どの作業も進みません。
切りかえは保存と復元の二つの段階でできていて、そのあいだは何も進みません。
頻繁に切りかえるほど損をする
切りかえには、いつも少しコストがかかります。メモを書いて読み直す、その時間です。
下のスライダーで、同じ1秒のあいだに作業を何回切りかえるかを調整してみましょう。切りかえる回数が増えるほど席を入れかえる時間が増え、本当に仕事をする時間は減っていきます。
切りかえが少なすぎると一つの作業が席を長く占めすぎ、多すぎると切りかえに追われて仕事ができません。だから、ほどよいバランスが必要です。
プログラムをたくさん開きすぎるとコンピュータが重くなる理由の一つも、切りかえにかかる時間が積み重なることです。
スライダーを動かすと、切りかえのコストが仕事の時間をどれだけ削るかがわかります。
切りかえはただではないので、頻繁にしすぎると仕事の時間が削られます。
同じ時間、違う結果
まったく同じ時間で、二つのやり方を並べて見てみましょう。
左はたまにしか切りかえません。入れかえに使うマスが少ないので、仕事のマスが多くなります。右はとても頻繁に切りかえます。マスごとに切りかえのコストが割りこむので、仕事ができたマスは少なくなります。
どちらも時間は同じだけ流れたのに、終わってみると処理した量が違います。差を生んだのは仕事の量ではなく、切りかえで捨てた時間です。
人も、いくつもの仕事をしょっちゅう行き来すると、忙しいばかりで終わる仕事が少ないのと同じです。
二本とも長さは同じですが、頻繁に切りかえるほうは仕事のマスが少なくなります。
切りかえが多いと、同じ時間を使っても実際に処理できる量が減ります。
一枚にまとめる
覚えておくことは三つだけです。
一つ目、メモがそのまま状態です。作業が止まるとき、ここまでの進みをまるごと保存することが、メモを残すということです。
二つ目、切りかえるとは保存して読み込み直す二つの動作で、そのあいだはどの作業も進みません。三つ目、だから頻繁すぎると損をします。切りかえの時間が積もると、本当に仕事ができる時間が減るからです。
結局、一つしかない働き手でいくつもの仕事をこなす秘訣が切りかえで、それをほどよく行うのがこつなのです。
メモは状態、切りかえは保存と復元、頻繁すぎると損。