Memory Management - 2
Shared Pages
プログラムを実行します.
コード容量は150 KB、データ容量は50 KBとする.
40のプロセスがこのプログラムを使用する場合、
総容量は8000 KB[(150+50)KB*40]である.
ただし、コードはプログラムの実行中に絶対に変更できません.
コードは、セキュリティと誤操作の問題で絶対プログラムです.
実行中は変更できません.
したがって,このコードに対応する容量は変化しない.
コードを1つのスペースに配置し、複数のプロセスで参照することは問題ありません.
このとき、総使用容量は150 KB+40*50 KB=350 KBと大幅に減少した.
このように共有されているページをSharedPageと言います.
Example for Shared Pages
Hierarchical Page Table
32ビットシステムには2322^{32}232個のPage Table Entryがある.
ページサイズは4 KB(2122^{12}212 KB).
PTE sizeが4 Byteの場合PTE 개수
: 232÷212=2202^{32}\div 2^{12}=2^{20}232÷212=220Page Table Size
: 220×4=222=42^{20}\times 4=2^{22}=4220×4=222=4 MB
4 MBの容量を連続的にアドレスすると、
負荷が重くて遅いので、
ブロック管理Page Tableの階層化Page Tableを導入した.
Page of Page Table
DRAMでページを分割管理するために、
PageofPageTableが現れました.
そこで、分割されたPageofPageTableにアクセスするために、
もう一つのテーブルが必要です.このテーブルはOuterPageTableと呼ばれています.
(PageTable of PageTableとも呼ばれます.?)
32ビットシステムでは、仮想アドレスは32ビットです.
仮想アドレスは次のとおりです.[p1(10) + p2(10) + d(12)]
p1
:Outer pageテーブルのインデックスp2
:Page of Page Tableのインデックスd
: Frame no
TLB
CPUとMMUはプロセッサ上にあり、非常に高速です.
PageTableはDRAMにあるため、アクセス速度が比較的遅い.
この速度を上げるために、TLBというキャッシュをプロセッサに追加します.
CPUが仮想アドレスを発行すると、まずTLBでページ番号を検索する.
TLB Hit
これを物理アドレスに変換してDRAMにアクセスします.
TLB Miss
Page Tableで物理アドレスをインポートします.
CPUからDRAMに再アクセスします.
Locality
繰り返しアクセスするメモリの位置、変数、関連する記憶位置などをLocalityと呼びます.void func1() { ... } // Page 1
void main() // Page 2
{
func1();
... = malloc(...);
}
void* malloc(...) { ... } // Page 3
上記のコードでPage 2を実行すると、Page 1,3は無条件に実行されます.
このような隣接するページにアクセスする現象を空間位置と呼ぶ....
int i = 1;
int j = i;
i = j++;
for (i = 0; i < 10; i++) { ... }
...
上記のコードに示すように、i
は短時間で複数回アクセス可能である
これを一時信用と言います.
Working Set
これは、プロセスが近い将来使用するメモリ量を計算することによって、プロセスごとにメモリ量を保持し、ページ障害を低減する理論です.
しかし未来は予測できないので、理論でしか存在しない.
過去のΔ\DeltaΔ時間単位でアクセスするページ数はWorkingsetのサイズになります.
上記の例に示すように、ワークセットは時間とともに変化し、スペースの無駄になる可能性があります.
Reference
この問題について(Memory Management - 2), 我々は、より多くの情報をここで見つけました
https://velog.io/@yy0867/Memory-Management-2
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
繰り返しアクセスするメモリの位置、変数、関連する記憶位置などをLocalityと呼びます.
void func1() { ... } // Page 1
void main() // Page 2
{
func1();
... = malloc(...);
}
void* malloc(...) { ... } // Page 3
上記のコードでPage 2を実行すると、Page 1,3は無条件に実行されます.このような隣接するページにアクセスする現象を空間位置と呼ぶ.
...
int i = 1;
int j = i;
i = j++;
for (i = 0; i < 10; i++) { ... }
...
上記のコードに示すように、i
は短時間で複数回アクセス可能であるこれを一時信用と言います.
Working Set
これは、プロセスが近い将来使用するメモリ量を計算することによって、プロセスごとにメモリ量を保持し、ページ障害を低減する理論です.
しかし未来は予測できないので、理論でしか存在しない.
過去のΔ\DeltaΔ時間単位でアクセスするページ数はWorkingsetのサイズになります.
上記の例に示すように、ワークセットは時間とともに変化し、スペースの無駄になる可能性があります.
Reference
この問題について(Memory Management - 2), 我々は、より多くの情報をここで見つけました
https://velog.io/@yy0867/Memory-Management-2
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(Memory Management - 2), 我々は、より多くの情報をここで見つけました https://velog.io/@yy0867/Memory-Management-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol