Alokasi Slab Seputar Alokasi Bingkai

contoh, jika ukuran halaman adalah 1 byte dan ada sebuah proses sebesar 200 KB, dimana hanya setengahnya yang menggunakan memori, akan menghasilkan 102.400 page fault . Sedangkan bila ukuran halaman sebesar 200 KB maka hanya akan terjadi 1 kali page fault . Jadi untuk mengurangi page fault , dibutuhkan ukuran halaman yang besar. Masih ada faktor lain yang harus dipertimbangkan misalnya hubungan antara ukuran halaman dengan ukuran sektor pada peranti pemberian halaman. Sampai saat ini belum ada jawaban yang pasti berapa ukuran halaman yang paling baik. Sebagai acuan, pada 1990, ukuran halaman yang paling banyak dipakai adalah 4096 bytes. Sedangkan sistem modern saat ini menggunakan ukuran halaman yang jauh lebih besar dari itu.

8.6. TLB Reach

TLB reach atau jangkauan TLB adalah jumlah memori yang dapat diakses dari TLB Translation Lookaside buffers. Jumlah tersebut merupakan perkalian dari jumlah masukan dengan ukuran halaman. Jangkauan memori = jumlah masukan TLB x ukuran halaman Jika jumlah masukan dari TLB dilipatgandakan, maka jangkauan TLB juga akan bertambah menjadi dua kali lipat. Idealnya, working set dari sebuah proses disimpan dalam TLB. Jika tidak, maka proses akan menghabiskan waktu yang cukup banyak mengatasi referensi memori di dalam tabel halaman daripada di TLB. Tetapi untuk beberapa aplikasi hal ini masih belum cukup untuk menyimpan working set. Cara lain untuk meningkatkan jangkauan TLB adalah dengan menambah ukuran halaman. Jika ukuran halaman dijadikan dua kali lipatnya, maka jangkauan TLB juga akan menjadi dua kali lipatnya. Namun hal ini akan meningkatkan fragmentasi untuk aplikasi-aplikasi yang tidak membutuhkan ukuran halaman sebesar itu. Sebagai alternatif, Sistem Operasi dapat menyediakan ukuran halaman yang bervariasi. Sebagai contoh, UltraSparc II menyediakan halaman berukuran 8 KB, 64 KB, 512 KB, dan 4 MB. Sedangkan Solaris 2 hanya menggunakan halaman ukuran 8 KB dan 4 MB.

8.7. Struktur Program

Ketika program berjalan, maka ia akan menjadi suatu proses yang pasti membutuhkan memori. Oleh karena itu, implementasi dari suatu program akan sangat berpengaruh pada bagaimana cara proses tersebut menggunakan memori. Selain itu, pemilihan struktur data dan struktur pemrograman secara cermat juga dapat meningkatkan locality sehingga dapat pula menurunkan tingkat kesalahan halaman dan jumlah halaman di working set. Contoh kasus: int i,j; int[128][128] data; Assume that pages are 128 words in size forj=0; j 128; j++ fori = 0; i 128; i++ Program to initialize to 0 data[i][j] = 0; each element of 128x128 array Gambar 8.4. Ilustrasi Program 1 57 int i,j; int[128][128] data; Assume that pages are 128 words in size fori=0; i 128; i++ forj = 0; j 128;j++ Program to initialize to 0 data[i][j] = 0; each element of 128x128 array Gambar 8.5. Ilustrasi Program 2 Pada program diatas, penggantian halaman dilakukan tiap kali pengaksesan data. Oleh karena itu, jika sistem operasi mengalokasikan kurang dari 128 frames maka program diatas mempunyai potensi 128 x 128 = 16.384 page faults. Jika program di atas diubah menjadi Program 2, maka potensi terjadinya page fault bisa berkurang menjadi 128 page faults. Hal ini disebabkan pergantian halaman tidak dilakukan setiap kali pengaksesan data, tapi setelah selesai pengaksesan 128 data, barulah terjadi pergantian halaman.

8.8. Penguncian MK

Saat demand paging digunakan, kita terkadang harus mengizinkan beberapa halaman untuk dikunci di memori. Salah satu situasi muncul saat MK dilakukan ke atau dari memori pengguna virtual. MK sering diimplementasikan oleh prosesor MK yang terpisah. Sebagai contoh, sebuah pengendali pita magnetik pada umumnya diberikan jumlah bytes yang akan dipindahkan dan alamat 58