メモリ管理とは、ソフトウェアの実行時にコンピューターのメモリ リソースを割り当てて使用するテクノロジーを指します。その主な目的は、効率的かつ迅速に割り当て、適切なタイミングでメモリ リソースを解放および再利用することです。
パーソナル コンピューターの Web ブラウザーやチューリング マシンなどの実行中のプログラムは、プロセスのために現実世界とコンピューター メモリの間でデータを変換し、そのデータをコンピューター メモリ内に保存します (コンピューター サイエンスでは、プログラムは命令の集合であり、プロセスはコンピュータ上で実行されているプログラムです)。メモリは、テープやディスク、小さなアレイ容量のマイクロチップなど、さまざまな方法で物理的に編成できます。 1950 年代以降、コンピューターはより複雑になり、さまざまな種類のメモリーに接続されました。メモリ管理のタスクも複雑になり、同じマシン上で複数のプロセスを同時に実行する必要さえあります。
メモリ内では、プログラム (オペレーティング システム) が各データ ブロック内のエンティティの位置を継続的に追跡し、エンティティ上のデータを移動してパフォーマンスを向上させ、信頼性を確保します。各ユーザー レベルのプログラムに対して、オペレーティング システムは、プロセスの開始時に、データはディスク上の仮想メモリ空間に保存され、プロセス用にメイン メモリ空間を構成する必要はありません。ユーザーは、必要に応じてメイン メモリに自由にロードされます。
大きなプログラムが実行されるとプロセスとなり、メモリ空間のほとんどがディスク上の仮想メモリ アドレスに格納され、必要な部分がメモリにロードされてサービスを提供することを想像してください。
メインメモリの使用
プログラム構造は次の 2 つの部分で構成されます:
「テキスト ブロック」は命令ストレージであり、CPU の使用量と操作を提供します。
「データ ブロック」はストレージです。プログラム自体内に設定されたデータ (定数文字列、GUI インターフェイス内の一部のテキスト メッセージ、プログラム設計中に配置されたメッセージ データなど)。データは、プログラムの実行中に入力によって追加することも、プログラムを実行しているプロセスから削除することもできます。 。
プログラムが実行されると、オペレーティングシステムはプログラムのデータブロックとテキストブロックを仮想メモリ空間にマップし、メモリ内でプログラムの命令を実行します。いずれの場合も、プログラムの実行中に一時データを保存する必要があります。データ、またはさらに重要なのは、いくつかの関数またはサブルーチンを呼び出し、現在の関数のステータスを保存することです。この関数では、データがスタックの形式で保存されます。データはスタックのポップ メソッドによって取り出されます。スタックは関数のライフ サイクル中に動的に増加します。オペレーティング システムはテキスト ブロックとデータ ブロックを区別し、スタック ブロックはプロセスの最上位にあります。この方法はセグメントまたは「セグメント」と呼ばれます。