VIRTUAL MEMORY
1
Pengingat hierarkhis
Level atas
Registers lebih cepat
Instruksi, Operand
L1 Cache
Blok
L2 Cache
Blok
Memory
Virtual
Memory Page
Disk
Disk
Main Memory
Aplikasi Aplikasi
Aplikasi
B C
A
3
sebelum ada konsep virtual memory ….
Secondary memory
Main Memory
pemetaan
M
program N #%x@% ??
X
..
M << N
(
programmer
4
dengan virtual memory …
Secondary memory
Main Memory
pemetaan
:
5
Konsep Virtual Memory
Virtual Memory adalah konsep yang diaplikasikan oleh Operating System
dalam mengelola keterbatasan kapasitas main memory.
Disebut virtual karena secara fisik pengingat ini tidak ada wujudnya.
Ruang pengingat fisik dan virtual dibagi menjadi blok-blok kecil,
sehingga pada saat bersamaan blok-blok dari beberapa aplikasi dapat
berbagi penggunaan ruang main memory.
Disk
Main Memory
A1 B1 C1
A2 B2 C2
B3 C3
6
OS memetakan blok-blok aplikasi yg sedang dijalankan, dari ruang
penyimpanan fisiknya (disk) ke ruang virtual memory yg dialokasikan
utk masing-masing aplikasi.
Dari ruang virtual memory, blok-blok tsb dipetakan oleh OS ke ruang
fisik main memory agar dapat diproses oleh CPU.
Setiap program aplikasi mendapat ruang virtual masing-masing.
OS
Disk Virtual Memory
Main Memory
apl.A
pemetaan
pemetaan apl.B fisik
apl.C
:
7
fisik non-fisik
Alamat Fisik vs alamat Virtual :
disk Virtual Memory
Main Memory
0 BA + 0
0
1 BA + 1
ruang virtual 1
2 BA + 2
aplikasi A 2
… …
:
… :
… BB + 0
… BB + 1 Alamat fisik
ruang virtual
: BB + 2 aplikasi B di Main Memory
… …
… :
… BC + 0
… BC + 1 ruang virtual
… BC + 2 aplikasi C
: :
8
alamat fisik alamat BA/BB/BC : Alamat basis virtual yg diberikan
di disk virtual oleh OS untuk aplikasi A/B/C.
Virtual Memory Ruang alamat virtual :
BA + 0 Masing masing aplikasi mendapat alokasi ruang
BA + 1 r.virtual alamat virtual yang terpisah , untuk memudahkan
BA + 2 apl. A pengelolaan & proteksi oleh OS.
…
Aplikasi X tidak dapat mengakses ruang virtual
:
aplikasi Y.
BB + 0
BB + 1 r.virtual Alamat virtual aplikasi X :
BB + 2 apl. B
… alamat virtualX = alamat basis virtualX + alamat logikaX
: alamat basis virtualX : diberikan oleh OS untuk
BC + 0 memetakan aplikasi X ke pengingat virtual
BC + 1 r.virtual
BC + 2 apl. C alamat logikaX : alamat yg digunakan oleh
: pemrogram dalam menuliskan programnya (sesuai
urutan penulisan dalam program).
alamat Alamat logikaX dibangkitkan oleh CPU pada saat
virtual 9
eksekusi program X.
OS
Alamat logika
CPU +
Alamat virtual
Tabel Halaman/
Segment
Alamat fisik
10
Implementasi VM
Paging
Segmentation
Kombinasi Paging & Segmentation
1. Paging
Ruang virtual dan ruang fisik dibagi menjadi blok-blok berukuran sama.
Di ruang virtual, satu blok disebut satu halaman (page), di ruang fisik,
satu blok disebut satu bingkai halaman (page frame )
11
2. VM tipe Segmen :
Ruang virtual untuk dibagi menjadi blok-blok dengan ukuran
bervariasi , blok-blok ini disebut segmen.
segmen2
segmen0
segmen1 segmen1
segmen2 segmen0
pemetaan
: virtual fisik
12
3. VM tipe Segmen Berhalaman :
Ruang virtual untuk dibagi menjadi segmen-segmen, tiap segment
adalah kelipatan bulat halaman.
segmen0
segmen1
segmen2
pemetaan
: virtual fisik
13
Ukuran Halaman
Arsitektur
Standar Besar Sangat besar
32-bit x86 4 KB 2 MB 4 MB
x86-64 4 KB 2 MB 1 GB
Power
4 KB 64 KB, 16 MB 16 G
Architecture
64 KB, 4 MB,
SPARC 8 KB -
256 MB, 2 GB
ARMv7 4 KB 1 MB, 16 MB -
14
Keuntungan Virtual Memory
1. Memungkinkan beberapa aplikasi berbagi ruang fisik main memory yg
kapasitasnya terbatas.
15
Virtual memory tipe Halaman
Ruang virtual setiap aplikasi
Program apl.X Ruang virtual apl.X
dibagi menjadi blok-blok
berukuran sama yg disebut 0 I0 Bx+ 0 I0
halaman. 1 I1 B x+ 1 I1
page0
2 I2 B x+ 2 I2
Ii : instruksi ke i : : : :
Bx : virtual base untuk aplikasi X : : : :
(diberikan oleh OS utk : : : :
page1
setiap aplikasi aktif). : : : :
: : : :
Alamat virtual :
: : : :
Bx + i : : : :
: : : :
nomor offset
alamat logika alamat virtual
halaman 16
apl. X apl.X
Translasi Alamat
• Dalam eksekusi program aplikasi X, CPU akan membangkitkan alamat
logika data/instruksi yang akan diakses.
Virtual base-addressX B
X
main
MMU
memory
Page alamat fisikX
CPU alamat alamat
+
logikaX virtualX Table
Disk17
Tabel Halaman (Page Table) PTBR Main Memory
Tabel halaman adalah tabel yg dikelola a …
oleh OS untuk memetakan alamat virtual …
21
Translasi alamat virtual fisik
Ruang Virtual aplikasi x : Ruang Fisik :
page0 frame0
page1 Tabel frame1
pagei framej
page2 Halaman frame2
page3 aplikasi x frame3
… …
Tabel
Halaman
2
Tabel Halaman
entry# valid bit access right frame#
0
1
alamat fisik :
2 1/0 … …
:
di MM atau di disk
1 , frame ada di M. Memory
valid bit =
0 , frame ada di disk 23
Contoh : Tabel Halaman
access right
entry# valid bit frame# page# = entry#
R RW …
0 1 0 1 … 8H
1 0 1 0 … 5H
2 1 1 0 … CH
: : : : : :
FEH 0 0 1 … A7H
FFH 1 0 1 … 7H
A1 A1 B2 B2
B4 A2 B1 B1 B1
B1 A3 C1 C2 A1
A3 A2 A2 A2
C1 B1
t
C2 B2 • miss B2 • miss A1
B3 • replaced A1 • replaced C2
B3 B4
Seperti pada pengingat cache, pada virtual
C4 memory juga terjadi peristiwa hit, miss dan
A1 C1 replaced
A2 C2
Contoh :
B2 C3 untuk 3 aplikasi aktif A, B, C dan main-
C3 C4 memory dengan kapasitas 4 halaman. 25
PageTable Hit :
alamat virtual alamat fisik di main memory
27
1. Gambarkan flowchart untuk kasus Hit dan Miss pada virtual memory.
2. Proses transfer halaman dari disk ke MM membutuhkan waktu yg relatif
panjang. Apa yg dilakukan oleh OS agar CPU tidak “idle” ketika proses
transfer berlangsung ?
28
Masalah VM tipe Halaman.
1. Page table disimpan di main-memory.
Pengaksesan suatu data/instruksi harus didahului dengan
pengaksesan Tabel (untuk menentukan alamat fisiknya) perlu 2 kali
akses ke main memory.
(1a) akses ke Tabel Halaman.
Main memory
(1b) akses ke data/instruksi.
(1a)
Alamat virtual
Page-table
2. Ukuran Tabel Halaman :
apl.x
Jumlah entry dalam tabel = Alamat fisik
jumlah halaman virtual
program aplikasi ybs.
Untuk aplikasi yang besar, (1b)
ukuran Tabel menjadi sangat data/instruksi
besar.
29
Untuk 3 aplikasi aktif (apl. A , apl. B, apl. C) , akan Main Memory
ada 3 Tabel-halaman yg berada di Main memory.
Dengan ukuran tabel yg besar, main memory akan :
dikonsumsi oleh tabel-tabel halaman !!!
Page-TabelA
Contoh : Ukuran tabel-halaman suatu aplikasi.
:
Ukuran halaman = 4 KB /halaman
Ruang virtual aplikasiA = 4GB
Page-TabelB
page3
fragment internal
(di dalam halaman)
L : Ukuran Halaman
L31B < L
Translation Lookaside Buffer (TLB)
Masalah 1 : Perlu 2 kali akses ke main memory, waktu cukup panjang.
Diatasi dengan penggunaan Translation Lookaside Buffer (TLB).
32
OS
main
Virtual baseA memory
BA MMU
Miss TLB
Miss
Page
TableA
Hit
Hit TLB : satu akses ke main memory (akses alamat fisik
data)
data
Miss TLB : dua akses ke main memory (akses
tabel halamanA dan akses data).
33
pengingat cache berada di main
khusus utk TLB memory
34
Alamat virtual data
virtual page# offset
x …
TLB
tag virtual page#
…
Hit !
x a
…
phys. page# offset
…
a …
35
Translasi alamat virtual alamat fisik dengan TLB :
Pencarian alamat fisik dilakukan pada TLB lebih dahulu.
a) TLB hit : Bila alamat halaman fisik (page-frame#) untuk alamat
halaman virtual (page#) yang dicari ada di dalam TLB maka
diperoleh alamat fisik. Alamat fisik ini digunakan untuk
mengakses data/instruksi dari main memory.
b) TLB miss : Bila alamat halaman fisik untuk alamat halaman virtual
yang dicari tidak ada di dalam TLB, maka dilakukan pencarian
alamat fisik dari Page Table yang tersimpan di main memory.
Pencarian di page-table dapat menghasilkan
- PT hit : Halaman fisik yg dicari ada di main memory. Alamat fisik
yg diperoleh dari PT digunakan untuk mengakses
data/instruksi dari main memory.
- PT miss : Halaman fisik yg dicari ada di secondary memory.
Alamat fisik yg diperoleh dari PT digunakan untuk
mengakses secondary memory. 36
TLB hit :
2ndary
Main mem. mem.
(1) alamat
virtual TLB Page
Table
alamat
(2) TLB hit
alamat fisik
data/instr.
fisik
(3)
(akses data/instruksi)
37
TLB miss, PT hit :
2ndary
mem.
(2) TLB miss Main mem.
(1) alamat alamat
virtual TLB Page
virtual (3) PT hit
Table
TLB hit
alamat
data/instr.
fisik
(4)
39
Tabel Halaman Multi-Level
Masalah 2 : Ukuran Tabel Halaman yang besar (untuk aplikasi-aplikasi
berukuran besar) dan penyimpanan beberapa tabel halaman
aplikasi aktif secara bersama-sama di MM dapat mengurangi
ketersediaan ruang di MM.
halaman level-1.
Tabel Halaman 2-level utk aplikasi A PT level-2 MM
b
virtual page# offset b+1 x
3 2 6 b+2
offset
…
x+6 data
c
2 c+1
PTBRA a c+2 x
PT level-1 …
a
d
a+1
3 d+1
a+2
d+2
a+3 c …
…
Page Table
0
1
2 … 1
3
… …
:
: frame# offset
2m+n-1 alamat fisik
Ruang Ruang
7 pages virtual 4 pages
virtual
fragment
Segment Table :
• Setiap aplikasi memiliki segment-table
sendiri (dari OS). Control
Entry# Base Limit bits
• entry# = segment#
v
Informasi untuk segment virtual i ada 0 …
pada entry i. 1 …
Basei : alamat basis fisik dari segment 2 base2 limit2 … 0/1
virtual i. : …
Limiti : batas (ukuran) segmenti . : …
47
vi : valid bit segment i.
Virtual memory Physical
alamat virtual data
segment# memory
Segment# Offset
Seg. 1
code Segment table
(1)
Base Limit control
Seg. 2
1 stack
offset
data 2
3
: code
Seg. 3
stack (2)
50
Fragmentasi Eksternal :
Tebentuknya ruang-ruang kosong antar segment di MM, ruang-ruang tsb
tidak dapat dimanfaatkan karena lebih kecil dibandingkan ukuran
segment yg akan masuk ke MM.
segment B1
segment A0 segment B0 fragment1
segment A3
segment A1
segment B1 fragment2
segment A2
segment A3
51
R.virtual aplikasi A R.virtual aplikasi B MM
segment B1
segment A0 segment B0
fragment1
segment A1 segment A3
segment B1
segment A2 fragment2
segment A3
Misalkan segment A1 akan ditempatkan di MM.
Karena ukuran fragment1 < ukuran segment A1,
begitu juga ukuran fragment2, maka segmentA1 tidak
dapat ditempatkan di MM tanpa melakukan
replacement.
Padahal sebetulnya
ukuran (fragment1 + fragment2) > ukuran segment A1.
52
apl.1 16K apl.1 16K 16K
appl.5 appl.4
16K apl.4 16K
masuk keluar
8K 8K
16K apl.2 24K
L1
apl.2 24K
appl.6, (24K)
apl.3 32K
akan masuk
16K
L2
(oleh OS)
40K
apl.5 24K
8K L3
55
Alamat virtual data
segment# Page# Offset
Tabel-Halaman Segment i
page j 0
Segment i 1
Tabel-Segment :
0 j
1 :
:
i … Entry# = Page#
:
physical
b f c
Seg.Table Pointer e address
d +
a f
+ d e
f
d+a e Offset
e+b =c
f
f+c
Ada dua policies untuk menentukan kapan suatu halaman atau segment
harus dibawa ke main-memory (fisik).
1. Demand paging/segmentation :
Halaman/segment dibawa ke main-memory hanya bila terjadi “miss”
(fault) dalam pengaksesan data dalam halaman/segment ybs.
2. Pre-paging :
Selain halaman/segment penyebab “miss”, halaman/segment yang
berdekatan (dalam VM) dengannya juga dibawa ke main-memory.
58
VM Placement policy
Menentukan dimana halaman/segment ditempatkan dalam main memory.
Pada sementation,
Penempatan dilakukan pada ruang kosong yang dapat menampung
segment ybs. Karena ada banyak ruang kosong di main-memory, maka
pemilihan dilakukan dengan menggunakan suatu algoritma
penempatan ( algoritma best-fit, first-fit dsb) yang bertujuan untuk
meminimalkan fragmentasi eksternal.
59
Algoritma Placement
60
search 1st Fit Best Fit
segment
Ukuran :
x<z<y
Fragment eksternal :
Dz < Dy
y
Dy
: ruang terisi
: ruang kosong
z
Dz
61
Replacement Policy
Bila di main-memory sudah tidak ada lagi ruang kosong yang ukurannya
lebih besar atau sama dengan halaman atau segment yang harus
ditempatkan di main-memory, maka harus dilakukan replacement
(penggusuran).
Halaman atau segment yg tidak boleh digusur diberi tanda lock bit = 1
(pada control bits).
62
Ketika Main-memory-miss terjadi pada aplikasi A
Cache
Memory-I/O bus
Disk 63