1つのCPUで複数のタスクを短い時間ごとに切り替えて、同時に動いているように見せる方式。
マルチタスクとは、1つのCPU(=中央処理装置、計算の中心)で複数のタスクを切り替えながら実行し、見かけ上同時に動かす方式のことです。タスクとは「実行させたい仕事の単位」を指します。
身近な例で考えると、1人の店員が複数の客を少しずつ交代で対応する場面に似ています。客から見ると自分だけが対応されているように感じますが、実際は店員が素早く相手を入れ替えているだけです。
上のツールで▶ボタンを押すと、CPUがタスクA→B→Cと順番に少しずつ実行し、最後にはまるで同時に動いているように見える流れを確認できます。
時分割とは、CPUの時間を「タイムスライス」と呼ぶ短い時間に区切り、各タスクへ順番に割り当てるやり方です。タイムスライスとは「各タスクに与える、ほんの短い持ち時間」のことです。
処理の流れは次のようになります。
・① 割当て:タスクAにタイムスライスを与えて少し実行する
・② 切替:時間が来たらAを中断し、次のタスクBへ交代する
・③ くり返し:B→C→A…と高速にこれをくり返す
ここで大事なのは、ある一瞬には1つのタスクしか動いていないという点です。切替がとても速いため、人間の目には複数が同時に動いているように見えるだけです。パラパラ漫画を速くめくると絵が動いて見えるのと同じ理屈で、上のツールでもA・B・Cが順番に点灯していく様子を確認できます。
よく混同されるのがマルチコアです。コアとはCPUの中にある「計算する頭脳」の単位で、マルチコアは頭脳を複数積んだCPUを指します。両者の違いは次のとおりです。
| 項目 | マルチタスク | マルチコア |
|---|---|---|
| コアの数 | 1つ | 複数 |
| 同時実行 | 見かけ上の並行(切替) | 本当の並列(同時) |
| 一瞬に動くタスク数 | 1つ | コアの数だけ |
まとめると、マルチタスクは1コアでの「見かけ上の並行」、マルチコアは複数コアでの「本当の並列」です。実際のパソコンでは、複数コアの上でさらにマルチタスクを行うなど、両方を組み合わせて使われています。
コンテキストスイッチ(文脈切替)とは、あるタスクを中断して別のタスクへCPUを渡す際に行われる「状態の保存と復元」の操作のことです。コンテキスト(文脈)=「タスクがどこまで実行したか、という情報」を指します。
なぜ状態の保存が必要なのか。タスクAを中断するとき、CPUは次にどこから再開するか、計算の途中結果はどうなっているかを覚えておかなければなりません。これを保存しないと、再開時に最初からやり直しになってしまいます。
・①保存:タスクAの状態(どこまで実行したか・計算途中の値など)をOSが記録する
・②切替:CPUをタスクBへ渡す
・③復元:次にAに戻るとき、保存した状態を読み込んで中断した場所から再開する
身近な例で考えると、読んでいた本に「しおり」を挟んで別の本を読み、戻ってきたらしおりから再開するようなイメージです。このコンテキストスイッチが高速に繰り返されることで、マルチタスクが成り立っています。
マルチタスクが必要な最大の理由は「ユーザーを待たせないため」です。コンピュータはブラウザで動画を見ながらメールを書いたり、音楽を流しながら書類を作ったりと、常に複数の仕事を同時に求められています。
もしマルチタスクがなければどうなるか。一つの処理が終わるまで次の操作は一切受け付けられません。たとえばファイルのダウンロード中はキーボードも効かず、画面も固まったまま——という体験になってしまいます。
・シングルタスク(1つずつ順番):あるタスクが終わるまで他のすべてが止まる
・マルチタスク(素早く切替):どのタスクも少しずつ進むので全員が「動いている」と感じられる
CPUの切替速度は人間の感覚より圧倒的に速いため、タスクが交互に動いていることはほぼ意識されません。マルチタスクは「1台のCPUをみんなで公平に少しずつ使うことで、全体として快適な体験を生み出す」仕組みです。