FE EXAM

マルチタスク(時分割の切替実行)

1つのCPUで複数のタスクを短い時間ごとに切り替えて、同時に動いているように見せる方式。

INTERACTIVE VISUALIZATION
タスクA
タスクB
タスクC
フェーズ
idle
実行中
状態
開始前
シナリオ
ステップ1 / 6
STEP 1/63つのタスクが実行を待っているタスクA・B・Cの3つを同時に動かしたいとします。タスクとは「実行させたい仕事の単位」のことです。ところがCPU(=中央処理装置、計算の中心)は1つしかなく、ある一瞬に実行できるのは1つのタスクだけです。横軸は時間の流れを表し、左から右へ進むほど時間が経過します。
タスクAタスクBタスクC時間 →0
解説

📌
マルチタスクとは

CPUABCAB時間 →(少しずつ切り替える)

マルチタスクとは、1つのCPU(=中央処理装置、計算の中心)で複数のタスクを切り替えながら実行し、見かけ上同時に動かす方式のことです。タスクとは「実行させたい仕事の単位」を指します。

身近な例で考えると、1人の店員が複数の客を少しずつ交代で対応する場面に似ています。客から見ると自分だけが対応されているように感じますが、実際は店員が素早く相手を入れ替えているだけです。

上のツールで▶ボタンを押すと、CPUがタスクA→B→Cと順番に少しずつ実行し、最後にはまるで同時に動いているように見える流れを確認できます。

⏱️
時分割の仕組み

ABCABC1スライス

時分割とは、CPUの時間を「タイムスライス」と呼ぶ短い時間に区切り、各タスクへ順番に割り当てるやり方です。タイムスライスとは「各タスクに与える、ほんの短い持ち時間」のことです。

処理の流れは次のようになります。
① 割当て:タスクAにタイムスライスを与えて少し実行する
② 切替:時間が来たらAを中断し、次のタスクBへ交代する
③ くり返し:B→C→A…と高速にこれをくり返す

ここで大事なのは、ある一瞬には1つのタスクしか動いていないという点です。切替がとても速いため、人間の目には複数が同時に動いているように見えるだけです。パラパラ漫画を速くめくると絵が動いて見えるのと同じ理屈で、上のツールでもA・B・Cが順番に点灯していく様子を確認できます。

⚖️
マルチコアとの違い

マルチタスク(1コア)ABC順番に切替(見かけ上)マルチコア(複数コア)ABC同時に並列(本当に)

よく混同されるのがマルチコアです。コアとはCPUの中にある「計算する頭脳」の単位で、マルチコアは頭脳を複数積んだCPUを指します。両者の違いは次のとおりです。

項目マルチタスクマルチコア
コアの数1つ複数
同時実行見かけ上の並行(切替)本当の並列(同時)
一瞬に動くタスク数1つコアの数だけ

まとめると、マルチタスクは1コアでの「見かけ上の並行」、マルチコアは複数コアでの「本当の並列」です。実際のパソコンでは、複数コアの上でさらにマルチタスクを行うなど、両方を組み合わせて使われています。

🔄
コンテキストスイッチとは

タスクA実行中OSが状態を保存レジスタ・実行位置などを記録タスクB開始A→Bへの切替(コンテキストスイッチ)

コンテキストスイッチ(文脈切替)とは、あるタスクを中断して別のタスクへCPUを渡す際に行われる「状態の保存と復元」の操作のことです。コンテキスト(文脈)=「タスクがどこまで実行したか、という情報」を指します。

なぜ状態の保存が必要なのか。タスクAを中断するとき、CPUは次にどこから再開するか、計算の途中結果はどうなっているかを覚えておかなければなりません。これを保存しないと、再開時に最初からやり直しになってしまいます。
①保存:タスクAの状態(どこまで実行したか・計算途中の値など)をOSが記録する
②切替:CPUをタスクBへ渡す
③復元:次にAに戻るとき、保存した状態を読み込んで中断した場所から再開する

身近な例で考えると、読んでいた本に「しおり」を挟んで別の本を読み、戻ってきたらしおりから再開するようなイメージです。このコンテキストスイッチが高速に繰り返されることで、マルチタスクが成り立っています。

💡
なぜマルチタスクが必要なのか

シングルタスク(1つずつ)A終了B終了C終了B・Cは長い間ずっと待ち続けるマルチタスク(切替)ABCA全タスクが少しずつ進む体感:長い間待たされる体感:みんな動いている

マルチタスクが必要な最大の理由は「ユーザーを待たせないため」です。コンピュータはブラウザで動画を見ながらメールを書いたり、音楽を流しながら書類を作ったりと、常に複数の仕事を同時に求められています。

もしマルチタスクがなければどうなるか。一つの処理が終わるまで次の操作は一切受け付けられません。たとえばファイルのダウンロード中はキーボードも効かず、画面も固まったまま——という体験になってしまいます。
シングルタスク(1つずつ順番):あるタスクが終わるまで他のすべてが止まる
マルチタスク(素早く切替):どのタスクも少しずつ進むので全員が「動いている」と感じられる

CPUの切替速度は人間の感覚より圧倒的に速いため、タスクが交互に動いていることはほぼ意識されません。マルチタスクは「1台のCPUをみんなで公平に少しずつ使うことで、全体として快適な体験を生み出す」仕組みです。

練習問題

🎯
基本情報技術者 練習問題

Q1.マルチタスクの説明として最も適切なものはどれか。
A.1つのCPUで複数のタスクを切り替えながら実行し、見かけ上同時に動かす方式
B.複数のCPUコアでそれぞれ別のタスクを本当に同時実行する方式
C.1つのタスクを終えてから次のタスクを始める方式
D.タスクを実行せずに待機させ続ける方式
Q2.時分割(タイムスライス方式)の説明として正しいものはどれか。
A.CPU時間を短いタイムスライスに分け、各タスクに順番に割り当てる
B.タスクごとに専用のCPUを1つずつ用意する
C.優先度の高い1つのタスクだけをずっと実行し続ける
D.タスクを実行せず保存だけしておく
Q3.マルチタスクとマルチコアの違いとして正しいものはどれか。
A.両者はまったく同じ意味である
B.マルチタスクは1コアで見かけ上の並行、マルチコアは複数コアで本当の並列実行
C.マルチタスクは複数コアで並列、マルチコアは1コアで時分割
D.マルチコアではタスクを切り替えられない

関連コンテンツ