マルチ・タスキング
割込みをきっかけにして別のプログラムを実行することで、複数のプログラムを並行して動かす仕組み。きっかけとなる割込みの代表的なものとして、I/O動作完了の待ち合わせなどを行うためのWAIT要求によるSVC割込みやタイマー完了による外部割込みがあります。1つのCPUは一時点では1つのプログラムしか動かせませんが、入出力待ちなどを利用して動かすプログラムを次々と切り替えることで、あたかも複数のプログラムを同時に動かしているように見えます。
入出力などを行わずに延々と計算処理だけを長時間繰り返しているようなプログラムがあっても、OSにはハードウェアのタイマー機構によって極めて短時間のタイマー完了事象が通知される(*1)ので、そのタイミングで別のプログラムに切り替えることができます。なお、今日のコンピューター・システムでは複数のCPUが実装されることが普通になっているので、その場合はCPUの数だけプログラムを並行ではなく同時に実行することができます。1つ1つのCPUにおけるマルチ・タスキング制御と併せて大量のプログラムがより効率よく実行されるようになっています。
*1 z/OSでは1秒間に数千回もの外部割込みが通知される。
アクセス時間 | 装置種別 | 装置速度 | 備考 |
---|---|---|---|
■ | CPUキャッシュ | ナノ秒 | ナノ秒単位の世界 ↑ 100万倍の速度差 ↓ ミリ秒単位の世界 |
■■ | DDRメモリー | 数10~100ナノ秒 | |
■■■■■ | フラッシュメモリー(SSD) | 数10~数100マイクロ秒 | |
■■■■■■■■ | 磁気ディスク(HDD) | 数10ミリ秒 |
メモリーもディスクも人間から見れば圧倒的に速いので速度差は実感できないが、100万倍の速度差というのは、CPU内にキャッシュされたデータへのアクセスに仮に1秒掛かるとすればディスクへのアクセスには11日間掛かることになる位の違い。メモリーからはすぐに取り出せるが、ディスクからデータを読んだらそのデータが届くのは11日後。メモリーとディスクではそのくらいの速度差がある。昔に比べればディスクも速くなっているが、CPUもメモリーも速くなっているので相対的な速度差は何十年も変わっていない。SSDであればデバイス自体の速度差は縮まってくる。
上の表が示すように、メモリーと外部入出力装置には圧倒的な速度差があります。DASDは高速なデバイスですが、それでもCPU内部の速度に比べれば100万倍もの開きがあります。プログラムが入出力を行うと、それが完了するまでコンピューターの中ではとてつもなく長い時間が経過します。たかが1レコードであっても、I/O完了待ちの間にCPU内では大量の処理を行うことができるので、その間に別のプログラムを実行するような制御は理にかなっています。z/OS(MVS)では、ディスパッチャーがアドレス空間やタスクの優先度に応じたマルチ・タスキングの制御を行っています。