Skip to content

One-level page table system with FIFO and LRU and Two-level page table system with LRU and Inverted page table with a hashing system

Notifications You must be signed in to change notification settings

castlenum/Virtual-Memory-Management-Simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

< Virtual Memory Management Simulator >

· Virtual Memory Systems의 one-level, two-level Page Table, Inverted Page Table system을 구현.
· /mtraces: 프로그램에서 접근한 메모리 주소(Virtual address)가 순차적으로 기록된 memory trace가 존재.

=trace file의 memory trace 포맷=
16진수로 표현한 32bit의 메모리 주소     Read | Write        · virtual address size 32bit (4GB)
                                                                                             · page size 12bit (4KB)

1) Virtual Memory Simulator 인자

 memsim [-s] simType firstLevelBits PhysicalMemorySizeBits TraceFileNames...... 
  • [-s]                                     가상주소에서   변환된 물리주소를 출력하는 옵션.
    simType                             실행할 Simulation Type을 지정하는 옵션.

     -0                                     FIFO, LRU 방식의 One-level page table system이 실행.
     -1                                     Two-level page table system이 실행.
     -2                                     Inverted page table system이실행.
     -3 이상                            One-level, Two-level, Inverted Page table system을 차례로 실행.

  • firstLevelBits                       Two-level page table system 실행 시 사용되는 인자.
                                               first level page table에 접근에 사용되는 메모리 주소의 bits 의 수.
                                                    e.g) 인자 값이 8인 경우, 32bit 중 8bit가 first level page table로 사용됨.
  • PhysicalMemorySizeBits     Physical Memory의 크기를 나타내는 인자입니다.
                                                    e.g) 인자 값이 n인 경우 Physical Memory의 크기는 2^n bytes.
  • TraceFileNames, ....              Trace File의 경로를 지정하는 가변 배열의 인자.

2) Compile

 gcc -o memsim memsimhw.c 

3) 수행 예

CentOS 7, Ubuntu환경에서 같은 값이 나오는 것을 확인하였으나, Windows에서 Git Bash로 실행했을 때 값이 다르게 출력되는 것을 확인하였다.
Linux환경에서 사용해볼 것을 권장드린다.

$ ./memsim -s 1 10 32 ./mtraces/gcc.trace ./mtraces/bzip.trace 
process 0 opening ./mtraces/gcc.trace
process 1 opening ./mtraces/bzip.trace

Num of Frames 1048576 Physical Memory Size 4294967296 bytes
=============================================================
The Two-Level Page Table Memory Simulation Starts .....
=============================================================
Two-Level procID 0 traceNumber 1 virtual addr 41f7a0 physical addr 7a0
Two-Level procID 1 traceNumber 1 virtual addr 7b243a0 physical addr 13a0
Two-Level procID 0 traceNumber 2 virtual addr 13f5e2c0 physical addr 22c0
Two-Level procID 1 traceNumber 2 virtual addr 228d40 physical addr 3d40
Two-Level procID 0 traceNumber 3 virtual addr 5e78900 physical addr 4900
Two-Level procID 1 traceNumber 3 virtual addr 228d60 physical addr 3d60
Two-Level procID 0 traceNumber 4 virtual addr 4758a0 physical addr 58a0
  ...... 
......
Two-Level procID 1 traceNumber 999997 virtual addr 6645ba0 physical addr 723ba0
Two-Level procID 0 traceNumber 999998 virtual addr 249db050 physical addr 12c050
Two-Level procID 1 traceNumber 999998 virtual addr 5fe8440 physical addr a2440
Two-Level procID 0 traceNumber 999999 virtual addr 2f8773e0 physical addr 3ae3e0
Two-Level procID 1 traceNumber 999999 virtual addr 6645ba0 physical addr 723ba0
Two-Level procID 0 traceNumber 1000000 virtual addr 3d729358 physical addr 24358
Two-Level procID 1 traceNumber 1000000 virtual addr 5fe5180 physical addr 2eb180
**** ./mtraces/gcc.trace *****
Proc 0 Num of traces 1000000
Proc 0 Num of second level page tables allocated 164
Proc 0 Num of Page Faults 2852
Proc 0 Num of Page Hit 997148
**** ./mtraces/bzip.trace *****
Proc 1 Num of traces 1000000
Proc 1 Num of second level page tables allocated 39
Proc 1 Num of Page Faults 317
Proc 1 Num of Page Hit 999683

4) Test Case


$ ./memsim -s 0 10 20 ./mtraces/gcc.trace ./mtraces/bzip.trace ./mtraces/random0.trace
$ ./memsim -s 1 10 32 ./mtraces/bzip.trace
$ ./memsim -s 2 10 32 ./mtraces/gcc.trace ./mtraces/bzip.trace
$ ./memsim -s 3 10 24 ./mtraces/gcc.trace ./mtraces/bzip.trace ./mtraces/bzip.trace
$ ./memsim 3 10 18 ./mtraces/bzip.trace ./mtraces/gcc.trace ./mtraces/sixpack.trace ./mtraces/swim.trace ./mtraces/random0.trace ./mtraces/random2.trace
$ ./memsim 3 10 22 ./mtraces/bzip.trace ./mtraces/gcc.trace ./mtraces/sixpack.trace ./mtraces/swim.trace ./mtraces/random0.trace ./mtraces/random2.trace
$ ./memsim 3 7 19 ./mtraces/bzip.trace ./mtraces/gcc.trace ./mtraces/sixpack.trace ./mtraces/swim.trace

About

One-level page table system with FIFO and LRU and Two-level page table system with LRU and Inverted page table with a hashing system

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages