Kamis, 20 Juni 2013

SISTEM PAGING DAN SEGMENTASI




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.
  1. Mencari lokasi dari halaman yang dicari di disk.
  2. Mencari bingkai yang kosong di memori fisik:
    1. Jika ada bingkai yang kosong, maka gunakan bingkai tersebut.
    2. Jika tidak ada bingkai yang kosong, gunakan algoritma ganti halaman untuk memilih bingkai “korban”
    3. Pindahkan bingkai “korban” tersebut ke disk dan sesuaikan tabel halaman.
  3. Masukkan halaman yang berasal dari disk tersebut ke dalam bingkai yang baru dikosongkan tersebut. Sesuaikan tabel halaman.
  4. 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:
  1. Proses meminta halaman tertentu.
  2. Jika halaman berada di memori, tidak dilakukan ganti halaman.
  3. Jika halaman tidak berada di memori, maka:
    1. Jika ada frame kosong, maka halaman itu di-load ke dalam frame yang kosong tersebut.
    2. Jika tidak ada frame yang kosong, maka pilih halaman yang akan di-swap dengan menggunakan algoritma ganti halaman.
  4. Update tabel halaman dan table memori.
  5. 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.
Segmentasi

Konsep segmentasi adalah user atau programmer tidak memikirkan sejumlah rutin program yang dipetakan ke main memori sebagai array linier dalam byte tetapi memori dilihat sebagai kumpulan segmen dengan ukuran berbeda-beda, tidak perlu berurutan diantara segment tersebut.
Segmentasi 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


 


 



Dimulai dengan model 80386, microprocessor Intel menampilkan translasi alamat dengan 2 cara berbeda, yang disebut real mode dan protected mode. Real mode untuk memelihara kompatibilitas prosesor dengan model yang lebih lama dan untuk OS agar dapat melakukan bootstrap.
• 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 Selectors
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 )