マルチプログラミング

読み:まるちぷろぐらみんぐ / 英語表記:multiprogramming

主記憶に複数のプログラムを置き、あるプログラムが入出力などで待っている間に、別のプログラムにCPUを割り当てることで、CPUを有効に使う方式。同時に実行できるジョブの数を多重度という。

イマシルちゃんの解説

洗濯機を回している間に、料理を作る。料理を煮込んでいる間に、掃除をする。
こうやって、待ち時間に別のことをすれば、1日にたくさんの家事ができるよね。

コンピュータも同じで、あるプログラムがデータの読み込みを待っている間に、別のプログラムを動かすんだ。
これがマルチプログラミング!
CPUがぼーっと待っている時間を減らせるんだよ。

より深い解説

定義

マルチプログラミング(多重プログラミング)は、複数のプログラム(ジョブ)を主記憶に置いて並行して実行させ、あるジョブが入出力の完了を待っている間に、ほかのジョブにCPUを割り当てる方式である。入出力装置はCPUに比べて非常に遅いため、1つずつ実行すると、CPUが何もしていない時間が長くなる。マルチプログラミングによって、CPUの使用率とシステム全体のスループットを高められる。

多重度

同時に実行状態に置けるジョブの数を、多重度という。

多重度動作
1一度に1つのジョブだけを実行する。前のジョブが終わるまで、次のジョブは待つ
2以上複数のジョブを並行して実行する

多重度が1のシステムでは、ジョブは到着順などの規則に従って1つずつ実行されるため、ターンアラウンドタイムは「前のジョブの終了を待つ時間」と「自分の処理時間」の合計になる。

多重度1と2の比較(CPUだけを使うジョブの例)

ジョブ到着時刻処理時間
A04
B04
多重度Aの終了Bの終了
1(到着順)48
2(CPUを半分ずつ使う)88

CPUだけを使うジョブでは、多重度を上げても全体の終了時刻は変わらず、個々のジョブの終了は遅くなることもある。マルチプログラミングの効果が大きいのは、入出力の待ちが多いジョブを組み合わせた場合である。

多重度を上げすぎると

多重度を上げるほどCPUを有効に使えるとは限らない。主記憶に載せるジョブが増えると、仮想記憶のページの置き換えが頻繁に起こり、処理のほとんどがページの入れ替えに費やされて、性能が急激に落ちることがある。これをスラッシングという。

似た用語との区別

用語意味
マルチプログラミング1つのCPUで、待ち時間を利用して複数のジョブを並行して実行する
マルチタスクOSが、複数のタスク(プロセス)を短い時間で切り替えながら実行する。利用者からは同時に動いているように見える
マルチプロセッサ複数のCPU(コア)で、実際に同時に処理する
タイムシェアリングCPUの時間を細かく区切って、複数の利用者に順番に割り当てる

実際の試験ではここに出る!

この用語が出てくる記事

↑