「マルチタスク(ファイルアクセス時のCPU有効活用)」をシミュレーターで体感してみよう!
前回に続いて、CPUを複数のタスクを動かす「マルチタスク」について解説します!
前回、時間ごとにタスクにCPUを「タイムシェアリング方式」だとCPUに無駄が発生するという話をしました。今回はその無駄を省くために、ファイルアクセス時にコンピューターは何をしているのかを解説します!
目次
「ファイルアクセスは時間がかかる」⇒「他のタスクに代わってもらう」
前回のシミュレーターでは、ファイルアクセスをしたらCPUはがら空きになりました。これではもったいないですよね!貴重なCPUなので、無駄なく処理させたいのです。
そこで、タスクに優先順位をつけて、!
ファイルアクセスが終わったら再度そのタスクを実行させる!
「ファイルアクセスが発生⇒他のタスクにCPUを渡す」だけだと、ファイルアクセスが多く発生する処理(大量ファイル読み込み、データベース処理)などでは明け渡しばかりになってしまいます。
そこで、タスクに優先順位をつけて、「ファイルアクセスが終わったら、そのタスクにCPU処理を戻す」ということを行うのが一般的です。これを「IO発行によるコンテキストスイッチ」といいます。
「マルチタスク(ファイルアクセス時のCPU有効活用)」をシミュレーターで確認してみよう!
実際にファイルアクセス時のタスク切り替えの動作を確認してみましょう!
- 上3つのグラフはタスク1~3の実行時間を示すものです。赤線がある時間帯でCPUを使えて、そのタスクを実行できたことを指します
- タスク1,2,3の順番で優先順位をつけて稼働します
- タスクはCPUとメモリを相互アクセスして実行していきます
- ファイルアクセスボタンを押すと、実行中のタスクでストレージアクセスを発生させる事ができます
「マルチタスク(ファイルアクセス時のCPU有効活用)」シミュレーターの要点解説
ファイルアクセス時に他のタスクにCPUを渡すことで、CPUが有効活用できる
前回のタイムシェアリング方式では、ファイルアクセスをするとCPUに空き状態が出来ていました。それに対して、今回は↓のようにタスク2,3にCPUを明け渡すことで、効率的にCPUが使えています。
タスク1のファイルアクセスが終わったら、またタスク1を優先して実行することにより、隙間なくCPUが使えるわけです!
このままだとタスク1だけがCPUを占有してしまう可能性有り
この方式だと、タスク1でファイルアクセスが発生しなかった場合、タスク1だけが永遠に処理されていきます。不平等ですよね。なので、実際はこれにタイムシェアリングを混ぜたような方式で実行されていく形になります。
平等性と、効率性のトレードオフを考えて、タスク処理の計画を練るわけです!
- コンピューターはファイルアクセス時にCPUが無駄にならないよう、他のタスクに順番を明け渡す
- ファイルアクセスが終わるまで、優先度低のタスクに処理させることで隙間なくCPUが使える
- 優先度高いタスクがファイルアクセスがないと不平等になるため、実際は時間によるタスク切り替えも発生する
⇒「コンピューター概論」カテゴリ記事一覧
その他関連カテゴリ