Pemberian Halaman
Bab 3. Pemberian Halaman
3.1. Pendahuluan
Pada bab-bab sebelumnya telah dijelaskan bahwa memori harus digunakan dengan baik sehingga dapat memuat proses dalam satu waktu. Dalam implementasinya telah dijelaskan bahwa terdapat dua macam alamat memori yaitu alamat logika dan alamat fisik. Alamat logika (logical address) adalah alamat yang dihasilkan oleh CPU atau sering disebut virtual address. Sedangkan alamat fisik (physical address) adalah alamat yang terdapat di memori. Salah satu cara pengalokasian memori adalah dengan contiguous memory allocation di mana alamat yang diberikan kepada proses berurutan dari kecil ke besar. Selanjutnya sangat mungkin terjadi fragmentasi, yaitu munculnya lubang-lubang yang tidak cukup besar untuk menampung permintaan dari proses. Fragmentasi terdiri dari 2 macam, yaitu fragmentasi intern dan fragmentasi ekstern. Fragmentasi ekstern terjadi apabila jumlah seluruh memori kosong yang tersedia memang mencukupi untuk menampung permintaan tempat dari proses, tetapi letaknya tidak berkesinambungan atau terpecah menjadi beberapa bagian kecil sehingga proses tidak dapat masuk. Sedangkan fragmentasi intern terjadi apabila jumlah memori yang diberikan oleh penjadualan CPU lebih besar daripada yang diminta proses dan fragmentasi ini tidak dapat dihindari.
Salah satu solusi untuk mencegah fragmentasi ekstern adalah dengan paging. Paging adalah suatu metode yang memungkinkan suatu alamat fisik memori yang tersedia dapat tidak berurutan (non contiguous).
3.2. Metode Dasar
Metode dasar dari paging adalah dengan memecah memori fisik menjadi blok-blok yang berukuran tertentu yang disebut dengan frame dan memecah memori logika menjadi blok-blok yang berukuran sama dengan frame yang disebut dengan page. Selanjutnya sebuah page table akan menerjemahkan alamat logika ke alamat fisik.
Alamat logika terdiri dari 2 bagian yaitu nomor page dan nomor offset. Bila digunakan ruang alamat logika 2 pangkat m dan ukuran page 2 pangkat n bytes, maka m-n bit paling kiri menunjukkan nomor page dan n bit paling kanan menunjukkan offset.
Gambar 3.1. Translasi Alamat Pada Sistem Paging
Dukungan Perangkat Keras
Gambar 3.2. Contoh Translasi Alamat Pada Sistem Paging
Lihat gambar di atas. Bila kita mempunyai ruang alamat logika 16 byte (2 pangkat 4), dan ukuran page -nya 4 byte (2 pangkat 2), maka 2 bit (4-2 dari m-n) paling kiri menunjukkan nomor page dan 2 (didapat dari n) bit paling kanan menunjukkan nomor offset. Contohnya alamat logika 0000, maka bit 00 sebelah kiri menunjukkan bahwa nomor pagenya adalah 0 , sedangkan 00 sebelah kanan menunjukkan bahwa nomor offsetnya adalah 0000 (bilangan biner). Dilihat di page table bahwa page
0 dipetakan ke frame 5, berarti alamat logika 0000 dipetakan ke frame 5 offset 0000. Dan alamat logika 0000 menyimpan data dari frame 5 offset 0 yaitu 'U'. Begitu pula alamat logika 0110 berarti nomor page nya adalah 01 atau 1, dan nomor offsetnya 0010. Sehingga dipetakan ke frame 6 offset 0010 dan menyimpan data AA.
Fragmentasi intern masih mungkin terjadi pada sistem paging. Contohnya adalah bila page berukuran 2KB (2048 byte), maka proses berukuran 20500 byte membutuhkan 10 page dan tambahan 20 byte, berarti diperlukan 11 frame sehingga terjadi fragmentasi intern sebesar 2028 byte (2048-20) dan worst case yang terjadi adalah fragmentasi intern sebesar ukuran page dikurang 1 byte.
3.3. Dukungan Perangkat Keras
Bila page table berukuran kecil (misal 256 entri), maka page table dapat diimplementasikan dengan menggunakan register. Namun pada masa sekarang ini page table memiliki ukuran yang terlalu besar (misal 1 juta entri) untuk diterapkan di register sehingga page table harus diletakkan di memori. Untuk itu digunakan Page Table Base Register (PTBR) dan Page Table Length Register (PTLR) yang menunjukkan ukuran page table. Masalah untuk implementasi ini adalah dibutuhkan dua kali akses ke memori pada program, yaitu untuk page table dan untuk data/instruksi. Untuk mempercepat
Register asosiatif
waktu akses ini, digunakan cache yang terdiri dari sekumpulan register asosiatif atau disebut TLB (Translation Look-aside Buffer) yang merupakan memori berkecepatan tinggi.
Register asosiatif
Setiap register asosiatif menyimpan pasangan nomor page dan nomor frame (alamat awal). Input untuk register asosiatif akan dibandingkan dengan data pada register asosiatif. Bila input ditemukan maka nomor frame yang sesuai akan dihasilkan, kejadian ini disebut TLB hit. Sedangkan TLB miss terjadi bila input tidak ditemukan, maka input tersebut akan dicari pada memori (yang lebih lambat dari cache ).
Waktu Akses Memori Efektif / Effective Access Time (EAT)
Peluang bahwa nomor page akan ditemukan dalam register disebut Hit Ratio. Hit ratio 80% berarti menemukan nomor page yang ingin kita cari dalam TLB sebesar 80%. Jika untuk mencari TLB memakan waktu 20 nanodetik dan 100 nanodetik untuk akses ke memori, maka total waktunya adalah 120 nanodetik bila nomor page ada di TLB. Jika kita gagal mendapat nomor page di TLB (20 nanodetik), maka kita harus mengakses memori untuk page table dan nomor frame (100 nanodetik) dan mengakses byte yang diharapkan di memori (100 nanodetik), sehingga totalnya 220 nanodetik. Untuk mendapatkan waktu akses memori efektif, kita mengalikan tiap kasus dengan peluangnya:
waktu akses efektif = (0,80 x 120) + (0,20 x 220) = 140 nanodetik
3.4. Proteksi
Proteksi memori dapat diterapkan pada sistem paging dengan meletakkan bit proteksi pada setiap frame . Bit proteksi umumnya disimpan pada page table. Sebuah bit proteksi dapat mendefinisikan apakah page bersifat read-only atau read-write. Untuk memberikan proteksi yang lebih baik, dapat pula ditambahkan bit lainnya, misalnya untuk sifat execute-only.
Bit lainnya yang umumnya terdapat di setiap entri pada page table adalah bit valid-invalid . Bit valid menyatakan bahwa page terletak di dalam ruang alamat logika proses. Bit invalid menyatakan bahwa page terletak di luar ruang alamat logika proses (dapat dilihat contohnya pada Gambar 3 bahwa page
6 dan 7 berada di luar ruang alamat logika sehingga diberikan bit invalid). Pelanggaran terhadap bit proteksi menyebabkan trap ke sistem operasi.
Tabel Halaman Bertingkat
Gambar 3.3. Bit Valid (v) dan Invalid (i) pada Page Table
3.5. Tabel Halaman Bertingkat
Hierarchical paging atau pemberian halaman secara bertingkat merupakan sebuah metode pemberian halaman dengan cara membagi sebuah page table menjadi beberapa page table yang berukuran lebih kecil. Metode ini merupakan solusi dari permasalahan alokasi page table berukuran sangat besar pada main memory yang umumnya dihadapi pada sistem komputer modern yang memiliki ruang alamat logika yang besar sekali (mencapai 2 pangkat 32 sampai 2 pangkat 64).
Konsep dasar metode ini yaitu menggunakan pembagian tingkat setiap segmen alamat logika. Setiap segmen menunjukkan indeks dari sebuah page table, kecuali segmen terakhir yang menunjuk langsung ke frame pada memori fisik. Segmen terakhir ini disebut offset (d). Dapat disimpulkan bahwa segmen yang terdapat pada alamat logika menentukan berapa level paging yang digunakan yaitu banyak segmen dikurang 1.
Tabel Halaman Bertingkat
Gambar 3.4. Translasi Alamat pada Two-Level Paging
Dengan metode ini, isi pada indeks page table pertama akan menunjuk pada page table kedua yang indeksnya bersesuaian dengan isi dari page table pertama tersebut. Sedangkan isi dari page table kedua menunjukkan tempat dimana page table ketiga bermula, sedang segmen alamat logika kedua adalah indeks ke-n setelah starting point page table ketiga dan seterusnya sampai dengan segmen terakhir.
Sebagai contoh, pada suatu sistem komputer 32 bit dengan ukuran page 4 KB, alamat logika dibagi ke dalam nomor page yang terdiri dari 20 bit dan page offset-nya 12 bit. Karena page table-nya di- paging -kan lagi, maka nomor page-nya dibagi lagi menjadi 10 bit nomor page dan 10 bit page offset, sehingga dapat digambarkan sebagai berikut:
Gambar 3.5. Contoh Two-level paging
Metode Hierarchical paging ini memang dapat menghemat ruang memori yang dibutuhkan dalam pembuatan page table-nya sendiri, namun waktu akses yang diperlukan menjadi lebih besar karena harus melakukan akses berkali-kali untuk mendapatkan alamat fisik yang sebenarnya.
Tabel Halaman Dengan Hash
3.6. Tabel Halaman Dengan Hash
Metode ini umumnya digunakan untuk menangani masalah ruang alamat logika yang besarnya mencapai 64 bit karena struktur page table pada metode ini bisa menghemat ruang memori dalam jumlah yang cukup besar. Hashed page table menggunakan tabel hash sebagai page table-nya dengan ukuran yang terbatas untuk menghemat ruang memori dan sebuah hash function untuk mengalokasikan alamat virtual pada page table tersebut. Setiap entri/blok pada page table berisi linked list yang menghubungkan elemen-elemen yang di- hash ke lokasi yang sama. Tiap elemen tersebut terdiri dari 3 field, yaitu virtual page number, nomor frame dimana alamat virtual tersebut dipetakan, dan pointer yang menunjukkan elemen berikutnya dalam linked list. Fungsi linked list disini adalah untuk mengatasi collision yang terjadi pada saat pengalokasian alamat virtual ke hash table yang ukurannya sangat terbatas.
Mekanisme paging pada metode ini yaitu:
1. Alamat logika dipetakan ke suatu lokasi/entri di page table dengan menggunakan hash
function.
2. Page number tersebut kemudian di simpan sebagai field pertama pada sebuah elemen dalam
entri yang teralokasikan.
3. Page number tersebut lalu dipasangkan dengan frame number yang available yang disimpan
pada field kedua di elemen yang sama .
4. Untuk mendapatkan lokasi yang sebenarnya pada memori fisik, frame number pada field
kedua di- concate dengan offset .
Gambar 3.6. Hashed Page Table
3.7. Rangkuman
Paging adalah suatu metode yang mengizinkan alamat logika proses untuk dipetakan ke alamat fisik memori yang tidak berurutan, yaitu sebagai solusi dari masalah fragmentasi ekstern. Metode dasar dari paging adalah dengan memecah memori fisik menjadi blok-blok yang berukuran tertentu (frame) dan memecah memori logika menjadi blok-blok yang berukuran sama (page). Penerjemahan alamat virtual ke alamat fisik dilakukan oleh page table melalui perantara Memory Management Unit (MMU). Paging menjamin keamanan data di memori saat suatu proses sedang berjalan. Proteksi memori dapat diterapkan pada sistem paging dengan meletakkan bit proteksi pada setiap frame.
Rangkuman
Setiap sistem operasi mengimplementasikan paging dengan caranya masing-masing. Hierarchical paging dan hashed page table merupakan metode yang umum digunakan karena bisa menghemat ruang memori yang dibutuhkan.
Rujukan
[Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley & Sons.
[FitriSari2005] Riri Fitri Sari dan Yansen Darmaputra. 2005. Sistem Operasi Modern. Penerbit Andi.