読み方 : セグメントほうしき

セグメント方式【memory segmentation】セグメンテーション方式

セグメント方式とは?

コンピュータメモリプログラムの論理的な構造に合わせて可変長の領域に分割して管理する方式。プログラムのコード領域やデータ領域など、意味のまとまりごとにメモリを扱うことができる。
セグメント方式のイメージ画像

プログラムが実行されるとき、オペレーティングシステム(OS)はコード(命令)、データスタックといった用途ごとに「セグメント」(segment)と呼ばれる領域を割り当てる。各セグメントにはベースアドレス(開始メモリ番地)とリミット(長さ)が設定され、CPUはこの情報をもとに実際の物理アドレスを計算する。

プログラム上でメモリを参照する際には、セグメント番号と、開始番地からの距離であるオフセット値から論理アドレスを求めてアクセスする。開発者はプログラム中での相対的な位置を指定すればよく、コードやデータの実際の物理的な配置や番地を意識しなくてよい。

セグメント方式の利点の一つはアクセス制御のしやすさにある。セグメントごとに「読み取り専用」「実行不可」といった保護属性を設定できるため、誤ったメモリ書き込みや不正な実行を防ぎやすい。また、プログラムの論理構造とメモリ管理の単位が対応しているため、共有ライブラリなど複数プロセスで同一セグメントを共有する仕組みも実装しやすい。

一方、セグメント方式には「外部断片化」と呼ばれる問題がある。セグメント可変長であるため、割り当てと解放を繰り返すうちに、使用されていない小さな空き領域が物理メモリ上に散在するようになる。これらの断片はそれぞれ単独では利用できないことが多く、メモリの実効的な利用効率が低下する原因となる。

現代のOSでは、固定長のページ単位でメモリを管理する「ページング方式」が広く採用されており、外部断片化を起こしにくいという点で運用管理上の優位性がある。x86アーキテクチャのプロテクトモードのように、セグメント方式とページング方式を組み合わせたメモリ管理方式が採用されることもあった。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。