フラグメンテーションとセグメンテーションの主な違いは、フラグメンテーションがメモリブロックが未使用のままになる状態であるのに対し、セグメンテーションはプロセスをいくつかのモジュールまたはセクションに分割する技術であることです。
フラグメンテーションとセグメンテーションは、メモリ管理に関連する2つの用語です。
ここで、メモリ管理とは、オペレーティングシステムが行う主要なタスクの1つです。
実行中にプロセスをメインメモリとディスクの間で行き来させることで、メモリを管理する。
特定のメモリロケーションをプロセスに割り当てたり、プロセスから解放したりすることができる。
したがって、OSはプロセスのメモリー位置の記録をすべて保持する。
また、プロセスに割り当てられたメモリの量もチェックする。
さらに、どのプロセスがどのタイミングでメモリーを取得すべきかを決定する。
さらに、OSはメモリ位置の状態、つまり空きメモリかプロセスへの割り当てかを更新する。
フラグメンテーションとは
プロセスを実行するとき、メモリにロードされる。
実行が完了すると、メモリから削除される。
プロセスのロードと削除により、メモリ内に空き領域が発生する。
これらの領域はサイズが小さく、他のプロセスのために割り当てることはできません。
そのため、これらのメモリブロックは未使用のままとなります。
これをフラグメンテーションと呼びます。
フラグメンテーションには、内部フラグメンテーションと外部フラグメンテーションという2つのタイプがあります。
内部フラグメンテーション
内部フラグメンテーションでは、プロセスに割り当てられたメモリーブロックが必要以上に大きくなっています。
このため、メモリの一部が未使用のまま残されます。
この領域は、他のプロセスに割り当てることができません。
例えば、あるプロセスが2MBを必要としているのに、3MBのメモリブロックに割り当てられた場合、1MBのブロックが未使用のまま残される。
この1MBは他のプロセスに割り当てることができないので、無駄になってしまう。
外部フラグメンテーション
外部フラグメントでは、プロセスの場所を特定するのに十分な総メモリ容量がありますが、連続したものではありません。
そのため、その領域は未使用のままとなります。
例えば、3MBのプロセスがあり、3つのメモリブロックが異なるメモリ位置にあるとします。
それらのブロックは連続していないため、プロセスには使用できません。
この問題を解決するために、メモリをシャッフルする方法があります。
これは、すべての空きメモリ空間を1つのラクタンスに配置するのに役立ちます。
セグメンテーションとは
Segmentation divides each process into several segments or sections of different sizes. A segment can be a main program, function, stacks, symbol tables, data structures, etc. Every segment is a different logical address space of the program. These segments are of variable length size. In other words, the segments are not fixed in size.
プログラムを実行するとき、各セグメントは非連続のメモリにロードされます。
セグメントのメモリ位置への参照には、セグメント番号とオフセットが含まれます。
OSはセグメントマップテーブルと呼ばれるテーブルを保持しています。
ローカルディスクリプタ・テーブルとも呼ばれる。
このテーブルには、すべてのプロセスや空きメモリブロックの記録が保存されています。
このテーブルには、すべてのセグメントの開始アドレス(ベースアドレス)と長さが記録されています。
フラグメンテーションとセグメンテーションの違い
定義
フラグメンテーションとは、ストレージスペースが非効率的に使用され、容量やパフォーマンスが低下する現象で、多くの場合その両方が発生します。
セグメンテーションは、コンピュータの主記憶をセグメントまたはセクションに分割するプロセスです。
機能性
フラグメンテーションがメモリブロックを未使用のままにするのに対し、セグメンテーションはプロセスを実行するためのメモリ管理技術として機能します。
結論
メモリ管理には、フラグメンテーションとセグメンテーションが関連しています。
フラグメンテーションとセグメンテーションの違いは、フラグメンテーションがメモリブロックが未使用のまま残る状態であるのに対し、セグメンテーションはプロセスをいくつかのモジュールやセクションに分割する手法であることである。