様々な学問/勉強課目をシミュレーションで解説!シミュレーター/ツール/ゲームで、いろんな学問を楽しく分かりやすく解説するサイトです!思考の改善や、効率化の話題も!
⇒ 本ブログの詳細/連絡先はコチラ!
学問系TOP AI/ChatGPT 数学 物理 統計学 コンピューター 経済学 Webツール
  1. ホーム
  2. 〇学問シミュレーター/改善・効率化
  3. 情報科学/コンピューター
  4. OS
  5. 主記憶管理
  6. 「マルチタスク時のメモリの奪い合い/スラッシング」をシミュレーターで解説します!
■注目記事一覧

高校数学 教科書用シミュレーターの制作に携わりました!!

ページングをシミュレーターで体感しよう!

本サイトの「サイコロ シミュレーター」が熊本の特別教育テレビ授業で使われました!

ストレージのRAID5構成をシミュレーターで理解しよう!

浮動小数点型の仕組みをシミュレーターで理解しよう!

コンピューターの全理基礎:半加算器の原理をシミュレーターで理解しよう!

マルチタスクのCPUの動きをシミュレーターで見てみよう!
 
全テーマ共通記事一覧

「マルチタスク時のメモリの奪い合い/スラッシング」をシミュレーターで解説します!

$$\newcommand\CB[1]{\textcolor{blue}{#1}} \newcommand\CR[1]{\textcolor{red}{#1}} \newcommand\CG[1]{\textcolor{magenta}{#1}}$$

前回記事で、ページングとは何かを説明しました。今回はマルチタスク時の、各タスクのメモリの奪い合いの様子をシミュレーターで解説します。

「マルチタスク時のメモリの奪い合い/スラッシング」をシミュレーターで解説します!

おさらい:メモリが足りない場合は、、、ストレージ上に保存!

メモリは↓のような区画で管理されます。
もし、この区画が足りなくなったらどうなるでしょうか?必要なデータ保存領域がなくて、コンピューターが動けなくなってしまいますよね。

そうならないためにも、コンピューターは↓のように「メモリが足りなくなったら、ページファイルと呼ばれるストレージ上のファイルに代替保存」を行います。

ストレージのほうが、圧倒的に保存できる容量が広いので、これが使えれば溢れることはないんですね!

しかし、ストレージは遅いという問題があります。コチラのシミュレーターでも示している通り、CPUやメモリと比べて動画がめちゃくちゃ遅いんです

そのため、「できる限りストレージにあるページファイルにアクセスしないよう、メモリを有効活用する」ことが重要なのです!
 

POINTメモリが足りなかったら、ストレージ上のファイルに代替格納する!

メモリ管理は通常LRUで行われる

メモリを有効活用するために、↓LRUというアルゴリズムを使うのが通常です。

メモリLRU制御の定義

LRU = Least Recently Used
メモリのページ(区画)の中で、もっとも最近使われていないページ区画を選択して、ストレージに追いやる

「最近使われていないページ区画」とは、「一番使った時間が古いページ区画」です。もし、ページ区画が足りなくなったら、各ページで使った時間を記録していて、一番古いページ区画を見つけて追いやるんです!
 

「マルチタスク時のメモリの奪い合い」をシミュレーターで確認してみよう!

それでは、マルチタスク時のメモリの奪い合いが起きる様子をシミュレーターで確認してみましょう!

少しややこしいので前提から説明します!

前提1:各タスクの使用メモリを赤/青/緑で示しています

今回は3つのタスクが10秒ごとに切り替えて稼働する場合をシミュレーションします。各メモリ区域は、どのタスクが使っているかで赤/青/緑で色付けしています!

前提2:各データは使う頻度に差があり。その頻度の差を「数字」で示してます

実際のコンピューターでもそうですが、メモリにあるデータが全て平等にアクセスされることは稀です。大概は、1割のデータに9割のアクセスが集中するようなことが多いです。

このため、今回のシミュレーターは「書いてある数字に比例して呼ばれる頻度が高い」ようにしています。今回の場合、↓のように1~10というように数字が書かれていますが、「1のデータは、10のデータの1/10の確率でしか呼ばれない」という設定です。「数字が高いほど頻繁にアクセスされる=追い出されにくい」状態になっています。

前提3:直近でアクセスされたデータほど濃く表示。古いデータほど白く表示

シミュレーターでも↑で示したLRU方式で、どのデータを追い出すか決めます。これがわかりやすいように、「直近でアクセスされたデータほど濃く」「触られていないデータほど白く」表示するようにしてます。

↓の絵だと、赤の「1」が一番白っぽく、追い出される候補になることを示しています。

前提4:メモリ容量は40区画固定で、各タスクのメモリ使用量をシミュレーターで変更できます

今回は↑の絵のようにメモリに40区画のデータがおける状況でシミュレートします。この状況で、総メモリ使用量が40より少ない場合、それ以上となった場合でどうなるか確認してみましょう!

「マルチタスク時のメモリの奪い合い」シミュレーター

シミュレーターの説明
  • ↓で各タスクのメモリ使用量を指定し、実行ボタンを押すとページングシミュレーターが開始します
  • 3タスクあるので総メモリ使用量は指定したタスクメモリ使用量の3倍になります
  • 10秒ごとに次のタスクに切り替わります
  • 各メモリ/ページファイルのデータにランダムアクセスをしていきます。アクセスされたメモリは色が濃くなります
  • ページファイル内のデータにアクセスされると、ページイン/ページアウト(交換)が起きます

 
各タスクのメモリ使用量:

15


 

シミュレーターの要点解説

ページファイル使用量が多くなると、タスク間のメモリの奪い合いになる!

総メモリ使用量が、↓のようにメモリ内に収まっているときには、効率よくどのタスクも走ります。

しかし、メモリからあふれてページファイルを使うようになると、どんどん遅くなっていき、、、↓のように大量にページファイルを使う場合は「タスク間のメモリの奪い合い」が発生します。

タスクが待ち状態になっているときには、メモリを使わないため、メモリ区画がどんどん古くなっていくため、ページファイルに追い出されるようになるんですね

こうなると、毎回順番がくるたびにページファイルからメモリにデータを呼び込まないといけなくなり、それだけで処理が終わってしまう状態になります><

このような状態を「スラッシング」といいます。ページングが多発しすぎて、処理が進まない悪い状態のことです。この状態だと通常時より何十倍/何百倍も遅くなってしまうんですね><

このようなことが起こらないように、最適なメモリ容量を用意することが重要なんです!
 

「マルチタスク時のメモリの奪い合い」まとめ

  • メモリが足りなくなった場合、ページファイルというストレージ領域に保管される
  • マルチタスクの場合は、待ちタスクがメモリを使わない状態が発生するので、メモリが足りない場合は奪い合いが発生する
  • 最悪の場合、ページング処理だけでタスクの稼働機会が終わってしまう。このようにページング多発で極端に遅くなることを「スラッシング」という

 


⇒「主記憶管理」カテゴリ記事一覧

その他関連カテゴリ




お気軽にコメントお願いします!

Your email address will not be published. Required fields are marked *




記事カテゴリ