2012-03-03 9 views
1

x86で動作するPINTOSで仮想メモリを実装していますが、x86プロセッサのプロセスに必要なフレームの最小数を知りたいと思います。
基本的な命令セットアーキテクチャでサポートされているインダイレクションの最大レベルに依存していることがわかりました。x86では1レベルのインダイレクションがサポートされています。 プロセスごとに2つのフレームが最低限必要です。
命令のサイズが1バイトを超える場合、ページの境界を越える可能性があり、3つの最小フレームが必要になります。
私は、プロセスごとに与えられるフレームの最小数を修正するか、それ以上決定する必要がありますか?x86プロセッサで必要なフレームの最小数

おかげ

+0

「フレーム」は、通常、スタックフレームを意味します。あなたは仮想メモリ*ページ*について話しているようです。コードが十分に小さく、コード、データ、スタックを含むことができるようにページ保護を設定すると、1つの4096バイトページにすべてを詰めることは不可能ではありません。命令サイズや間接指示とは関係ありません。 –

+0

@HansPassant:*ページフレーム*は、文脈上非常に一般的な用語です。 –

答えて

2

ページディレクトリ - 1
ページテーブル - ページ境界上の1
命令 - ページ境界上の2つの
ソースデータ - ページ境界上の2つの
宛先データ - 2

したがって、8ページはREP MOVSW/Dのようなものに必要なものです。

+0

eaxのような汎用レジスタは32ビット長です。 [MEM_LOC1] MOV [MEM_LOC1]、2番目の命令で[MEM_LOC2] のmov%eaxに、などの指示があった場合、ソースデータは?ページ境界を越えることができるが、これはあなたが2つのフレームを与えている理由ですソースと目的地のデータは? – Deepthought

+2

「MOVSW/D」は、DS:(E)SIが指す位置から(D)WORDを読み取り、ES:(E)DIが指し示す位置にその(D)WORDを書き込む。これは2つのデータ位置です。それぞれの位置はページの境界近くにあります。また、プレフィックス(アドレスサイズのオーバーライド、オペランドサイズのオーバーライド、セグメントオーバーライド、rep)がある場合、命令自体はページ境界を越えることができます。これは、REP MOVSW/Dの6ページの取得方法です。 –