Rabu, 19 Juni 2013

Sistem Paging dan Sistem Segmentasi

PendahuluanYang dimaksud dengan pemberian halaman adalah suatu metoda yang memungkinkan suatu alamat fisik memori yang tersedia dapat tidak berurutan. Pemberian halaman bisa menjadi solusi untuk pemecahan masalah luar. Untuk bisa mengimplementasikan solusi ini adalah melalui pengunaan dari skema pemberian halaman. Dengan pemberian halaman bisa mencegah masalah penting dari pengepasan besar ukuran memori yang bervariasi kedalam penyimpanan cadangan. Ketika beberapa pecahan kode dari data yang tersisa di memori utama perlu untuk ditukar keluar, harus ditemukan ruang untuk penyimpanan cadangan. Masalah pemecahan kode didiskusikan dengan kaitan bahwa pengaksesannya lebih lambat. Biasanya bagian yang menunjang untuk pemberian halaman telah ditangani oleh perangkat keras. Bagaimana pun, desain yang ada baru-baru ini telah mengimplementasikan dengan menggabungkan perangkat keras dan sistem operasi, terutama pada prosesormikro 64 bit .
Metoda Dasar
Jadi metoda dasar yang digunakan adalah dengan memecah memori fisik menjadi blok-blok berukuran tetap yang akan disebut sebagai frame. selanjutnya memori logis juga dipecah menjadi blok-blok dengan ukuran yang sama disebut sebagai halaman. Selanjutnya kita membuat suatu tabel halaman yang akan menterjemahkan memori logis kita kedalam memori fisik. Jika suatu proses ingin dieksekusi maka memori logis akan melihat dimanakah dia akan ditempatkan di memori fisik dengan melihat kedalam tabel halamannya. Untuk jelasnya bisa dilihat pada Gambar 30.1, “Penerjemahan Halaman”. Kita lihat bahwa setiap alamat yang dihasilkan oleh CPU dibagi-bagi menjadi dua bagian yaitu sebuah nomor halaman (p)
dan sebuah offset halaman (d). Nomor halaman ini akan digunakan sebagai indeks untuk tabel halaman. Tabel halaman mengandung basis alamat dari tiap-tiap halaman di memori fisik. Basis ini dikombinasikan dengan offset halaman untuk menentukan alamat memori fisik yang dikirim ke unit memori.
Gambar 30.1. Penerjemahan Halaman
 
 
Memori fisik dipecah menjadi beberapa blok berukuran yang tetap yang disebut frame (bingkai), sedangkan memori logis juga dipecah dengan ukuran yang sama yang disebut halaman. Suatu alamat memori yang digenerate oleh CPU terdiri dari 2 bagian yaitu halaman dan offset. Halaman berfungsi sebagai indeks dari suatu halaman table. Isi dari indeks yang ditunjuk pada halaman table (frame) digabungkan dengan offset maka akan membentuk suatu alamat asli dari suatu data pada memori fisik. Offset sendiri berfungsi sebagai penunjuk dari suatu blok data yang berada dalam suatu frame.
Dukungan Perangkat Keras
Setiap sistem operasi mempunyai caranya tersendiri untuk menyimpan tabel halaman. Biasanya sistem operasi mengalokasikan sebuah tabel halaman untuk setiap proses. sebuah penunjuk ke tabel halaman disimpan dengan nilai register yang lain didalam blok pengontrol proses. Akan tetapi penggunaannya menjadi tidak praktis karena ternyata tabel halaman disimpan pada memori utama yang tentu saja kecepatannya jauh lebih lambat dari dari register. Translation Lookaside Buffers (TLBs) dibuat untuk mengatasi masalah tersebut. TLBs adalah suatu asosiatif memori berkecepatan tinggi yang berfungsi hampir sama seperti cache memori tapi terjadi pada tabel halaman, TLBs menyimpan sebagian alamat-alamat data dari suatu proses yang berada pada tabel halaman yang sedang digunakan atau sering digunakan. TLBs biasanya terletak pada
Memori Manajement Unit (MMU). Salah satu feature dari TLBs adalah mampu membuat proteksi suatu alamat memori. Feature ini dinamakan address-space identifiers (ASIDs). ASIDs ini membuat suatu alamat memori hanya ada 1 proses yang bisa mengaksesnya. Contohnya adalah JVM. Pada saat program Java berjalan, Java membuat alokasi alamat memori untuk JVM dan yang bisa mengakses alamat tersebut hanya
program Java yang sedang berjalan itu saja. Suatu keadaan dimana pencarian alamat memori berhasil ditemukan pada TLBs disebut TLB hit. Sedangkan sebaliknya jika terjadi pada tabel halaman (dalam hal ini TLB gagal) disebut TLB miss. Effective Address Time adalah waktu yang dibutuhkan untuk mengambil data dalam memori fisik dengan persentase TLB hit (hit ratio) dan TLB miss (miss ratio). Persentasi dari beberapa kali TLB hit adalah disebut hit ratio. hit ratio 80% berarti menemukan nomor halaman yang ingin kita cari didalam TLB sebesar 80%. Jika waktu akses ke TLB memakan waktu 20 nanodetik dan akses ke memori memakan waktu sebesar 100 nanodetik maka total waktu kita memetakan memori adalah 120 nanodetik jika TLB hit. dan jika TLB miss maka total waktunya adalah 220 nanodetik. 
Jadi untuk mendapatkan waktu akses memori yang efektif maka kita harus membagi-bagi tiap kasus berdasarkan kemungkinannya:
Effective address time= hit ratio * (time search TLB + time access memori) + miss ratio * (time search TLB + time access tabel halaman + time access memori)

Suatu mesin yang efektif apabila memiliki effective address time yang kecil. Banyak cara yang telah dilakukan untuk optimal, salah satunya dengan mereduksi TLBs miss. Jadi sistem operasi memiliki intuisi untuk memprediksi halaman selanjutnya yang akan digunakan kemudian me-loadnya ke dalam TLB.
Proteksi Memori
Berbeda dengan poteksi memori pada bab sebelumnya, yang menggunakan Limit Register dan Relokasi Register, proteksi memori di lingkungan halaman dikerjakan oleh bit-bit proteksi yang berhubungan dengan tiap frame. Biasanya bit-bit ini disimpan didalam sebuah tabel halaman. Satu bit bisa didefinisikan sebagai baca-tulis atau hanya baca saja suatu halaman. Setiap referensi ke memori menggunakan tabel halaman untuk menemukan nomor frame yang benar. Pada saat alamat fisik sedang dihitung, bit proteksi bisa dicek untuk memastikan tidak ada kegiatan tulis-menulis ke Dukungan Perangkat Keras dalam 'read-only halaman'. Hal ini diperlukan untuk menghindari tejadinya 'memori-protection violation', suatu keadaan dimana terjadi suatu percobaan menulis di 'halaman read-only'. Ketika bit proteksi bernilai 'valid', berarti halaman yang dicari ada di dalam ruang alamat logika. Yang artinya halaman tersebut dapat diakses. Jika bit proteksi bernilai 'invalid', artinya halaman yang dimaksud tidak berada dalam ruang alamat logika. Sehingga halaman tersebut tidak dapat di akses.

Untung/Rugi Pemberian Halaman
• Jika kita membuat ukuran dari masing-masing halaman menjadi lebih besar.
• Keuntungan. Akses memori akan relatif lebih cepat.
• Kerugian. Kemungkinan terjadinya fragmentasi intern sangat besar.
• Jika kita membuat ukuran dari masing-masing halaman menjadi lebih kecil.
• Keuntungan. Kemungkinan terjadinya internal Framentasi akan menjadi lebih kecil.
• Kerugian. Akses memori akan relatif lebih lambat.

Keuntungan lainnya dari paging adalah, konsep memori virtual bisa diterapkan dengan menuliskan halaman ke disk, dan pembacaan halaman dari disk ketika dibutuhkan. Hal ini dikarenakan jarangnya pengunaan kode-kode dan data suatu program secara keseluruhan pada suatu waktu. Kerugian lainnya dari paging adalah, paging tidak bisa diterapkan untuk beberapa prosesor tua atau kecil (dalam keluarga Intel x86, sebagai contoh, hanya 80386 dan di atasnya yang punya MMU, yang bisa diterapkan paging). Hal ini dikarenakan paging membutuhkan MMU (Memory Management Unit). 
Tabel Halaman
Sebagian besar komputer modern memiliki perangkat keras istimewa yaitu unit manajemen memori (MMU). Unit tersebut berada diantara CPU dan unit memori. Jika CPU ingin mengakses memori (misalnya untuk memanggil suatu instruksi atau memanggil dan menyimpan suatu data), maka CPU mengirimkan alamat memori yang bersangkutan ke MMU, yang akan menerjemahkannya ke alamat lain sebelum melanjutkannya ke unit memori. Alamat yang dihasilkan oleh CPU, setelah adanya pemberian indeks atau aritmatik ragam pengalamatan lainnya disebut alamat logis (virtual address). Sedangkan alamat yang didapatkan fisik membuat sistem operasi lebih mudah pekerjaannya saat mengalokasikan memori. Lebih penting lagi, MMU juga mengizinkan halaman yang tidak sering digunakan bisa disimpan di disk.
           Cara kerjanya adalah sbb:
Tabel yang digunakan oleh MMU mempunyai bit sahih untuk setiap halaman di bagian alamat logis.
Jika bit tersebut di set, maka penterjemahan oleh alamat logis di halaman itu berjalan normal. Akan
tetapi jika dihapus, adanya usaha dari CPU untuk mengakses suatu alamat di halaman tersebut
menghasilkan suatu interupsi yang disebut page fault trap. Sistem operasi telah mempunyai
interrupt handler untuk kesalahan halaman, juga bisa digunakan untuk mengatasi interupsi jenis
yang lain. Handler inilah yang akan bekerja untuk mendapatkan halaman yang diminta ke memori.
 
Untuk lebih jelasnya, saat kesalahan halaman dihasilkan untuk halaman p1, interrupt handler melakukan hal-hal berikut ini:
  • Mencari dimana isi dari halaman p1 disimpan di disk. Sistem operasi menyimpan informasi ini di dalam tabel. Ada kemungkinan bahwa halaman tersebut tidak ada dimana-mana, misalnya pada kasus saat referensi memori adalah bug. Pada kasus tersebut , sistem operasi mengambil beberapa langkah kerja seperti mematikan prosesnya. Dan jika diasumsikan halamannya berada dalam disk:
  • Mencari halaman lain yaitu p2 yang dipetakan ke frame lain f dari alamat fisik yang tidak banyak dipergunakan.
  • Menyalin isi dari frame f keluar dari disk.
  • Menghapus bit sahih dari halaman p2 sehingga sebagian referensi dari halaman p2 akan menyebabkan kesalahan halaman.
  • Menyalin data halaman p1 dari disk ke frame f.
  • Update tabel MMU sehingga halaman p1 dipetakan ke frame f.
  • Kembali dari interupsi dan mengizinkan CPU mengulang instruksi yang menyebabkan interupsi tersebut.
Pada dasarnya MMU terdiri dari tabel halaman yang merupakan sebuah rangkaian array dari Untung/Rugi Pemberian Halaman masukan-masukan (entries) yang mempunyai indeks berupa nomor halaman (p). Setiap masukan terdiri dari flags (contohnya bit sahih dan nomor frame). Alamat fisik dibentuk dengan menggabungkan nomor frame dengan ofset, yaitu bit paling rendah dari alamat logis.
Gambar 30.2. Skema Tabel Halaman Dua tingkat
 

Setiap sistem operasi mempunyai metodanya sendiri untuk menyimpan tabel halaman. Sebagian besar mengalokasikan tabel halaman untuk setiap proses. Penunjuk ke tabel halaman disimpan dengan nilai register yang lain (seperti pencacah instruksi) di blok kontrol proses. Ketika pelaksana dispatcher mengatakan untuk memulai proses, maka harus disimpan kembali register-register pengguna dan mendefinisikan nilai tabel halaman perangkat keras yang benar dari tempat penyimpanan tabel halaman dari pengguna.
Pemberian Halaman Secara Bertingkat
Gambar 30.3. Tabel Halaman secara Bertingkat
 
Hierarchical paging atau pemberian halaman bertingkat merupakan metoda pemberian halaman secara maju (forward mapped paging). Pemberian halaman dengan cara ini menggunakan pembagian tingkat setiap segmen alamat logikal. Setiap segmen menunjukkan indeks dari tabel halaman, kecuali segmen terakhir yang menunjukkan langsung frame pada memori fisik. Segmen terakhir ini biasa disebut offset(D). Dapat disimpulkan bahwa segmen yang terdapat dalam alamat lojik menentukan berapa lapis paging yang digunakan yaitu banyak segmen-1. Selain itu dalam sistem ini setiap tabel halaman memiliki page table lapis kedua yang berbeda. Dengan metoda ini, isi pada indeks tabel halaman pertama akan menunjuk pada tabel halaman kedua yang bersesuaian dengan isi dari tabel halaman pertama tersebut. Sedangkan isi dari page table kedua menunjukkan tempat di mana tabel halaman ketiga bermula, sedang segmen alamat lojik kedua adalah indeks ke-n setelah starting point tabel halaman ketiga dan seterusnya sampai dengan segmen terakhir. Sedangkan segmen terakhir menunjukkan langsung indeks setelah alamat yang ditunjukkan oleh tabel halaman terakhir.
Hierarchical Paging 
 
Kekurangan dari metoda ini adalah borosnya memori karena setiap tabel halaman menunjuk pada page table lainnya yang berbeda. Jika segmen pertama berisi p bit, maka besar tabel halaman pertama sebesar 2 pangkat p. Bila segmen kedua berisi s bit, maka setiap tabel halaman pertama menunjuk pada 2 pangkat s banyaknya ruang pada memori. Sehingga sampai dengan tingkat dua ini ruang yang dibutuhkan untuk paging sudah mencapai 2 pangkat s+p. Dapat dikatakan bahwa
metoda ini sangat tidak cocok untuk diterapkan pada mapping besar seperti 64-bit walaupun dapat saja dilakukan.
Tabel Halaman secara Hashed
Tabel Halaman secara Hashed cukup cocok untuk paging berukuran besar, seperti 64-bit. Karakteristik dari metoda ini adalah digunakannya sebuah fungsi untuk memanipulasi alamat lojik. Selain sebuah fungsi, tabel halaman secara hashed juga menggunakan tabel hash dan juga pointer untuk menangani linked list. Hasil dari hashing akan dipetakan pada hash tabel halaman yang berisi linked list. Penggunaan linked list adalah untuk pengacakan data yang dikarenakan besar hash table yang sangat terbatas. Pada metoda ini offset masih sangat berperan untuk menunjukkan alamat fisik, yaitu dengan meng-concate isi dari linked list dengan offset tersebut. Sistem ini dapat dikembangkan menjadi Clustered Tabel Halaman yang lebih acak dalam pengalamatan dalam memori fisik.
Hashed Page Tabels
 
Tabel Halaman secara Inverted
Metoda ini berbeda dengan metode lainnya. Pada Tabel Halaman Inverted, proses pemberian halaman dipusatkan pada proses yang sedang ditangani. Alamat lojik yang menggunakan inverted tabel halaman merepresentasikan proses yang dimiliki. Sehingga tabel halaman pada metoda ini sama besar atau lebih dengan jumlah proses yang dapat ditangani dalam setiap kesempatan. Bila diasumsikan sistem dapat menangani n buah proses maka paling tidak tabel halaman juga sebesar n, sehingga setidaknya satu proses memiliki satu halaman yang bersesuaian dengan page tersebut. Metoda inverted ini bertumpu pada proses pencarian identitas dari proses di dalam tabel halaman tersebut. Jika proses sudah dapat ditemukan di dalam tabel halaman maka letak indeks di tabel halaman yang dikirimkan dan dikonketenasi dengan offset sehingga membentuk alamat fisik yang baru. Karena Inverted paging membatasi diri pada banyaknya proses maka jika dibandingkan dengan hierarchical paging metoda ini membutuhkan memori yang lebih sedikit.
Gambar 30.6. Tabel Halaman secara Inverted
 
 
Kekurangan pertama dari inverted paging ini disebabkan oleh fasilitas searching yang dimilikinya. Memori fisik sendiri tersusun secara berurutan di dalam tabel halaman, namun proses yang ingin dicari berasal dari alamat virtual sehingga ada kemungkinan dilakukan pencarian seluruh tabel halaman sampai akhirnya halaman tersebut ditemukan. Hal ini menyebabkan ketidakstabilan metoda ini sendiri. Kekurangan lain dari inverted tabel halaman adalah sulitnya menerapkan memori berbagi (shared). Memori sharing adalah sebuah cara dimana proses yang berbeda dapat mengakses suatu alamat di memori yang sama. Ini bertentangan dengan konsep dari inverted tabel halaman sendiri yaitu, setiap proses memiliki satu atau lebih frame di memori, dengan pasangan proses dan frame unik. Unik dalam arti beberapa frame hanya dapat diakses oleh satu buah proses saja. Karena perbedaan konsep yang sedemikian jauh tersebut maka memori sharing hampir mustahil diterapkan dengan inverted tabel halaman.
Gambar 30.7. Inverted Page Tables
 
 
Keuntungan lain dari pemberian halaman adalah kemungkinannya untuk berbagi kode yang sama. Pertimbangan ini terutama sekali penting pada lingkungan yang berbagi waktu. Pertimbangkan  sebuah sistem yang mendukung 40 pengguna, yang masing-masing menjalankan aplikasi pengedit teks. Jika editor teks tadi terdiri atas 150K kode dan 50K ruang data, kita akan membutuhkan 8000K untuk mendukung 40 pengguna. Jika kodenya dimasukan ulang, bagaimana pun juga dapat dibagi-bagi, seperti pada gambar. Disini kita lihat bahwa tiga halaman editor (masing-masing berukuran 50K; halaman ukuran besar digunakan untuk menyederhanakan gambar) sedang dibagi-bagi diantara tiga proses. Masing-masing proses mempunyai halaman datanya sendiri. Terlihat jelas selisih penggunaan memori sesudah dan sebelum berbagi halaman adalah sebesar 5850MB. Bingkai yang berisi editor diakses oleh banyak pengguna. Jadi hanya ada satu salinan editor yang ditaruh di memori. Tiap tabel halaman dari tiap proses mengakses editor yang sama, tapi halaman data dari tiap proses tetap ditaruh di frame yang berbeda. Inilah yang dimaksud dengan berbagi halaman.
Gambar 30.9. Share Page
 
 
Rangkuman
        Paging adalah suatu metoda yang memungkinkan suatu alamat fisik memori yang tersedia dapat tidak berurutan. Prinsipnya adalah memecah memori fisik dan memori logika menjadi blok-blok dengan ukuran sama (disebut page). Setelah itu kita membuat page table yang akan menerjemahkan memori logika menjadi memori fisik dengan perantara Memory Management Unit (MMU), dan pengeksekusian proses akan mencari memori berdasarkan tabel tersebut. Paging atau pemberian halaman adalah salah satu teknik manajemen memori, dimana suatu memori komputer dibagi menjadi bagian-bagian kecil, yang disebut sebagai frame. Setiap sistem operasi mengimplementasikan paging dengan caranya masing-masing. Paging menjamin keamanan data di memori saat suatu proses sedang berjalan, dan dapat mempercepat akses ke memori, serta menghemat pemakaian memori. Untuk mencapai tujuan tersebut terdapat beberapa metoda pemberian hal aman seperti Hierarchical Paging, Inverted Halaman tables, dan Hashed tabel  halaman, yang masing-masing memiliki kelebihan maupun kekurangannya.
Rujukan
[Silberschatz2002] Abraham Silberschatz, Peter Galvin, dan Greg Gagne. 2002. Applied Operating Systems. Sixth Edition. John Wiley & Sons.
[Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley & Sons.
[Tanenbaum1997] Andrew S Tanenbaum dan Albert S Woodhull. 1997. Operating Systems Design and Implementation. Second Edition. Prentice-Hall.
[WEBAmirSch2000] YairTheo AmirSchlossnagle. 2000. Operating Systems 00.418: Memory Management – http://www.cs.jhu.edu/ ~yairamir/ cs418/ os5/ . Diakses 29 Mei 2006.
[WEBFunkhouser2002] Thomas Funkhouser. 2002. Computer Science 217 Introduction to Programming Systems: Memory Paging – http://www.cs.princeton.edu/ courses/ archive /
spring02/ cs217/ lectures/ paging.pdf . Diakses 13 Juni 2013
[WEBGottlieb2000] Allan Gottlieb. 2000. Operating Systems: Page tables – http://allan.ultra.nyu.edu/ ~gottlieb/ courses/ 1999-00-spring/ os/ lecture-11.html . Diakses 13 Juni 2013
[WEBSolomon2004] Marvin Solomon. 2004. CS 537 Introduction to Operating Systems: Lecture
Notes Part 7 – http://www.cs.wisc.edu/ ~solomon/ cs537/ paging.html . Diakses 13 Juni 2013