ひとりごと

x86のセグメントがよくわかんねえなぁ。
Linuxだと基本的にセグメントは使っていないらしいが・・
一応使ってるけど、同じとこさすようになってるみたいね。
フラットモデルというのか。
本には、セグメントは4つあってユーザのコードとデータ、カーネルのコードとデータと書いてあるね。


TSSとかなんなんだ?
これTask State Segmentなんだろ。
セグメントじゃねえの?
まあ、セグメントでも良いんだけどよ。
なら、上の4つじゃないってこと?


ああ、見当はずれのこと考えてそうだ。


結局Linuxにおけるセグメントってどれだけあんのさ。


っていうか、システムコールの仕組みを追いたいだけなんだけどね。
int命令を実行したらどうやってカーネルに入ってくの?とか思って調べたら
IDT(割り込みテーブル)から飛び先を見つけるらしいとわかったんだ。


で、IDTをインテルデベロッパーズマニュアルでみてたら、
IDTはGDTと同様セグメントではないって書いてあって、
セグメントって何よってなったのさ。


x86におけるアドレス変換は
論理アドレス→リニアアドレス→物理アドレス
とやるようになってて、
論理アドレスつうのはセグメント+オフセットで構成されていることは分かりました。


Linuxはどう実装しているのって言う話で、調べていくうちに泥沼だぜ。
だれか親切に教えて。






おれおたく?





.............orz