たのしい工学

プログラミングを学んで、モノをつくりたいひと、効率的に仕事をしたい人のための硬派なブログになりました

【コンピュータサイエンス 独学】GDT(Global Description Table)とは

   

GDTとは大域セグメント記述子表の略です

これを理解するには、セグメンテーションについて理解する必要があります。

セグメンテーションは各プログラムが使用するメモリ領域の区分けのことです。

各プログラムにはそのセグメント領域の起点からの相対アドレスが記述されています。
OSは実行時に各プログラムが使用するセグメント領域を割り振ります。
CPUがメモリを操作する際は、プログラムに割り振られたセグメントを起点とした相対位置のメモリを操作します。

なぜこのような操作が必要かというと、OSなどの特殊なプログラムを除き、どのようなプログラムが同時に動作するかはプログラム作成者が知ることは基本的にできないため、操作するメモリの絶対位置を指定することができないからです。

GDTとはこのCPUがプログラムに記述された相対位置を絶対位置に変換する際に参照する、各プログラムに割り当てられたセグメントに関する設定が記述されたテーブルのことです。

このテーブルはそれなりのサイズになるので、メモリ上に配置されます。

プログラム実行時にGDTのどのテーブルを参照するかは、セグメントレジスタに設定された値によって変更されます。

またこのセグメントの用途としては、リングプロテクションの実装に用いられます。
※リングプロテクションとは、CPUに対する命令にランク付けを施し、命令の優先順位を設定することでPCの動作に統制を図るためのしくみです。
つまりは、特定のセグメントのみをシステム用のセグメントとしてGDTに設定することで、それ意外のセグメント内での、GDT変更のような特権操作を防ぐことができます。

 - コンピュータサイエンス