Sistem Operasi:
Prinsip-prinsip Internal dan Desain, 6/E
William Stallings
Bab 8
Memori Virtual
7/18/10
Peta jalan
• Perangkat Keras dan Struktur Kontrol
• Perangkat Lunak Sistem Operasi
• Manajemen Memori UNIX dan Solaris
• Manajemen Memori Linux
• Manajemen Memori Windows
Terminologi
Poin-poin penting dalam
Manajemen Memori
1) Referensi memori adalah alamat logis yang
diterjemahkan secara dinamis ke dalam alamat
fisik pada saat dijalankan
- Sebuah proses dapat ditukar masuk dan keluar
dari memori utama yang menempati wilayah
yang berbeda pada waktu yang berbeda selama
eksekusi
2) Sebuah proses dapat dipecah menjadi
beberapa bagian yang tidak perlu
ditempatkan secara berdekatan di memori
utama
Terobosan dalam
Manajemen Memori
• Jika kedua karakteristik itu ada,
– maka tidak perlu semua halaman atau semua
segmen dari sebuah proses berada di memori
utama selama eksekusi.
• Jika instruksi berikutnya, dan lokasi data
berikutnya berada di memori maka
eksekusi dapat dilanjutkan
– setidaknya untuk sementara waktu
Eksekusi Proses
• Sistem operasi membawa ke dalam memori
utama beberapa bagian program
• Set residen - bagian dari proses yang ada
di memori utama
• Interupsi dihasilkan ketika sebuah alamat
dibutuhkan yang tidak ada di memori utama
• Sistem operasi menempatkan proses
dalam keadaan memblokir
Eksekusi Proses
• Bagian proses yang berisi alamat logika
dibawa ke memori utama
– Sistem operasi mengeluarkan permintaan Baca I/O
disk
– Proses lain dikirim untuk dijalankan saat I/O
disk berlangsung
– Interupsi dikeluarkan saat disk I/O selesai yang
menyebabkan sistem operasi menempatkan
proses yang terpengaruh dalam kondisi Siap
Implikasi dari
strategi baru ini
• Lebih banyak proses dapat dipertahankan
dalam memori utama
– Hanya memuat beberapa bagian dari setiap proses
– Dengan begitu banyak proses dalam memori
utama, sangat mungkin sebuah proses akan
berada dalam kondisi Ready pada waktu tertentu
• Sebuah proses mungkin lebih besar dari
semua memori utama
Nyata dan
Memori Virtual
• Memori nyata
– Memori utama, RAM yang sebenarnya
• Memori virtual
– Memori pada disk
– Memungkinkan pemrograman
multiprogram yang efektif dan
membebaskan pengguna dari batasan
memori utama yang ketat
Lokalitas dan Memori Virtual
• Manfaat (1 & 2) memang menarik, tetapi
apakah skema ini praktis?
– T: Tidakkah menyela ke halaman di tengah-
tengah program akan menyebabkan
penundaan yang nyata?
Lokalitas dan Memori Virtual
• Dalam waktu singkat, eksekusi dapat dibatasi
pada bagian kecil dari program (misalnya
subrutin atau perulangan).
– Hanya mengakses beberapa variabel lokal, atau
sebuah array.
• Boros untuk memuat semua barang lain, tidak
digunakan
– Sering kali dalam paging sederhana atau partisi
dengan swapping, kita menukar sebuah proses
setelah ditukar, dan proses tersebut hanya
menggunakan sebagian kecil dari data dan
kodenya selama waktu tersebut.
Meronta-ronta
• Kondisi di mana sistem menghabiskan
sebagian besar waktunya untuk menukar
bagian daripada mengeksekusi instruksi.
• Untuk menghindari hal ini, sistem operasi
mencoba menebak bagian mana yang paling tidak
mungkin digunakan dalam waktu dekat.
• Tebakan ini didasarkan pada sejarah terkini
Prinsip Lokalitas
• Referensi program dan data dalam suatu
proses cenderung mengelompok
• Hanya beberapa bagian dari proses yang
diperlukan dalam waktu singkat
• Oleh karena itu, dimungkinkan untuk
membuat tebakan cerdas tentang bagian
mana yang akan dibutuhkan di masa depan
• Hal ini menunjukkan bahwa memori virtual
dapat bekerja secara efisien
A Kinerja Proses
di Lingkungan VM
• Perhatikan bahwa
selama proses
berlangsung,
referensi terbatas
pada sebagian
halaman.
Dukungan yang Dibutuhkan untuk
Memori Virtual
• Perangkat keras harus mendukung
paging dan segmentasi
• Sistem operasi harus dapat mengatur
pergerakan halaman dan/atau segmen antara
memori sekunder dan memori utama
Panggilan
• Setiap proses memiliki tabel halamannya sendiri
• Setiap entri tabel halaman berisi nomor
frame dari halaman yang sesuai dalam
memori utama
• Diperlukan dua bit tambahan untuk
mengindikasikannya:
– apakah halaman tersebut berada di memori utama
atau tidak
– Apakah konten halaman telah diubah sejak
terakhir kali dimuat
(lihat slide berikutnya)
Tabel Paging
Terjemahan Alamat
Tabel Halaman
• Tabel halaman juga disimpan dalam memori
virtual
• Saat proses berjalan, bagian dari tabel
halamannya berada di memori utama
Dua Tingkat
Tabel Halaman Hirarki
Penerjemahan Alamat untuk
Hirarki
tabel halaman
Ukuran Halaman
• Ukuran halaman yang lebih kecil, jumlah
fragmentasi internal yang lebih sedikit
• Tetapi ukuran halaman yang lebih kecil,
lebih banyak halaman yang diperlukan per
proses
– Lebih banyak halaman per proses berarti tabel
halaman yang lebih besar
• Tabel halaman yang lebih besar berarti
porsi tabel halaman yang lebih besar
dalam memori virtual
Ukuran Halaman
• Memori sekunder dirancang untuk
mentransfer blok data yang besar secara
efisien sehingga ukuran halaman yang
besar lebih baik
Komplikasi lebih lanjut
ke Ukuran Halaman
• Ukuran halaman kecil, jumlah halaman yang
banyak akan ditemukan di memori utama
• Seiring berjalannya waktu selama eksekusi,
halaman-halaman dalam memori akan berisi
bagian dari proses yang dekat dengan
referensi terbaru. Kesalahan halaman rendah.
• Ukuran halaman yang bertambah
menyebabkan halaman berisi lokasi yang
lebih jauh dari referensi terbaru. Kesalahan
halaman meningkat.
Ukuran Halaman
Peta jalan
• Perangkat Keras dan Struktur Kontrol
• Perangkat Lunak Sistem Operasi
• Manajemen Memori UNIX dan Solaris
• Manajemen Memori Linux
• Manajemen Memori Windows
Manajemen Memori
Keputusan
• Apakah akan menggunakan teknik
memori virtual atau tidak
• Penggunaan paging atau segmentasi atau
keduanya
• Algoritme yang digunakan untuk berbagai
aspek manajemen memori
Elemen Desain Utama
• Handspread:
– Kesenjangan antara fronthand dan backhand
• Keduanya memiliki default yang ditetapkan
pada waktu boot berdasarkan memori fisik
Memori Kernel
Pengalokasi
• Kernel menghasilkan dan menghancurkan
tabel kecil dan buffer secara berkala selama
eksekusi, yang masing-masing membutuhkan
alokasi memori dinamis.
• Sebagian besar blok ini secara signifikan lebih
kecil daripada halaman biasa,
– Oleh karena itu, paging normal tidak akan efisien
• Variasi "sistem teman" digunakan
Teman malas
• UNIX sering menunjukkan perilaku steady-
state dalam permintaan memori kernel;
– yaitu jumlah permintaan blok dengan
ukuran tertentu bervariasi secara
perlahan dalam waktu.
• Untuk menghindari penggabungan dan
pemisahan blok yang tidak perlu,
– sistem teman malas menunda penggabungan
hingga tampaknya diperlukan, dan kemudian
menggabungkan blok sebanyak mungkin.
Teman malas
Parameter Sistem
• Ni = jumlah blok saat ini dengan ukuran 2i
• Ai = jumlah blok ukuran 2i saat ini yang
dialokasikan (ditempati).
• Gi = jumlah blok ukuran 2i saat ini yang
bebas secara global.
• Li = jumlah blok saat ini dengan ukuran 2i
yang bebas secara lokal
Teman malas
Pengalokasi Sistem
Linux
Manajemen Memori
• Berbagi banyak karakteristik dengan Unix
– Tetapi cukup rumit
• Dua aspek utama
– Memproses memori virtual, dan
– Alokasi memori kernel.
Linux
Manajemen Memori
• Direktori halaman
• Halaman direktori tengah
• Tabel halaman
Memori Virtual Linux
• Struktur tabel halaman tiga tingkat
– Setiap tabel berukuran satu halaman
• Direktori halaman
– Setiap proses memiliki satu direktori halaman
– Berukuran 1 halaman, harus dalam memori utama
• Halaman direktori tengah:
– Dapat terdiri dari beberapa halaman, setiap
entri menunjuk ke satu halaman dalam tabel
halaman
Lanjutan Memori Linux
• Tabel halaman
– Dapat juga menjangkau beberapa halaman.
– Setiap entri tabel halaman mengacu pada satu
halaman virtual dari proses.
Terjemahan Alamat
Penggantian Halaman
• Berdasarkan algoritma jam
• "Use bit" diganti dengan variabel usia 8-
bit
– Bertambah dengan setiap akses halaman
• Mengurangi bit usia secara berkala
– Setiap halaman dengan usia 0 adalah
"tua" dan merupakan kandidat untuk
diganti
• Suatu bentuk kebijakan yang paling jarang
digunakan
Windows
Manajemen Memori
• Manajer memori virtual Windows
mengontrol bagaimana memori
dialokasikan dan bagaimana paging
dilakukan.
• Dirancang untuk beroperasi di
berbagai platform
– menggunakan ukuran halaman mulai dari
4 Kbytes hingga 64 Kbytes.
Windows Virtual
Peta Alamat
• Pada platform 32 bit, setiap proses
pengguna melihat ruang alamat 32 bit yang
terpisah
– Mengizinkan 4G per proses
• Sebagian dicadangkan untuk OS,
– Biasanya setiap proses pengguna memiliki 32G
ruang alamat virtual yang tersedia
– Dengan semua proses berbagi ruang sistem
2G yang sama
Windows 32 bit
Ruang Alamat
Halaman Windows
• Pada saat pembuatan, sebuah proses
dapat menggunakan seluruh ruang
pengguna sebesar hampir 2 Gbyte.
• Ruang ini dibagi menjadi halaman ukuran
tetap yang dikelola dalam wilayah yang
bersebelahan yang dialokasikan pada batas
64Kbyte
• Wilayah dapat berada di salah satu dari tiga
negara bagian
– Tersedia
– Dicadangkan
– Berkomitmen
Set Penduduk
Sistem Manajemen
• Windows menggunakan "alokasi
variabel, cakupan lokal"
• Ketika diaktifkan, sebuah proses diberi
struktur data untuk mengelola set
kerjanya
• Set kerja proses aktif disesuaikan tergantung
pada ketersediaan memori utama