Operating System Lecture 12/12

Menu Menu


先週の復習 -- Unix の同期機構


計算練習

以下の計算をせよ。表記は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: Lecture on Operating System Lecture 12/12


課題

WWWに関する課題 を1/9 までに行うこと。 レポートはメールで

    Subject: Report Operating System Lecture 12/12

というように、課題を出した日付をサブジェクトに入れたメールで提出して下さい。


Shinji KONO / Tue Dec 12 13:02:06 2000