• 締切済み

オペレーティングシステムのページテーブルについて

インターネットや本などで調べてもなかなか下記の問題が解けないのでどなたかご教示おねがいします 64ビットCPUで、第4,3,2,1レベルテーブル、ページ内オフセットが順に11,13,14,15,11ビットの多段ページングがあるとする。 (1)あるプロセスは1ページだけしか使用しないものとすると、全テーブルの合計テーブルは何バイトか?なお2次記憶のアドレスは64ビットで指定するものとする。 (2)あるプロセスは0番地と0000 0000 0FFF FFFF番地だけしか使用しないとすると、このプロセスを管理するのに必要なテーブルはそれぞれ何個か?このとき全テーブルの合計は何バイトか?

みんなの回答

  • ninoue
  • ベストアンサー率52% (1288/2437)
回答No.1

page内offsetの指定に11bitが割り当てられており、2kbyte/pageのシステムと分ります。 >2次記憶のアドレスは64ビットで指定するものとする。 とありますが、1次記憶==主記憶アドレスは64ビットアドレスで指定するものとすると解釈しました。 64ビット対応物理メモリフル実装、それと同程度のページアウト領域を割り当てても、 必要最大ページアウト領域数は 64bit-11bit(2kbyte) = 53bitあれば十分です。 http://www.seiai.ed.jp/sys/text/csd/cf13/c13a060.html 30bit==>1GB, 40bit==>1TB, 50bit==>1PB, 60bit==>1EB, 64bit==>16EB ? A0. 先ず最下位レベルのpage tableに必要な内容を考えてみます。 割り当てられた物理page address(先頭物理ページアドレス、page内offsetを除いた部分)の指定に64-11=53bit必要です。 その他にpage typeに最低6bit: VRWXPS 必要です。(+1bit=I/O address space?) V:valid, R:read, W:write, X:execute, P:protected, (OS, IODriver等の特権モードプログラムのみアクセス可能), S:swapped 合計59bitは最低限必要<==>1-entry 8byte 構成とします。 Vbitも含めて全bit Offの場合はInvalid page Vbit off, RWX-bitの何れかのbit onの場合は、validだが未割当のpage 等の使用法が考えられます。 Vbit on, Sbit onの場合はpage out状態、下位53bitには物理pageに代り、pageout-areaのpage 番号が入ります。 A1. 最下位レベルのpage table はA0 より2Kbyteのpage単位で割り当てます。   2kbyte/8byte=256entry, 2KB*256=512KBの物理pageを管理する事が出来ます。 A2. なお最下位レベルのpage tableは15bit==32kentry単位で管理され、   最大32kentry/256entry=128page, 最少2KB-最大256KBの連続物理page areaの割り当てが必要とされます。 B0. より上位のpage tableも同様に下位page tableの先頭物理page table address指定に53bit必要です。   それ以外にentry valid bit, 下位page tableに何page割り当てているかのフィールドも普通割り当てます。 1:valid +8:page_table_length +53:物理page_no page_table_length には最大7bit: 第1レベルテーブルに(15-8=7bit)必要です。 (1) あるプロセスは1ページだけしか使用しないものとする 0番地で始まる1ページのみの使用と言う事ですね。 この場合は簡単で各4レベルのページテーブルに各々1ページ、合計4ページ8kbyte必要です。 (2) あるプロセスは0番地と0000 0000 0FFF FFFF番地だけしか使用しないとする.... この場合には下位28bitにnon-0のアドレスがあり、上位36bitは0です。 上位レベルから11, 11+13=24, 11+13+14=38bit迄が守備範囲 第4,3レベルテーブルは各1個、第2,1レベルテーブルは各2個必要になります。 以下の説明はアドレス64bit中、上位32bitは0なので、変化する部分32bit部分のみについて記しています。 第1レベルテーブルは次の通り 0000,0000-0007,ffff迄の管理用として1個==2kbyte # 256entryの内、最初の1entryのみvalid, 他はinvalid 0ff8,0000-0fff,ffff迄の管理用として1個==2kbyte # 256entryの内、最後の1entryのみvalid, 他はinvalid 第2レベルテーブルは次の通り ユーザー空間の最初のページ管理用とて1個 0000.0000-03ff,ffff迄の論理アドレス:第1レベルページ管理用、 top entryのみvalid, 第1レベル有効page table entry数 0 max (0+1)*256page entry exist (topのpage tableのみ有効) ユーザー空間の最後のページ管理用とて1個 0c00,0000-0fff,ffff迄の論理アドレス:第1レベルページ管理用、 last entryのみvalid, 第1レベル有効page table entry数 3f max (3f+1)*256page entry exist (2)の合計テーブル数は合計6個、12kbyteとなる筈です。 図を書いて説明すればより分り易いでしょうが、以上の説明から分るでしょうか。 自分も答を書いていて途中で多少混乱したりした点等もありました。 不明な点やこの説明に分らない点や誤り等があれば、再度補足等で追加問い合わせして下さい。

関連するQ&A