Anda di halaman 1dari 101

Subscribe to DeepL Pro to translate larger documents.

Visit www.DeepL.com/pro for more information.

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

• Tujuan utama: Meminimalkan kesalahan


halaman
– Tidak ada kebijakan terbaik yang pasti
Kebijakan Pengambilan
• Menentukan kapan halaman harus
dimasukkan ke dalam memori
• Dua tipe utama:
– Panggilan Permintaan
– Persiapan
Panggilan Permintaan
dan Prepaging
• Panggilan permintaan
– hanya membawa halaman ke dalam
memori utama ketika referensi dibuat ke
lokasi pada halaman
– Banyak kesalahan halaman saat proses pertama kali
dimulai
• Persiapan
– membawa lebih banyak halaman daripada yang
dibutuhkan
– Lebih efisien untuk membawa halaman
yang berada di dalam disk yang
berdekatan
– Jangan bingung dengan "menukar"
Kebijakan Penempatan
• Menentukan di mana bagian proses berada
dalam memori nyata
• Penting dalam sistem segmentasi
• Paging atau gabungan paging dengan
perangkat keras segmentasi melakukan
penerjemahan alamat
Kebijakan Penggantian
• Apabila semua frame dalam memori utama
sudah terisi dan perlu untuk membawa
halaman baru, maka kebijakan penggantian
menentukan halaman mana yang saat ini
ada dalam memori yang akan diganti.
Tapi...
• Halaman mana yang diganti?
• Halaman yang dihapus haruslah halaman
yang paling tidak mungkin direferensikan
dalam waktu dekat
– Bagaimana cara menentukannya?
– Prinsip lokalitas lagi
• Sebagian besar kebijakan memprediksi
perilaku masa depan berdasarkan perilaku
masa lalu
Kebijakan Penggantian:
Penguncian Bingkai
• Penguncian Bingkai
– Jika bingkai terkunci, bingkai tidak dapat diganti
– Kernel dari sistem operasi
– Struktur kontrol utama
– Penyangga I/O
– Kaitkan bit kunci dengan setiap bingkai
Penggantian Dasar
Algoritma
• Ada beberapa algoritme dasar tertentu
yang digunakan untuk pemilihan halaman
yang akan diganti, antara lain
– Optimal
– Terakhir kali digunakan (LRU)
– Masuk pertama keluar pertama (FIFO)
– Jam
• Contoh (melakukan animasi penggantian
halaman)
Contoh
• Contoh penerapan kebijakan ini akan
menggunakan aliran alamat halaman yang
dibentuk dengan mengeksekusi program
adalah
- 232152453252
• Yang berarti halaman pertama yang
direferensikan adalah 2,
– halaman kedua yang dirujuk adalah 3,
– Dan seterusnya.
Kebijakan yang optimal
• Memilih untuk penggantian halaman yang
waktu ke referensi berikutnya adalah yang
terpanjang
• Namun, mustahil untuk memiliki
pengetahuan yang sempurna tentang
kejadian di masa depan
Kebijakan yang Optimal
Contoh

• Kebijakan optimal menghasilkan tiga


kesalahan halaman setelah alokasi bingkai
telah terisi.
Paling baru
Digunakan (LRU)
• Mengganti halaman yang sudah
lama tidak direferensikan
• Berdasarkan prinsip lokalitas, ini seharusnya
menjadi halaman yang paling tidak mungkin
dirujuk dalam waktu dekat
• Sulit untuk diterapkan
– Salah satu pendekatannya adalah menandai
setiap halaman dengan waktu referensi terakhir.
– Hal ini membutuhkan biaya yang besar.
Contoh LRU

• Kebijakan LRU hampir sama baiknya


dengan kebijakan optimal.
– Dalam contoh ini, ada empat kesalahan halaman
Masuk pertama, keluar pertama
(FIFO)
• Memperlakukan bingkai halaman yang
dialokasikan ke suatu proses sebagai
penyangga melingkar
• Halaman dihapus dalam gaya round-robin
– Kebijakan penggantian yang paling sederhana
untuk diterapkan
• Halaman yang paling lama berada dalam
memori akan diganti
– Namun, halaman ini mungkin akan segera
dibutuhkan lagi jika sudah tidak digunakan lagi
Contoh FIFO

• Kebijakan FIFO menghasilkan enam kesalahan


halaman.
– Perhatikan bahwa LRU mengakui bahwa
halaman 2 dan 5 lebih sering direferensikan
daripada halaman lainnya, sedangkan FIFO
tidak.
Kebijakan Jam
• Menggunakan bit tambahan yang disebut "use
bit"
• Saat halaman pertama kali dimuat dalam
memori atau direferensikan, bit
penggunaan diatur ke 1
• Ketika tiba waktunya untuk mengganti
halaman, OS akan memindai set yang
membalikkan semua angka 1 menjadi 0
• Frame pertama yang ditemukan dengan bit
penggunaan yang sudah ditetapkan ke 0
akan diganti.
Kebijakan Jam
Kebijakan Jam
Contoh Kebijakan Jam Kerja

• Perhatikan bahwa kebijakan jam sangat


mahir dalam melindungi frame 2 dan 5 dari
penggantian.
Contoh Gabungan
Perbandingan
Set Penduduk
Manajemen
• OS harus memutuskan berapa banyak
halaman yang akan dimasukkan ke dalam
memori utama
– Semakin kecil jumlah memori yang dialokasikan
untuk setiap proses, semakin banyak proses
yang dapat berada dalam memori.
– Jumlah halaman yang dimuat dalam jumlah
kecil akan meningkatkan kesalahan halaman.
– Di luar ukuran tertentu, alokasi halaman lebih
lanjut tidak akan mempengaruhi tingkat
kesalahan halaman.
Ukuran Set Residen
• Alokasi tetap
– Memberikan proses sejumlah halaman yang
tetap untuk dieksekusi
– Apabila terjadi kesalahan halaman, salah satu
halaman dari proses tersebut harus diganti
• Alokasi variabel
– Jumlah halaman yang dialokasikan untuk
suatu proses bervariasi selama masa pakai
proses
Lingkup Penggantian
• Ruang lingkup strategi penggantian dapat
dikategorikan sebagai global atau lokal.
– Kedua jenis ini diaktifkan oleh kesalahan
halaman apabila tidak ada bingkai halaman
kosong.
– Kebijakan penggantian lokal hanya memilih di
antara halaman-halaman residen dari proses
yang menghasilkan kesalahan halaman
– Kebijakan penggantian global
mempertimbangkan semua halaman yang tidak
terkunci dalam memori utama
Alokasi Tetap,
Ruang Lingkup Lokal
• Tentukan terlebih dahulu jumlah alokasi yang
akan diberikan untuk suatu proses
• Jika alokasi terlalu kecil, akan ada tingkat
kesalahan halaman yang tinggi
• Jika alokasi terlalu besar, akan ada terlalu
sedikit program dalam memori utama
– Peningkatan waktu idle prosesor atau
– Peningkatan pertukaran.
Alokasi Variabel, Cakupan Global
• Paling mudah diterapkan
– Diadopsi oleh banyak sistem operasi
• Sistem operasi menyimpan daftar bingkai bebas
• Bingkai bebas ditambahkan ke rangkaian
proses residen ketika terjadi kesalahan
halaman
• Jika tidak ada bingkai yang kosong,
menggantikan satu dari proses lain
– Di situlah letak kesulitannya... yang harus diganti.
Alokasi Variabel,
Ruang Lingkup Lokal
• Ketika proses baru ditambahkan, alokasikan
jumlah frame halaman berdasarkan jenis
aplikasi, permintaan program, atau kriteria
lainnya
• Ketika kesalahan halaman terjadi, pilih
halaman dari antara kumpulan residen
dari proses yang mengalami kesalahan
• Mengevaluasi kembali alokasi dari waktu ke
waktu
Set Penduduk
Ringkasan Manajemen
Kebijakan Kebersihan
• Kebijakan pembersihan berkaitan dengan
penentuan kapan halaman yang dimodifikasi
harus dituliskan ke memori sekunder.
• Permintaan pembersihan
– Halaman akan ditulis hanya jika halaman
tersebut telah dipilih untuk diganti
• Pra-pembersihan
– Halaman-halaman ditulis secara bertahap
Kebijakan Kebersihan
• Pendekatan terbaik menggunakan penyangga
halaman
• Halaman yang diganti ditempatkan dalam dua
daftar
– Dimodifikasi dan tidak dimodifikasi
• Halaman dalam daftar yang dimodifikasi
ditulis secara berkala dalam beberapa
kelompok
• Halaman dalam daftar yang tidak
dimodifikasi akan diklaim kembali jika
dirujuk lagi atau hilang saat bingkainya
ditetapkan ke halaman lain
Kontrol Beban
• Menentukan jumlah proses yang akan
berada di memori utama
– Tingkat multipemrograman
• Terlalu sedikit proses, banyak kesempatan
ketika semua proses akan diblokir dan
banyak waktu yang dihabiskan untuk
menukar
• Terlalu banyak proses akan menyebabkan rontok
Pemrograman ganda
Penangguhan Proses
• Jika tingkat multiprogramming ingin dikurangi,
satu atau lebih proses yang sedang berjalan
harus ditangguhkan (ditukar).
• Ada enam kemungkinan yang bisa terjadi...
Kebijakan penangguhan
• Proses prioritas terendah
• Proses kesalahan
– Proses ini tidak memiliki set kerja di memori
utama sehingga akan diblokir
• Proses terakhir diaktifkan
– Proses ini paling tidak mungkin memiliki set
kerja yang menetap
Kebijakan penangguhan
lanjutan.
• Proses dengan himpunan penduduk terkecil
– Proses ini membutuhkan upaya yang paling
sedikit untuk memuat ulang di masa
mendatang
• Proses terbesar
– Memperoleh bingkai paling bebas
• Proses dengan jendela eksekusi terbesar
yang tersisa
Peta jalan
• Perangkat Keras dan Struktur Kontrol
• Perangkat Lunak Sistem Operasi
• Manajemen Memori UNIX dan Solaris
• Manajemen Memori Linux
• Manajemen Memori Windows
Unix
• Dimaksudkan untuk tidak bergantung
pada mesin sehingga implementasinya
bervariasi
– Unix awal: partisi variabel tanpa memori
virtual untuk halaman
– Unix terbaru (SVR4 & Solaris) menggunakan
memori virtual yang dipagari
• SVR4 menggunakan dua skema terpisah:
– Sistem paging dan pengalokasi memori kernel.
Sistem Paging dan
Pengalokasi Memori Kernel
• Sistem paging menyediakan kemampuan
memori virtual yang mengalokasikan
bingkai halaman dalam memori utama
untuk proses
– Juga mengalokasikan bingkai halaman ke buffer blok
disk.
• Pengalokasi Memori Kernel
mengalokasikan memori untuk kernel
– Sistem paging kurang cocok untuk tugas ini
Paged VM
Struktur Data
Bidang Entri Tabel Halaman
Blok Disk
Bidang Deskriptor
Bingkai Halaman dan
Tukar bidang Penggunaan
Penggantian Halaman
• Tabel data bingkai halaman digunakan
untuk penggantian halaman
• Pointer yang digunakan untuk membuat
beberapa daftar di dalam tabel
– Daftar bingkai gratis
– Ketika jumlah frame bebas turun di bawah
ambang batas, kernel akan mencuri sejumlah
frame untuk mengimbanginya.
Jam "Dua Tangan"
Penggantian Halaman
Parameter untuk
Jam Dua Tangan
• Scanrate:
– Kecepatan kedua tangan memindai daftar
halaman, dalam halaman per detik

• 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

Anda mungkin juga menyukai