Pada contoh gambar, terlihat bahwa dengan = 10 memory references, maka working set pada t1 adalah {1,2,5,6,7} dan working set pada t2 adalah {3,4}.
Keakuratan Working set tergantung pada pemilihan :
1. jika terlalu kecil tidak akan mewakilkan seluruh lokalitas. 2. jika terlalu besar menyebabkan overlap.
3. jika tidak terbatas working set adalah kumpulan halaman sepanjang eksekusi program.
Jika total permintaan > total bingkai, maka akan terjadi thrashing. Jika ini terjadi maka proses yang sedang berjalan akan diblok.
7.7. Page Fault
Untuk mencegah thrashing maka kita harus mengatur tingkat page fault yang terjadi. Jika page fault sering terjadi maka dibutuhkan bingkai yang lebih banyak, jika page fault jarang terjadi maka bingkai yang ada terlalu banyak, maka diperlukan batasan untuk menentukan batas atas dan batas bawah dari frekuensi page fault. Jika melewati batas atas maka proses mendapat alokasi bingkai baru, jika melewati batas bawah maka bingkai akan didealokasi dari proses.
Gambar 7.3. Page-Fault
Dalam working set strategi jika melewati batas atas maka harus ada proses yang ditunda dan bingkai yang bebas akan distribusikan untuk proses dengan frekuensi page fault yang tinggi.
7.8. Memory Mapped Files
Mengakses file pada disk secara sequential menggunakan system call open(), read(),
write(). Cara lain untuk mengakses file pada disk adalah dengan menggunakan memori virtual. Cara ini diberi nama memory mapping yang memperbolehkan sebagian memori virtual dihubungkan kepada file.
Memory-mapped file dapat dilakukan dengan memetakan blok dari disk ke halaman di memori.
Proses membaca dan menulis file dapat dilakukan dengan akses ke memori sehingga lebih mudah dibandingkan dengan menggunakan system call.
Memodifikasi file yang dipetakan pada memori tidak harus langsung meng-update hasil modifikasi tersebut pada file di disk. Beberapa system meng-update file fisik jika sistem operasi menemukan halaman pada memori telah diubah. Hal ini dilakukan secara periodik oleh sistem operasi. Ketika
file ditutup maka semua data pada memori ditulis ke disk dan dibuang dari memori virtual.
Pada beberapa sistem operasi pemetaan memori menggunakan system call yang khusus sedangkan untuk menjalankan proses M/K file menggunakan standard system call. Akan tetapi, beberapa sistem operasi justru tidak membedakan apakah file yang akan dimodifikasi tersebut ditujukan untuk
memory-mapped atau tidak, contohnya adalah Solaris yang menganggap semua file yang akan
dimodifikasi adalah file yang akan dipetakan ke memori.
Banyak proses diperbolehkan untuk memetakan file yang akan dipergunakan secara bersama-sama. Data yang dimodifikasi oleh sebuah proses dapat terlhat oleh proses lain yang dipetakan ke bagian yang sama. Memori virtual memetakan setiap proses pada halaman yang sama di memori fisik yang mengandung salinan file di disk. System call memory-mapped juga mendukung copy-on-write.
Proses untuk berbagi memory-mapped file tidak sama dengan proses berbagi memori di beberapa sistem operasi. Pada sistem UNIX dan Linux memory-mapped dilakukan oleh system callmmap(), sedangkan untuk berbagi memori digunakan system callshmget()danshmat(). Pada Windows NT, 2000, dan XP berbagi memori dilakukan dengan memory-mapped file. Pada cara ini setiap proses dapat berbagi memori dengan proses yang memetakan file yang sama ke memori. Memory
-mapped file berlaku sebagai bagian memori yang digunakan bersama-sama oleh beberapa proses.
Berbagi memori menggunakan memory-mapped file pada Win32 API awalnya dengan memetakan
file ke memori dan membuat view untuk file tersebut di setiap memori virtual milik proses. Proses
lain dapat membuat view pada file tersebut. File yang dipetakan itu mewakili objek dari
shared-memory yang memungkinkan proses untuk berkomunikasi.
Pada hal yang berhubungan dengan M/K, register berperan dalam mengendalikan perintah dan data yang akan di transfer. Untuk kenyamanan yang lebih maka digunakan M/K memory-mapped. Pada cara ini alamat memori dipetakan pada device register. Modifikasi pada alamat memori menyebabkan data ditransfer dari/ke device register. Cara ini digunakan untuk alat dengan response
time yang cepat.
Cara ini juga digunakan untuk serial port dan pararel port yang menghubungkan modem dan
printer. CPU mentransfer data melalui M/K port, ketika mengirim string panjang, CPU akan akan
menulis data pada register dan mengeset bit yang menandakan bahwa data telah tersedia. Ketika data tersebut dibaca oleh alat misalkan modem maka bit akan di set kembali yang menandakan modem siap untuk data selanjutnya, lalu CPU mengirim data lagi. Jika CPU menggunakan polling untuk mengecek bit control, program ini disebut programmed I/O (PIO). Jika CPU tidak menggunakan polling tetapi menerima interupsi ketika alat telah siap menerima data maka transfer ini disebut interrupt driven.
7.9. Rangkuman
Strategi untuk alokasi bingkai dapat dilakukan dengan cara equal allocation dan proportional
allocation. Equal allocation dilakukan dengan membagi jumlah bingkai untuk setiap proses dengan
jumlah yang sama. Proportional allocation membagi bingkai untuk setiap proses sesuai dengan besar ukuran proses. Priority allocation membagi jumlah bingkai sesuai prioritas masing-masing proses (alokasi besar untuk prioritas lebih tinggi).
Penggantian halaman dapat dilakukan dengan dua cara yaitu penggantian global dan lokal. Pada penggantian global setiap proses dapat mengganti halaman dari bingkai-bingkai yang tersedia, sedangkan pada penggantian lokal proses mengganti halaman dengan bingkai yang sudah dialokasi sebelumnya.
Thrashing adalah keadaan suatu proses sibuk melakukan swapping karena banyak terjadi page fault. Thrashing dapat menurunkan utilitas CPU karena setiap proses tidak dapat berjalan secara efisien. Thrashing dapat diatasi dengan menyediakan bingkai yang sesuai dengan proses. Ini dilakukan
dengan strategi working set.
Memory-mapped file memetakan blok di disk ke halaman di memori. Proses dapat melakukan akses
terhadap file melalui memori tanpa menggunakan system call. Memory-mapped file juga dapat digunakan untuk berbagi memori antar proses.
Rujukan
[Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems
Concepts. Seventh Edition. John Wiley & Sons.
[WEBAmirSch2000] Yair Amir dan Theo Schlossnagle. 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 28 Juni 2006.
[WEBGottlieb2000] Allan Gottlieb. 2000. Operating Systems: Page tables http://allan.ultra.nyu.edu/ ~gottlieb/ courses/ 1999-00-spring/ os/ lecture-11.html . Diakses
28 Juni 2006.
[WEBSolomon2004] Marvin Solomon. 2004. CS 537 Introduction to Operating Systems: Lecture
Notes Part 7 http://www.cs.wisc.edu/ ~solomon/ cs537/ paging.html . Diakses 28 Juni
2006.
[WEBWiki2006f] From Wikipedia, the free encyclopedia. 2006. Page replacement algorithms
http://en.wikipedia.org/ wiki/ Page_replacement_algorithms . Diakses 04 Juli 2006.
[FlynnMcHoes2006] Ida M. Flynn dan Ann Mclver McHoes. 2006. Understanding Operating
Systems. Fourth Edition. Thomson Course Technology.
Bab 8. Seputar Alokasi Bingkai
8.1. Pendahuluan
Ketika sebuah proses yang berjalan dalam user-mode meminta tambahan memori, halaman akan dialokasikan dari daftar frame halaman bebas yang diatur dari kernel. Daftar tersebut diperoleh dengan menggunakan algoritma penggantian halaman yang telah dibahas pada bab-bab sebelumnya. Memori kernel sering dialokasikan dari sebuah daftar kumpulan memori bebas yang berbeda dari daftar yang digunakan untuk memenuhi permintaaan dalam user-mode proses. Terdapat dua alasan untuk hal ini:
1. Kernel meminta memori untuk struktur data dengan berbagai ukuran, ada beberapa yang lebih kecil dari ukuran halaman. Jadi, kernel harus bisa meminimalisasi memori yang terbuang karena terjadinya fragmentasi
2. Halaman-halaman yang dialokasikan untuk proses-proses saat user-mode tidak harus dalam halaman yang saling berdekatan. Bagaimanapun juga hardware devices tertentu berinteraksi langsung dengan memori fisik. Hal itu mengakibatkan adanya kebutuhan memori sisa dalam halaman-halaman yang saling berdekatan. Ada dua strategi untuk me- manage memori bebas yang diserahkan untuk proses-proses kernel, yaitu: sistem buddy dan alokasi slab.
Dua hal utama yang harus kita pertimbangkan dalam membuat sistem paging adalah dari sisi pemilihan algoritma penggantian halaman dan aturan pengalokasian memori. Namun, ternyata ada beberapa hal juga harus kita pertimbangkan dalam membuat sistem paging, seperti: prepaging, TLB
reach, ukuran halaman (page size), struktur program , penguncian M/K dll.
8.2. Sistem Buddy
Sistem buddy merupakan algoritma pengelolaan alokasi memori dimana pengalokasian memori untuk suatu proses dilakukan dengan memecah satu blok memori bebas menjadi dua bagian yang sama besar. Pemecahan dilakukan secara rekursif sehingga didapat blok yang besarnya sesuai kebutuhan.