OS実験-メモリ管理
1249 ワード
メモリを管理する理由
OSでは、実行中のプロセスごとにメモリが消費されるため、オペレーティングシステムはメモリ割り当てとメモリ回収の2つのことをしなければなりません.これが今回の実験で行うシミュレーション実験です.
メモリ割当てポリシー
FF(初回適応アルゴリズム)
このポリシーは、最下位アドレスの空きパーティションから探し始め、適切なものを見つけて割り当てることを目的としています.メモリ領域は、開始アドレスによって小さいものから大きいものに並べ替えられます.利点:検索速度が速いという欠点:低いアドレスにはメモリの破片が多く残り、高いアドレスには大きな空きパーティションが残ります.
BF(最適適応アルゴリズム)
このポリシーは、割り当てのたびに、最小ブロックの需要を満たす空きパーティションを割り当てに使用します.メモリ領域は、空き領域の小さいものから大きいものに並べ替えられます.利点:大きな空きパーティションを保持します.欠点:多くの小さな空きパーティションを作成します.
WF(ワースト適応アルゴリズム)
このポリシーは、割り当てのたびに、最も大きな需要を満たす空きパーティションを割り当てに使用します.メモリ領域は、空き領域の大きいものから小さいものに並べ替えられます.利点:小さなメモリフラグメントは多く残らない.多くの場合、複数の大きなメモリプログラムを読み込むことができます.欠点:大きな空き領域を残す可能性が減少しました.
メモリ管理実験内容
シミュレーションオペレーティングシステムは、シミュレーションである以上、実際のメモリ割り当てよりも簡単です.プログラム内の2つのチェーンテーブル:空きメモリブロックテーブルで、空き領域の開始アドレスとサイズが含まれます.プログラム初期化チェーンテーブルは1つのノードのみで、サイズはデフォルトです.割り当てられたメモリ領域の開始アドレスとサイズ、およびメモリを使用するプロセスpidを含む割り当てメモリ領域ブロックテーブル.
プログラムの初期化で、メモリの合計サイズの変更を選択できます.一度だけ修正できます.メモリを割り当てた後、サイズを変更することはできません.その後、いつでも割り当てアルゴリズムを選択できます.新しいプロセスを作成し、プロセスを殺し、メモリの使用量を観察します.
フローチャート
プログラムコード
マクロ定義プロファイル:https://github.com/City-Zero/LinuxTest/blob/master/OSex/mem_manager/conf.hプログラムコード:https://github.com/City-Zero/LinuxTest/blob/master/OSex/mem_manager/mm.c
OSでは、実行中のプロセスごとにメモリが消費されるため、オペレーティングシステムはメモリ割り当てとメモリ回収の2つのことをしなければなりません.これが今回の実験で行うシミュレーション実験です.
メモリ割当てポリシー
FF(初回適応アルゴリズム)
このポリシーは、最下位アドレスの空きパーティションから探し始め、適切なものを見つけて割り当てることを目的としています.メモリ領域は、開始アドレスによって小さいものから大きいものに並べ替えられます.利点:検索速度が速いという欠点:低いアドレスにはメモリの破片が多く残り、高いアドレスには大きな空きパーティションが残ります.
BF(最適適応アルゴリズム)
このポリシーは、割り当てのたびに、最小ブロックの需要を満たす空きパーティションを割り当てに使用します.メモリ領域は、空き領域の小さいものから大きいものに並べ替えられます.利点:大きな空きパーティションを保持します.欠点:多くの小さな空きパーティションを作成します.
WF(ワースト適応アルゴリズム)
このポリシーは、割り当てのたびに、最も大きな需要を満たす空きパーティションを割り当てに使用します.メモリ領域は、空き領域の大きいものから小さいものに並べ替えられます.利点:小さなメモリフラグメントは多く残らない.多くの場合、複数の大きなメモリプログラムを読み込むことができます.欠点:大きな空き領域を残す可能性が減少しました.
メモリ管理実験内容
シミュレーションオペレーティングシステムは、シミュレーションである以上、実際のメモリ割り当てよりも簡単です.プログラム内の2つのチェーンテーブル:空きメモリブロックテーブルで、空き領域の開始アドレスとサイズが含まれます.プログラム初期化チェーンテーブルは1つのノードのみで、サイズはデフォルトです.割り当てられたメモリ領域の開始アドレスとサイズ、およびメモリを使用するプロセスpidを含む割り当てメモリ領域ブロックテーブル.
プログラムの初期化で、メモリの合計サイズの変更を選択できます.一度だけ修正できます.メモリを割り当てた後、サイズを変更することはできません.その後、いつでも割り当てアルゴリズムを選択できます.新しいプロセスを作成し、プロセスを殺し、メモリの使用量を観察します.
フローチャート
プログラムコード
マクロ定義プロファイル:https://github.com/City-Zero/LinuxTest/blob/master/OSex/mem_manager/conf.hプログラムコード:https://github.com/City-Zero/LinuxTest/blob/master/OSex/mem_manager/mm.c