Virtual Memory: Sistem Operasi
Virtual Memory: Sistem Operasi
VIRTUAL MEMORY
Overlay :
Program dipecah menjadi bagian-bagian yang dapat dimuat memori, jika memori terlalu kecil untuk
menampung seluruhnya sekaligus. Overlay disimpan pada disk dan di-keluar-masukkan dari dan ke
memori oleh sistem operasi. Pembagian dilakukan oleh programmer.
Sistem Operasi
Bagian Kode dan data
pemakai yang harus
selalu tinggal di memori
utama selama eksekusi
program
Fase Fase Fase
Daerah Overlay Inisialisasi Pemrosesan Keluaran
1
2
3
1. Paging
Sistem paging mengimplementasikan ruang alamat besar pada memori kecil menggunakan index
register, base register, segment register, dll.
CPU
card
CPU
mengirim
CPU alamat DISK
virtual MEMORI CONTROL
MMU ke MMU LER
BUS
MMU mengirim alamat fisik ke memori
Posisi dan fungsi MMU
Alamat Memori
Mem Nyata
2 ori 0–4 K
0–4 K
1 4K–8 K
4K–8 K
6 Virtu 8 K – 12 K
8 K – 12 K
0 12 K – 16 K
12 K – 16 K
16 K – 20 K 4 al 16 K – 20 K
3 20 K – 24 K
20 K – 24 K
X 24 K – 28 K
24 K – 28 K
X 28 K – 32 K
28 K – 32 K
32 K – 36 K X
36 K – 40 K 5
40 K – 44 K X Page
44 K – 48 K 7
48 K – 52 K X fra
52 K – 56 K X
X
me
56 K – 60 K
60 K – 64 K X Virtual
page
Relasi Antara Alamat Virtual dan Alamat Fisik
2. Tabel Page
Alamat virtual dibagi menjadi dua bagian:
- Nomer Page (bit-bit awal)
- Offset (bit-bit akhir)
Secara metematis: tabel page merupakan fungsi dgn nomer page sebagai argumen dan nomer frame
sebagai hasil.
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0
Cara Kerja Pemetaan oleh MMU
Tabel Page
3. Memori Asosiatif
Tabel Page biasanya diletakkan di memori, dengan demikian diperlukan dua kali referensi ke memori :
sekali untuk mencari page, dan sekali untuk mencari data yang akan diproses.
Solusi:
Komputer dilengkapi dengan komponen hardware kecil untuk pemetaan alamat virtual ke alamat
fisik tanpa menelusuri seluruh tabel page.
Komponen ini disebut memori asosiatif atau translation lookaside buffer, yang biasanya berada di
dalam MMU, dan berisi beberapa entri.
Valid entry
No. page Modified Protection No. frame
1 140 1 RW 31
1 20 0 R X 38
1 130 1 RW 29
1 129 1 RW 62
1 19 0 R X 50
1 21 0 R X 45
1 860 1 RW 14
1 861 1 RW 75
Bagian referensi memori yang dapat dipenuhi dari memori asosiatif disebbut hit ratio. Makin tinggi hit
ratio, makin baik performance manajemen memori khususnya, dan komputer umumnya.
String Pengacuan 0 1 2 3 0 1 4 0 1 2 3 4
Page Termuda 0 1 2 3 3 3 4 0 1 2 3 4
0 1 2 2 2 3 4 0 1 2 3
0 1 1 1 2 3 4 0 1 2
Page Tertua 0 0 0 1 2 3 4 0 1
Fault F F F F F F F F 10 Fault
(b)
Waktu load
0 3 7 8 12 14 15 18
A B C D E F G H
Waktu load
3 7 8 12 14 15 18 20
B C D E F G H A
Pada algoritma ini, daftar page bisa juga dibuat berbentuk jam (clock page replacement algorithm)
Algoritma penggantian page clock
String 2 3 2 1 5 2 4 5 3 2 5 2
Pengacuan
> 2 2 2 >2* 2* 2* 2* >2* >2 >2* >2* >2*
> 3 3 3 5 5 5 5* 5 5 5* 5*
> > 1 >1 >1 4 4 3 3 3 3
Fault F F F F F F 6 Fault
Keterangan : * adalah diacu dan > adalah ditunjuk pointer
4. Isu Implementasi
Instruction backup
Instruksi yang menyebabkan referensi ke page yang belum ada di memori (menyebabkan page fault)
harus diulang ketika page tersebut telah tersedia. Beberapa sistem operasi meng-copy setiap
instruksi sebelum dilaksanakan sehingga hal ini tidakmakan waktu terlalu lama.
Locking pages in memory
Pada saat satu proses menjalani tahap I/O, proses lain bisa dijalankan. Yang mungkin terjadi ialah
page proses I/O tersebut digantikan oleh proses yang kedua ini (jika dipakai alokasi global). Jalan
keluarnya ialah dengan me-lock page-page proses I/O.
Shared pages
Dua atau lebih proses bisa memakai bersama page-page yang berasal dari editor yang mereka
pakai. Penutupan salah satu proses ini tanpa disengaja bisa mengosongkan juga page yang dipakai
bersama tersebut. Diperlukan suatu struktur data khusus untuk memantau page-page yang dipakai
bersama ini.
Backing Store
Pada disk, disediakan area untuk menampung page yang dikeluarkan dari memori (paged out) yang
disebut swap area. Setiap proses memiliki swap area di disk. Swap area ada yang statis ada juga
yang dinamis.
Paging Daemon
Untuk meyakinkan tersedianya frame bebas yang cukup banyak, banyak sistem paging yang
menggunakan proses background yang disebut paging daemon. Jika jumlah frame bebas terlalu
sedikit, paging daemon akan mengosongkan beberapa page setelah menulisnya ke disk jika pernah
dimodifikasi.
Penanganan Page Fault
Sementara page dimasukkan, proses yang mengalami fault dihentikan sejenak dan yang lainnya
dijalankan, jika ada.
7. Ketika disk interrrupt menandai bahwa page telah ada, tabel page di-update untuk menunjukkan
posisinya, dan frame ditandai berada dalam status normal.
8. Instruksi yang menyebabkan fault di-back-up ke status mulainya dan program counter di-reset
untuk menunjuk ke instruksi tersebut.
9. Proses yang fault tersebut dijadwalkan, dan sistem operasi kembali ke rutin bahasa assembly yang
memanggilnya.
10. Rutin ini mengembalikan register dan informasi lainnya ke keadaan semula , dan kembali ke user
untuk melanjutkan eksekusi, seakan-akan tidak ada fault yang terjadi.
SEGMENTASI
Compiler bisa memiliki beberapa tabel dengan alamat virtual yang terpisah, misalnya terdiri dari tabel-
tabel untuk:
1. Source text,
2. Tabel simbol,
3. Tabel untuk semua konstanta integer dan floating point,
4. Parse tree, berisi analisis sintaksis program, dan
5. Stack yang digunakan untuk pemanggilan prosedur.
Tabel 1 s/d 4 bisa bertambah pada saat kompilasi berjalan, sehingga dengan sistem paging yang
berukuran tetap, batas satu page bisa terlampaui.
Dengan alasan ini dipakai bagian-bagian dengan alamat yang relatif independen, yang disebut segmen.
Setiap segmen mempunyai ukuran yang berbeda dengan yang lain. Panjang segmen juga bisa berubah
selama eksekusi.
Segmentasi juga memberikan fasilitas pemakaian bersama prosedur atau data antar beberapa proses.
Contoh umumnya adalah shared library.
4K 4K 4K 4K
Source Parse Call
text tree stack
8K 8K 8K 8K
Tabel
simbol
12K 12K 12K 12K
16K 16K
20K
Memori yang tersegmentasi memungkinkan setiap tabel bertambah atau berkurang.
Checkerboarding: Timbulnya blok-blok memori yang kosong (hole) pada saat isi segmen dikeluarkan.
Hal ini diatasi dengan pemampatan (compaction).
Segmentasi dengan Paging : Setiap segmen dapat dianggap sebagai satu virtual memori, dan masing-
masing dibagi menjadi page-page.
Salah satu mesin yang memakai cara ini adalah MULTICS. Setiap program MULTICS memiliki satu tabel
segmen, dengan satu descriptor per segmen. Segmen descriptor berisi keterangan apakah segmen
yang bersangkutan ada di memori atau tidak.
Nomer
segmen
Nomer
Descriptor page
Page frame Offset
Page