SISTEM
PAGING DAN SEGMENTASI
Deskripsi
Sistem Paging
Sistem
Paging mengimplentasikan ruang alamat besar pada memori kecil menggunakan index
register, base register, dan segment register, dan lain-lain. Pemakai seolah
mempunyai ruang memori sangat besar tanpa mengelola overlay.
Beberapa
istilah pada sistem paging adalah virtual address, real address, page, page
frame, page fault, MMU.
Virtual
Address adalah alamat yang dihasilkan perhitungan menggunakan index register,
base register, segment register, dan sebagainya. Ruang alamat yang dibentuk
virtual address adalah disebut virtual address space dilambangkan dengan V.
Jumlah alamat pada V disimbolkan dengan │V│. Virtual address ini yang diacu
pada proses yang running.
Real
Address adalah alamat di memori utama fisik. Ruang alamat yang dibentuk real
address disebut real address space dilambangkan dengan R. Jumlah alamat pada R
disimbolkan dengan │R│. Pada implementasi sistem memori virtual, normalnya
│V│>>│R│.
Meski
pengacuan proses dilakukan berdasarkan memori virtual, proses sesungguhnya
berjalan di memori nyata. Virtual address harus dipetakan menjadi real address
saat proses dieksekusi. Pemetaan harus dilakukan dengan sangat cepat atau
kinerja komputer akan menurun drastis.
Sistem
komputer akan menerjemahkan memori virtual menjadi alamat fisik. Bagian yang
bertugas untuk memetakan adalah MMU.
Page
adalah unit terkecil virtual address space. Ruang memori virtual proses
merupakan kelipatan page yang berukuran sama.
Page
frame adalah unit terkecil memori fisik. Memori fisik secara konseptual dibagi
menjadi sejumlah unit berukuran tetap disebut page frame. Page frame sering
disingkat frame.
oleh Adik Joko Supriyanto
12.5.00108
Dasar
Penggantian Halaman
Pada
pembahasan mengenai masalah page-fault, diasumsikan bahwa setiap halaman
minimal mengalami satu kali page fault, yaitu pada saat diakses pertama
kali. Akan tetapi, tidak semua halaman tersebut akan digunakan oleh suatu
proses. Jika terdapat sebuah proses yang memiliki sepuluh halaman, dan hanya
menggunakan setengah di antaranya, yaitu lima halaman, maka demand paging
menyimpan kelima proses yang tidak dibutuhkan tersebut agar tidak diakses oleh
M/K. Dengan begitu, kita dapat meningkatkan degree of multiprogramming,
yaitu dengan menjalankan proses dua kali lebih banyak. Jika kita memiliki empat
puluh bingkai, kita dapat menjalankan delapan proses. Bandingkan dengan jika
kesepuluh halaman tersebut dipanggil, maka hanya dapat dijalankan maksimum
empat proses.
Jika
kita meningkatkan degree of multiprogramming, yaitu dengan menjalankan proses
lebih banyak, maka dapat terjadi over-allocating memory. Misalnya kita
menjalankan enam proses yang masing-masing memiliki sepuluh halaman dan
seluruhnya dipanggil (di-load) ke memori, maka akan dibutuhkan 60
bingkai, padahal yang tersedia hanya empat puluh bingkai. Over-allocating
memory juga dapat terjadi jika terdapat page fault, yaitu pada saat
sistem operasi mendapatkan halaman yang dicari pada disk kemudian membawanya ke
memori fisik tetapi tidak terdapat bingkai yang kosong pada memori fisik tersebut.
Sistem
operasi memiliki dua cara untuk menangani masalah ini. Yang pertama dengan
men-terminasi proses yang sedang mengakses halaman tersebut. Akan tetapi, cara
ini tidak dapat dilakukan karena demand paging merupakan usaha sistem
operasi untuk meningkatkan utilisasi komputer dan throughput-nya.
Cara
yang kedua yaitu dengan penggantian halaman (page replacement). Sistem
operasi dapat memindahkan suatu proses dari memori fisik, lalu menghapus semua
bingkai yang semula digunakannya, dan mengurangi level of multiprogramming
(dengan mengurangi jumlah proses yang berjalan).
Prinsip
kerja penggantian halaman adalah sebagai berikut. “Jika tidak ada bingkai yang
kosong, maka dicari (dengan suatu algoritma ganti halaman) salah satu bingkai
yang sedang tidak digunakan dan kemudian dikosongkar. Suatu bingkai dapat
dikosongkan dengan memindahkan isinya ke dalam ruang pemindahan kemudian
mengubah semua tabel halaman hingga mengindikasikan bahwa halaman yang dipindah
tersebut sudah tidak berada di memori fisik. Lalu bingkai yang telah kosong
tersebut dapat digunakan oleh halaman yang akan ditempatkan di memori fisik”.
Dengan
memodifikasi urutan penanganan page fault, maka dapat dijabarkan urutan
proses page replacement sebagai berikut.
- Mencari lokasi dari halaman yang dicari di disk.
- Mencari bingkai yang kosong di memori fisik:
- Jika ada bingkai yang kosong, maka gunakan bingkai tersebut.
- Jika tidak ada bingkai yang kosong, gunakan algoritma ganti halaman untuk memilih bingkai “korban”
- Pindahkan bingkai “korban” tersebut ke disk dan sesuaikan tabel halaman.
- Masukkan halaman yang berasal dari disk tersebut ke dalam bingkai yang baru dikosongkan tersebut. Sesuaikan tabel halaman.
- Lanjutkan proses yang telah diinterupsi.
Dari
penjelasan di atas, maka dapat disimpulkan bahwa jika tidak terdapat bingkai
yang kosong maka terdapat dua transfer halaman (yang keluar dan masuk memori
fisik). Hal ini tentu saja menambah waktu dalam penanganan page fault
dan sceara otomatis menambah effective access time.
Gambar
. Membutuhkan Page Replacement
Hal
tersebut dapat diselesaikan dengan menggunakan bit modifikasi (modify bit/dirty
bit ). Setiap halaman atau bingkai memiliki bit modifikasi yang sesuai pada
perangkat keras. Bit modifikasi untuk sebuah halaman diatur oleh perangkat
keras pada saat suatu byte atau word dituliskan ke halaman tersebut, yang
menunjukan bahwa halaman tersebut telah dimodifikasi. Waktu suatu halaman
dipilih untuk dipindahkan dari memori fisik ke disk, diperiksa terlebih dahulu
bit modifikasinya di disk. Jika bit modifikasinya ada, maka halaman tersebut
harus ditulis ke disk. Namun, apabila bit modifikasinya belum ada di disk, maka
halaman tersebut belum dimodifikasi karena halaman tersebut masih berada di
memori utama. Oleh karena itu, jika salinan dari halaman tersebut masih
terdapat di disk (belum ditimpa oleh halaman lain) maka penulisan halaman dari
memori utama ke disk tidak diperlukan. Hal ini juga berlaku pada halaman read-only,
yaitu halaman yang tidak dapat dimodifikasi. Sehingga waktu yang diperlukan
untuk penanganan page fault dapat berkurang dengan cukup signifikan
karena berkurangnya waktu M/K dari dan ke disk.
oleh Agung Surjadi
12.5.00007
Gambar
. Page Replacement
Rangkuman
Memori
virtual adalah teknik yang memisahkan antara alamat memori logis dengan alamat
memori fisik. Hal tersebut berguna agar pengguna (programmer) tidak
perlu menentukan alamat fisik dari program yang dijalankan. Memori vitual
memungkinkan beberapa proses berjalan dengan alamat memori fisik yang terbatas.
Teknik permintaan halaman (demand paging) digunakan untuk
mengimplementasikan konsep memori virtual. Jika halaman yang diminta tidak
terdapat pada memori utama, maka akan terjadi page fault. Page fault
ini dapat ditangani dengan beberapa tahapan. Dengan adanya page fault
ini, maka kinerja demand paging dapat dihitung berdasarkan memory
access time dan page fault time (waktu yang dibutuhkan dalam
penanganan page fault). Kinerja demand paging ini biasa disebut
dengan effective access time.
Pada
pembuatan suatu proses baru (proses anak), maka baik proses induk maupun proses
anak dapat mengakses suatu halaman yang sama tanda perlu membuat salinannya
terlebih dahulu, yaitu dengan teknik copy-on-write. Jika proses anak
hendak memodifikasi halaman tersebut, maka baru akan dibuatkan salinan dari
halaman tersebut untuk kemudian dimodifikasi oleh proses anak. Halaman yang
disalin tersebut dinamakan halaman copy-on-write .
Jika
ada suatu halaman diminta/dibutuhkan oleh suatu proses dan ternyata halaman
tersebut terdapat di disk, maka halaman tersebut akan dipindahkan ke memori
utama. Namun, jika di memori utama tidak lagi terdapat bingkai yang kosong (free
frame) untuk ditempati oleh halaman tersebut, maka akan terjadi penggantian
halaman (page replacement) dengan memilih suatu bingkai pada memori dan
menggantikan isinya dengan halaman tersebut. Pada pemilihan suatu bingkai ini,
dibutuhkan suatu algoritma penggantian halaman.
.
Pendahuluan
Ganti
halaman dilakukan apabila terjadi page fault. Page fault bukan
suatu jenis error yang fatal, page fault terjadi apabila ada
halaman yang ingin diakses tetapi halaman tersebut tidak terdapat di dalam
memori utama. Page fault pasti terjadi minimal satu kali saat pertama
kali halaman itu ingin diakses.
Prinsip
ganti halaman adalah sebagai berikut:
- Proses meminta halaman tertentu.
- Jika halaman berada di memori, tidak dilakukan ganti halaman.
- Jika halaman tidak berada di memori, maka:
- Jika ada frame kosong, maka halaman itu di-load ke dalam frame yang kosong tersebut.
- Jika tidak ada frame yang kosong, maka pilih halaman yang akan di-swap dengan menggunakan algoritma ganti halaman.
- Update tabel halaman dan table memori.
- Restart proses.
oleh Aditya Anwar Ibrahim
12.5.00109
Gambar.
Ilustrasi Swapping
Semakin
banyak dilakukan swap, semakin sibuk pula CPU mengurus hal ini. Bila
berkelanjutan, maka akan terjadi thrashing. Thrashing adalah
keadaan di mana banyak terjadi page fault, sehingga mengakibatkan
utilisasi CPU menurun drastis karena lebih sibuk mengurusi pergantian halaman
daripada mengurusi proses.
Untuk
menghindari hal ini, diperlukan pemilihan algoritma ganti halaman yang baik.
Kriteria algoritma yang baik adalah:
- Menyebabkan page fault rate yang rendah.
- Tidak menyebabkan thrashing .
- Tidak terlalu sulit untuk diimplementasikan.
Pada
umumnya, semakin besar memori, semakin banyak pula jumlah frame-nya.
Semakin banyak frame, semakin banyak pula jumlah halaman yang bisa masuk
di memori, sehingga page fault rate menurun.
SegmentasiSegmentasi adalah skema manajemen memori yang memungkinkan user untuk melihat memori tersebut. Ruang alamat logika adalah kumpulan segmen. Setiap segmen mempunyai nama dan panjang. Spesifikasi alamat berupa nama segmen dan offset. Segment diberi nomor dan disebut dengan nomor segmen (bukan nama segmen) atau segment number. Segmen dibentuk secara otomatis oleh compiler.
Sebuah program adalah kumpulan segmen. Suatu segmen adalah unit logika seperti program utama, prosedur, fungsi, metode, obyek, variabel lokal, variabel global, blok umum, stack, tabel simbol, array dan lain-lain. Pandangan user terhadap sistem segmentasi dapat dilihat pada Gambar
Arsitektur Segmentasi
Alamat logika terdiri dari dua bagian yaitu nomor segmen (s) dan offset (d) yang dituliskan dengan
(nomor segmen, offset)
Pemetaan alamat logika ke alamat fisik menggunakan tabel segmen (segment table), terdiri dari
• Segmen basis (base) berisi alamat fisik awal
• Segmen limit merupakan panjang segmen
Seperti tabel page, tabel segmen dapat berupa register atau memori berkecepatan tinggi. Pada program yang berisi sejumlah segmen yang besar, maka harus menyimpan tabel page di memori.
• Segment-table base register (STBR) digunakan untuk menyimpan alamat yang menunjuk ke segment table.
• Segment-table length register (STLR) digunakan untuk menyimpan nilai jumlah segmen yang digunakan program.
• Untuk alamat logika (s, d), pertama diperiksa apakah segment number s legal (s < STLR), kemudian tambahkan segment number ke STBR, alamat hasil (STBR + s) ke memori dari segment table. Perangkat keras yang digunakan pada sistem segmentasi dapat dilihat pada Gambar 7-21. Pemetaan dari alamat logika ke alamat fisik membutuhkan 2 acuan memori untuk setiap alamat logika. Hal ini akan menurunkan kecepatan sistem dengan faktor 2. Solusi standard yang digunakan adalah dengan cache (atau associative register) untuk menyimpan entri tabel segmen yang sering digunakan. Pemetaan alamat logika ke alamat fisik dengan menggunakan tabel segmen dapat dilihat pada Gambar 7-22. Misalnya alamat logika dengan nomor segment 0 offset 88 akan dipetakan ke alamat fisik 1400 + 88 = 1488 karena offset < limit (88 < 1000). Alamat logika dengan nomor segment 1 offset 412 akan terjadi error karena offset > limit (412 > 400). Alamat logika dengan nomor segment 2 offset 320 akan dipetakan ke alamat fisik 4300 + 320 =
4620 karena offset < limit (320 < 400).
oleh Roddy Yoto Sumaryo
12.5.00080
• Segmentation Registers
Logical address terdiri atas dua bagian : segment identifier dan sebuah offset yang menunjukkan alamat yang bersangkutan pada segment. Segment identifier adalah sebuah 16-bit field yang disebut segment selector. Untuk mempermudah memperoleh segment selectors dengan cepat, prosesor menyediakan segmentation register yang tujuannya hanya untuk memegang segment selectors. Ada enam segmentation register : cs, ss, ds, es, fs, dan gs.
• Segment Descriptor
Setiap segment direpresentasikan dengan 8-byte segment descriptor yang menggambarkan karakteristik segment. Segment descriptor disimpan pada Global Descriptor Table(GDT) atau pada Local Descriptor Table(LDT).
• Segment SelectorsSetiap segment direpresentasikan dengan 8-byte segment descriptor yang menggambarkan karakteristik segment. Segment descriptor disimpan pada Global Descriptor Table(GDT) atau pada Local Descriptor Table(LDT).
Untuk mempercepat pengubahan dari logical address ke linear address, Intel menyediakan nonprogrammable register tambahan untuk setiap dari 6 programmable segmentation register. Setiap segment selector di-load pada sebuah segmentation register, segment descriptor yang bersangkutan di-load dari memori ke nonprogrammable CPU register yang bersesuaian. Jadi, pengubahan dari logical address ke linear address dilakukan tanpa mengakses GDT atau LDT yang berada pada memori utama. Akses ke GDT atau LDT hanya diperlukan bila isi dari segmentation register berubah. Setiap segment selector mengandung hal-hal berikut :
- Sebuah index 13-bit yang menunjukkan masukan segment descriptor yang berhubungan yang terdapat pada GDT atau LDT.
- Sebuah TI (tabe indicator) flag yang menunjukkan apakah segment descriptor terdapat pada GDt (Ti = 0) atau pada LDT (TI = 1).
- Sebuah RPl (requestor privilege level) 2-bit field, yang membuat current privilege level cPu tepat saat segment selector yang berhubungan di-load ke register cs.
• Segmentation Unit
Segmentatipn Unit melakukan operasi-operasi berikut :
- Memeriksa TI dari segment selector, untuk memutuskan apakah descriptor table berada pada segment descriptor.
- Menghitung alamat dari segment descriptor dari index filed segment selector.
- Menambahkan ke Base field dari segment descriptor, offset dari logical address, sehingga diperoleh linear address.
oleh Aditya Prasaja
12.5.00110
Sumber
:
[WEBWiki2007]
Wikipedia. 2007. Page Replacement Algortihm
( tanggal akses : 20 Juni 2013 )
( tanggal akses : 20 Juni 2013 )
( tanggal akses : 20 Juni 2013 )
Dr. Bambang Hariyanto. 2006. Sistem Operasi. Revisi Keempat.
Informatika.
( tanggal akses : 20 Juni 2013 )
http://sofwan21.wordpress.com/2012/12/17/fragmentasi-komputer/
( tanggal akses : 20 Juni 2013 )
Ketua : Adik Joko Supriyanto (
12.5.00108 )
Anggota kelompok :
1. Agung Surjadi ( 12.5.00007 )
2. Roddy Yoto Sumaryo ( 12.5.00080 )
3. Aditya Anwar Ibrahim ( 12.5.00109 )
4. Aditya Prasaja ( 12.5.00110 )