Operating System Lecture 6/11

先週の復習 -- Synchronization





計算練習

以下の計算をせよ。表記はCと同じものを使うこと
  1. 0x002898dd を4つ左にシフトした結果を16進数で表せ
  2. 2^32 を10進数と8進数と16進数と2進数で表せ
  3. 0x123 を16倍した数を16進数で表せ
  4. 0x7AF を256で割ったあまりを8進数で表せ
  5. 0x7AF を4つ左にシフトした結果を16進数で表せ
  6. 2kbyte とは10進数でいくつか




Memory Management

コンピュータにはメモりが付き物である。このメモリは、どのように使われている のだろうか? メモリは、

によって要求されたり返されたりする。これは最終的には、sbrk(), brk() という system callを呼び出す。メモリを要求したり返したりしていると、fragmentation (細分化)という問題が起きる。

この状況は最悪、メモリの有効利用度(Memory Utilization)を50%程度にまで さげてしまうことが知られている。



アドレス変換

メモリは、OS下の複数のプロセス、ユーザから要求されている。この時に、 個々のプロセスでは、あたかも自分一人がCPUとmemoryを専用している下のように 見えた方が良い。これは仮想プロセッサと呼ばれるものであった。仮想プロセッサの メモリと実際のメモリを結びつけるには、アドレス変換(Address Translation) という技術を用いる。


この時に、flagmentation を防ぐために、実際のメモリ(Physical memory) は、前もって細分化されて、それの不連続(non-contiguous)な集合が、 プロセスのメモリ(Virtual Memory)上での連続なメモリに対応するように なっている。

論理メモり空間(Logical Address) を物理メモり空間(Physical Address)に 変換するメカニズムがアドレス変換である。これにより、メモリの割り当て、 返却によるメモリ使用の細分化(fragmentation)を防ぐことができるだけでなく、 複数のプロセスに対して、一つの物理メモリを、あたかも自分の固有のアドレス 空間(Memory Spcace)であるかのように割り当てることができる。 変換の単位は、frame (or page ) と呼ばれる。普通は、512byte - 4096byte 程度である。32bit CPU の場合、メモリのアドレスは、0x00000000 から 0xffffffff の16進数で表すことができる。Page size ごとに frame 番号 が振られていて、メモリのアドレスは、frame 番号と、frame の中の offset で表される。例えば、Page size = 0x10000 ならば、0x80000500 のアドレスのframe番号は 0x8000 で、offset は 0x0500 となる。 (0x80000500 = 0x8000 x page size + offset )





問1

Page size = 4096 の時に、メモリアドレス 0x01234321 の frame 番号と、 offset を16進数で計算せよ。0xfffffecc はどうか?



問2

0x01234321 と 0xfffffecc に対応するアドレス変換テーブル(page entry table)の offset はいくつか? それぞれに対応するpage のアドレス変換テーブルの内容は、それぞれ0x1344と、0x1233 で あった。それぞれのアドレスはどのように物理アドレスに変換され るか。



アドレス変換用のメモリ

ただし、この表も、64bit/32bit のメモリ空間に対しては、かなり大きくなって しまう。

問3

frame size を4kbyte とした時に、32bit memory spaceで必要なpage table の大きさを求めよ。 64bit ではどうか? 7Gbyte (Enterprise 3000のメモリのフル実装)ではどうか? 一つのpage table entry の大きさは32bitの時に16byte、64bitの時に32byteとする。



Multi level page-table scheme

ただし、このテーブルが全部必要なわけではない。論理アドレス4Gの プロセスでも実際に使われるのは1M程度なのが普通である。 そこで、この変換を2重3重にしてテーブルそのものを必要な 部分だけ割り当てるようにする。 また、この多重変換により、ページテーブル 自身を仮想記憶上に置くことができるので、変換テーブルが大きくなっても 実メモリを圧迫しなくなる。




問4

32bit address に対して、 2重の変換を行った時に、frame size 2kbyte, p1 のbit幅8とする時に、 p2 のbit 幅はいくつか?

この変換はhardware にとっても重いので、このpage entry を cache するという技術が使われる。これを、TLB (Traslation lookup buffer) という。最近では、プロセスごとにTLBを持つTagged TLBという 機能も使われている。




宿題

今日できなかった残りの問題を以下のサブジェクトでE-Mailで、 kono@ie.u-ryukyu.ac.jp まで来週までに提出すること。

    Subject: Report on Operating System Lecture 6/11
来週はマルチメディア・フェアのため休講とします。参加は特に強制しませんが、 興味がある人は見にいくと良い。