以下に示す比較チャートを使用して、ページングとセグメンテーションの違いについてさらに説明します。
比較表
比較基準 | ページング | セグメンテーション |
---|---|---|
基本 | ページは固定ブロックサイズです。 | セグメントは可変サイズです。 |
断片化 | ページングは内部の断片化につながる可能性があります。 | 細分化は外部の細分化につながる可能性があります。 |
住所 | ユーザ指定アドレスは、CPUによってページ番号とオフセットに分割されます。 | ユーザーは各アドレスを2つの数量、セグメント番号とオフセット(Segment limit)で指定します。 |
サイズ | ハードウェアがページサイズを決定します。 | セグメントサイズはユーザーが指定します。 |
表 | ページングには、各ページのベースアドレスを含むページテーブルが含まれます。 | セグメンテーションは、セグメント番号とオフセット(セグメント長)を含むセグメントテーブルを含みます。 |
ページングの定義
ページングはメモリ管理方式です。 ページングを使用すると、プロセスを隣接しない方法でメモリに格納できます。 プロセスを隣接しない方法で格納すると、 外部の 断片化の問題が解決されます。
ページングを実施するために、 物理的および論理的メモリ空間は同じ固定サイズのブロックに分割される。 これらの固定サイズの物理メモリブロックはフレームと呼ばれ、固定サイズの論理メモリブロックはページと呼ばれます 。
プロセスが実行される必要があるとき、論理メモリ空間からのプロセスページは物理メモリアドレス空間のフレームにロードされる。 フレームにアクセスするためにCPUによって生成されたアドレスは、2つの部分、すなわちページ番号とページオフセットに分割されます 。
セグメンテーションの定義
ページングと同様に、 セグメンテーションもメモリ管理スキームです。 ユーザーの記憶観をサポートします。 プロセスは可変サイズのセグメントに分割され、論理メモリアドレス空間にロードされます。
論理アドレス空間は、可変サイズのセグメントの集まりです。 各セグメントには名前と長さがあります。 実行のために、論理メモリ空間からのセグメントが物理メモリ空間にロードされる。
ページングとセグメンテーションの主な違い
- ページングとセグメント化の基本的な違いは、ページは常に固定ブロックサイズであるのに対し、セグメントは可変サイズであるということです。
- ページは固定ブロックサイズであるため、ページングによって内部の断片化が発生する可能性がありますが、プロセスがメモリ内に内部フラグメントを生成するようなブロックサイズ全体を取得しないことがあります。 メモリが可変サイズのブロックでいっぱいになると、セグメンテーションによって外部の断片化が発生する可能性があります。
- ページングにおいて、ユーザはハードウェアによってページ番号とオフセットに分割されるアドレスとして単一の整数を提供するだけです。 一方、セグメント化では、ユーザーはアドレスを2つの量、つまりセグメント番号とオフセットで指定します。
- ページのサイズはハードウェアによって決定または指定されます 。 一方、セグメントのサイズはユーザーによって指定されます 。
- ページングでは、 ページテーブルは論理アドレスを物理アドレスにマッピングし、物理メモリ空間のフレームに格納されている各ページのベースアドレスを含みます。 ただし、セグメンテーションでは、 セグメントテーブルは論理アドレスを物理アドレスにマップし、セグメント番号とオフセット(セグメント制限)を含みます。
結論:
ページングとセグメンテーションはどちらもメモリ管理方式です。 ページングはメモリを固定サイズのブロックに分割することを可能にし、セグメンテーションはメモリ空間を可変ブロックサイズのセグメントに分割する。 ページングが内部の断片化につながる場合、セグメンテーションは外部の断片化につながります。