Operating System Lecture 12/12
Menu Menu
先週の復習 -- Unix の同期機構
- select
- 時間の計算
- 時間の待ち合わせ
- client/server
計算練習
以下の計算をせよ。表記はCと同じものを使うこと
- 0x002898dd を4つ左にシフトした結果を16進数で表せ
- 2^32 を10進数と8進数と16進数と2進数で表せ
- 0x123 を16倍した数を16進数で表せ
- 0x7AF を256で割ったあまりを8進数で表せ
- 0x7AF を4つ左にシフトした結果を16進数で表せ
- 2kbyte とは10進数でいくつか
Memory Management
コンピュータにはメモりが付き物である。このメモリは、どのように使われているのだろうか? メモリは、- malloc()
- free()
アドレス変換
メモリは、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というように、課題を出した日付をサブジェクトに入れたメールで提出して下さい。