x86のセグメントがよくわかんねえなぁ。
Linuxだと基本的にセグメントは使っていないらしいが・・
一応使ってるけど、同じとこさすようになってるみたいね。
フラットモデルというのか。
本には、セグメントは4つあってユーザのコードとデータ、カーネルのコードとデータと書いてあるね。
TSSとかなんなんだ?
これTask State Segmentなんだろ。
セグメントじゃねえの?
まあ、セグメントでも良いんだけどよ。
なら、上の4つじゃないってこと?
ああ、見当はずれのこと考えてそうだ。
結局Linuxにおけるセグメントってどれだけあんのさ。
っていうか、システムコールの仕組みを追いたいだけなんだけどね。
int命令を実行したらどうやってカーネルに入ってくの?とか思って調べたら
IDT(割り込みテーブル)から飛び先を見つけるらしいとわかったんだ。
で、IDTをインテルのデベロッパーズマニュアルでみてたら、
IDTはGDTと同様セグメントではないって書いてあって、
セグメントって何よってなったのさ。
x86におけるアドレス変換は
論理アドレス→リニアアドレス→物理アドレス
とやるようになってて、
論理アドレスつうのはセグメント+オフセットで構成されていることは分かりました。
でLinuxはどう実装しているのって言う話で、調べていくうちに泥沼だぜ。
だれか親切に教えて。
おれおたく?
.............orz