Sistem Paging ( Pemberian Halaman )
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
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.
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)
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.
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.
• 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.
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.
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

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
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
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.
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

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
Berbagi Halaman (Share)
Gambar 30.8. Berbagi Halaman
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
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.
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
[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
Segmentasi
Pendahuluan
Aspek penting dari memori menajemen yang menjadi tak terhindarkan dengan paging adalah memori dari sudut pandang pengguna dan memori fisk yang sebenarnya. Sudut pandang pengguna terhadap memori tidak sama dengan memori fisik. sudut pandang pengguna ini dipetakan pada memori fisik, dimana dengan pemetaan tersebut mengizinkan perbedaan antara memori lojik dengan memori fisik.
Pernahkah pengguna mebayangkan sebuah memori sebagai sebuah array linier dari suatu byte, beberapanya terdiri dari instruksi dan sebagian yang lain berisi data? Sebagian besar orang akan berkata TIDAK. User lebih suka memandang sebuah memori sebagai sekumpulan variabel-variabel yang berada dalam segment-segmen dalam ukuran tertentu. Jika kita membayangkan sebuah program yang terdiri dari main program, sub routin, fungsi dan modul-modul. Bisa juga terdapat berbagai struktur data seperti: tabel, array, stack, variabel dan lain-lain. Masing-masing modul atau elemen data mengacu pada sebuah nama. Sehingga jika membicarakan tabel simbol, fungsi sqrt atau main program tanpa mempedulikan alamatdi memori tetapi tetap dapat mendapatkannya. Juga kita tidak mempedulikan apakah fungsi sqrt disimpan setelah atau sebelum main program. Masing-masing segment ini adalah panjang varibael: Panjang ini terdefinisikan secara intrinsik sebagai tujuan dari pensegmenan dari sebuah program. Elemen-elemen dalam sebuah segmen teridentifikasi oleh offset-offsetnya dari awal segmennya.
Gambar 31.1. Alamat Lojik
Pernahkah pengguna mebayangkan sebuah memori sebagai sebuah array linier dari suatu byte, beberapanya terdiri dari instruksi dan sebagian yang lain berisi data? Sebagian besar orang akan berkata TIDAK. User lebih suka memandang sebuah memori sebagai sekumpulan variabel-variabel yang berada dalam segment-segmen dalam ukuran tertentu. Jika kita membayangkan sebuah program yang terdiri dari main program, sub routin, fungsi dan modul-modul. Bisa juga terdapat berbagai struktur data seperti: tabel, array, stack, variabel dan lain-lain. Masing-masing modul atau elemen data mengacu pada sebuah nama. Sehingga jika membicarakan tabel simbol, fungsi sqrt atau main program tanpa mempedulikan alamatdi memori tetapi tetap dapat mendapatkannya. Juga kita tidak mempedulikan apakah fungsi sqrt disimpan setelah atau sebelum main program. Masing-masing segment ini adalah panjang varibael: Panjang ini terdefinisikan secara intrinsik sebagai tujuan dari pensegmenan dari sebuah program. Elemen-elemen dalam sebuah segmen teridentifikasi oleh offset-offsetnya dari awal segmennya.
Gambar 31.1. Alamat Lojik
Segmentasi merupakan skema manajemen memori yang mendukung cara pandang seorang programmer terhadap memori. Ruang alamat lojik merupakan sekumpulan dari segmen-segmen. Masing-masing segment mempunyai panjang dan nama. Alamat diartikan sebagai nama segmen dan offset dalam suatu segmen. Jadi jika seorang pengguna ingin menunjuk sebuah alamat dapat dilakukan dengan menunjuk nama segmen dan offsetnya. Untuk lebih menyederhanakan implementasi, segmen-segmen diberi nomor yang digunakan sebagai pengganti nama segment. Sehingga, alamat lojik terdiri dari dua tupple: [segment-number, offset]
Segmentasi Perangkat Keras
Meskipun seorang pengguna dapat memandang suatu objek dalam suatu program sebagai alamat berdimensi dua, memori fisik yang sebenarnya tentu saja masih satu dimensi barisan byte. Jadi kita harus bisa mendefinisikan pemetaan dari dua dimensi alamat yang didefinisikan oleh pengguna ke satu dimensi alamat fisik. Pemetaan ini disebut sebagai sebuah segment table. Masing-masing masukan dari mempunyai segment base dan segment limit. Segment base merupakan alamat fisik dan segmen limit diartikan sebagai panjang dari segmen.
Gambar 31.2. Arsitektur Segmentasi
Meskipun seorang pengguna dapat memandang suatu objek dalam suatu program sebagai alamat berdimensi dua, memori fisik yang sebenarnya tentu saja masih satu dimensi barisan byte. Jadi kita harus bisa mendefinisikan pemetaan dari dua dimensi alamat yang didefinisikan oleh pengguna ke satu dimensi alamat fisik. Pemetaan ini disebut sebagai sebuah segment table. Masing-masing masukan dari mempunyai segment base dan segment limit. Segment base merupakan alamat fisik dan segmen limit diartikan sebagai panjang dari segmen.
Gambar 31.2. Arsitektur Segmentasi
Ilustrasi penggunaan segmen dapat dilihat pada Gambar 31.2, “Arsitektur Segmentasi”. Suatu alamat lojik terdiri dari dua bagian, yaitu nomor segmen(s), dan offset pada segmen(d). Nomor segmen digunakan sebagai indeks dalam segmen table. Offset d alamat lojik harus antara 0 hingga dengan segmen limit. Jika tidak maka diberikan pada sistem operasi. Jika offset ini legal maka akan dijumlahkan dengan segmen base untuk menjadikannya suatu alamat di memori fisik dari byte yang diinginkan. Jadi segmen table ini merupakan suatu array dari pasangan base dan limit register.
Gambar 31.3. Segmentasi
Sebagai contoh, Lihat pada Gambar 31.2, “Arsitektur Segmentasi”. Kita mempunyai nomor segmen dari 0 sampai dengan 4. Segmen-segmen ini disimpan dalam suatu memori fisik. Tabel segmen berisi data untuk masing-masing segmen, yang memberikan informasi tentang awal alamat dari segmen di fisik memori (atau base) dan panjang dari segmen (atau limit). Misalkan, segmen 2 mempunyai panjang 400 dan dimulai pada lokasi 4300. Jadi, referensi di byte 53 dari segmen 2 dipetakan ke lokasi 4300 + 53 = 5353. Suatu referensi ke segmen 3, byte 852, dipetakan ke 3200 (sebagai base dari segmen) + 852 = 4052. Referensi ke byte 1222 dari segmen 0 akan menghasilkan suatu trap ke sistem operasi, karena segmen ini hanya mempunyai panjang 1000 byte.
Keuntungan Segmentasi
Kelebihan Pemberian Halaman: tidak ada fragmentasi luar-alokasinya cepat.
Kelebihan Segmentasi: saling berbagi-proteksi.
Gambar 31.4. Segmentasi dengan Pemberian Halaman
Kelebihan Pemberian Halaman: tidak ada fragmentasi luar-alokasinya cepat.
Kelebihan Segmentasi: saling berbagi-proteksi.
Gambar 31.4. Segmentasi dengan Pemberian Halaman
Keuntungan pemakaian cara segmentasi ini adalah sebagai berikut:
- Menyederhanakan penanganan struktur data yang berkembang. Seringkali penanganan struktur data menuntut perubahan panjang data. Hal ini dimungkinkan dengan adanya segmentasi. Jadi dengan segmentasi membuat penanganan struktur data menjadi fleksibel.
- Kompilasi ulang independen tanpa mentautkan kembali seluruh program. Teknik ini memungkinkan program-program dikompilasi ulang secara independen tanpa perlu mentautkan kembali seluruh program dan dimuatkan kembali. Jika masing-masing prosedur terdapat di segmen terpisah beralamat 0 sebagai alamat awal, maka pentautan prosedur-prosedur yang dikompilasi secara terpisah sangat lebih mudah. Setelah semua prosedur dikompilasi dan ditautkan, panggilan ke prosedur di segmen n akan menggunakanalamat dua bagian yaitu (n,0) mengacu ke word alamat 0 (sebagai titik masuk) segmen ke n. Jika prosedur di segmen n dimodifikasi dan dikompilasi ulang, prosedur lain tidak perlu diubah (karena tidak ada modifikasi alamat awal) walau versi baru lebih besar dibanding versi lama.
- Memudahkan pemakaian memori bersama diantara proses-proses Teknik ini memudahkan pemakaian memori bersama diantara proses-proses. Pemrogram dapat menempatkan program utilitas atau tabel data berguna di segmen yang dapat diacu oleh proses-proses lain. Segmentasi memberi fasilitas pemakaian bersama terhadap prosedur dan data untuk dapat diproses, berupa shared library. Pada workstation modern yang menjalankan sistem Windows sering mempunyai pustaka grafis sangat besar. Pustaka ini diacu hampir semua program. Pada sistem bersegmen, pustaka grafis diletakan di satu segmen dan dipakai secara bersama banyak proses sehingga menghilangkan mempunyai pustaka ditiap ruang alamat proses. Shared libraries di sistem pengalamantan murni lebih rumit, yaitu dengan simulasi segmentasi.
- Memudahkan proteksi karena segmen dapat dikonstruksi berisi sekumpulan prosedur atau data terdefinisi baik, pemrogram atau administrator sistem dapat memberikan kewenangan pengaksesan secara nyaman.
Gambar 31.5. Segmentasi dengan Pemberian Halaman (INTEL 30386)
Arsitektur Pentium memperbolehkan segmen sebanyak 4 GB dan jumlah maksimum segmen per proses adalah 16 KB. Ruang alamat lojik dari proses dibagi menjadi 2 partisi. Partisi pertama terdiri atas segmen-segmen hingga 8 KB (tersendiri dari proses). Partisi kedua terdiri atas segmen-segmen hingga 8 KB yang berbagi dengan semua proses-proses. Informasi partisi pertama terletak di LDT (Local Descriptor Table), informasi partisi kedua terletak di GDT (Global Descriptor Table). Masing-masing entri dari LDT dan GDT terdiri atas 8 byte segmen descriptor dengan informasi yang rinci tentang segmen-segmen tertentu, termasuk lokasi base dan limit dari segmen itu. Alamat logikal adalah sepasang (selector, offset), dimana berjumlah 16 bit.
Gambarnya adalah sebagai berikut:Gambar 31.6. Selektor
Dimana s menandakan nomor segmen, g mengindikasikan apakah segmen GDT atau LDT, dan p mengenai proteksi. Offsetnya berjumlah 32 bit yang menspesifikasi lokasi byte (atau word) dalam segmentasi Pentium. Pada Pentium mempunyai 6 register mikroprogram 8 byte, yang mengijinkan 6 segmen tadi untuk dialamatkan kapan saja. 6 register ini berfungsi untuk menangani deskriptor-deskriptor yang sesuai dengan LDT atau GDT. Cache ini juga mengijinkan Pentium untuk tidak membca deskriptor dari memori. Alamat linear pada Pentium panjangnya 32 bit dan prosesnya adalah register segmen menunjukpada entry yang sesuai dalam LDT atau GDT. Informasi base dan limit tentang segmen Pentium digunakan untuk menghasilkan alamat linear. Pertama, limit digunakan untuk memeriksa valid tidaknya suatu alamat. Jika alamat tidak valid, maka kesalahan memori akan terjadi yang menimbulkan trap pada sistem operasi. Jika alamat valid, maka nilai offset dijumlahkan dengan nilai base, yang menghasilkan alamat linear 32 bit.
Hal ini ditunjukkan seperti pada gambar berikut:
Gambar 31.7. Segmentasi-Intel-Pentium
Segmentasi Linux
Pada Pentium, Linux hanya menggunakan 6 segmen:
1. Segmen untuk kode kernel.
2. Segmen untuk data kernel.
3. Segmen untuk kode pengguna.
4. Segmen untuk data pengguna.
5. Segmen Task-state (TSS).
6. Segmen default LDT.
Segmen untuk kode pengguna dan data pengguna berbagi dengan semua proses yang running pada pengguna mode, karena semua proses menggunakan ruang alamat lojik yang sama dan semua descriptor segmen terletak di GDT. TSS (Task-state Segment) digunakan untuk menyimpan context hardware dari tiap proses selama context switch. Tiap proses mempunyai TSS sendiri, dimana deskriptornya terletak di GDT. Segmen default LDT normalnya berbagi dengan semua proses dan biasanya tidak digunakan. Jika suatu proses membutuhkan LDT-nya, maka proses dapat membuatnya dan tidak menggunakan default LDT. Seperti yang telah dijelaskan, tiap selektor segmen mempunyai 2 bit proteksi. Mak, Pentium mengijinkan proteksi 4 level. Dari 4 level ini, Linux hanya mengenal 2 level, yaitu pengguna mode dan kernel mode.
Rangkuman
Rujukan
[Hariyanto1997] Bambang Hariyanto. 1997. Sistem Operasi. Buku Teks Ilmu Komputer. Edisi Kedua. Informatika. Bandung. Diakses 13 Juni 2013
[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 13 Juni 2013
[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
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
- Segmentasi merupakan skema manajemen memori yang mendukung cara pandang seorang Segmentasi Linux programmer terhadap memori. Masing-masing segment mempunyai panjang dan nama yang dapat mewakili sebagai alamat.
- Segmentasi mempunyai keuntungan yang dapat dilihat dari sisi sudut pandang programmer.
- Segmentasi juga bisa diterapkam dalam pentium baik dengan OS Windows ataupun Linux.
Rujukan
[Hariyanto1997] Bambang Hariyanto. 1997. Sistem Operasi. Buku Teks Ilmu Komputer. Edisi Kedua. Informatika. Bandung. Diakses 13 Juni 2013
[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 13 Juni 2013
[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
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
Tidak ada komentar:
Posting Komentar