permalink |
---|
/W05/ |
Home | Week1 | Week2 | Week3 | Week4 | Week5 | Week6 | Week7 | Week8 | Week9 | Week10 | Key | Rank | Log
Salah satu strategi memory management adalah virtual memory dimana proses dijalankan tidak secara keseluruhannya di memori, melalui abstraksi. Strategi ini membuat memori terlihat berukuran lebih besar daripada memori fisiknya sehingga menguntungkan dalam membuat program. Tetapi bagaimana cara program ini diload dari memori ketika dieksekusi terkait no.2 di bawah.
Terkait virtual memory management, strategi yang sering digunakan dalam memuat program dari storage ke main memory adalah demand paging. Tujuan utamanya adalah untuk melakukan proses load tersebut tidak sekaligus keseluruhan, melainkan hanya memuat page yang dibutuhkan pada eksekusi saat ini. Tambahan: selain demand paging, sistem juga mungkin melakukan pre-paging, dimana justru sistem menyediakan lebih dari banyak page yang dibutuhkan saat itu sebagai persiapan demand berikutnya.
Di samping keuntungan virtual memory yang memungkinkan fleksibilitas tinggi dalam melakukan tasks, ada dampak dari virtual memory management yang dihindari yaitu thrashing. Kondisi ini pada sistem dengan virtual memory adalah ketika load/swap untuk paging sering dilakukan dan cenderung berlebihan dibandingkan pekerjaan yang seharusnya dilakukan sehingga CPU terasa lambat dan performansi memburuk. Solusi dari masalah ini adalah melalui Working Set Model yang dapat dicari di buku referensi maupun internet.
Pada sistem paging terdapat page replacement algorithm yang menentukan page mana yang akan direplace saat page baru diload. Algoritma yang umum diketahui adalah First In First Out (FIFO), Least Recently Used (LRU), dan Optimal Page Replacement. Singkatnya,
- FIFO: setiap page diberi kesempatan yang sama dalam frame. Page yang sudah lama digunakan akan di-replace lebih dulu.
- LRU: sebagaimana diindikasikan namanya, page yang paling sedikit digunakan akan di-replace.
- Optimal: page yang akan tidak digunakan dalam waktu paling lama, di-replace.
Algoritma ini merupakan contoh lain dari page replacement algorithm. Singkatnya pada algoritma ini terdapat cara untuk merekam/track page yang digunakan di akhir-akhir. Terdapat tambahan register untuk menyimpan clock bagi setiap proses. Ketika akan di-replace, akan dicari proses mana yang memiliki rekaman clock (timestamp) yang paling lama.
Yang secara logis terjadi apabila frame ditambahkan dalam page replacement adalah page hit ratio meningkat bukan? Sebab proses yang dilakukan dapat lebih banyak karena ketersediaan page yang dibutuhkan juga lebih banyak dalam memori? Belum tentu. Situasi ini disebut anomali Belady. Anomali ini paling umum terjadi pada FIFO page replacement dibanding algoritma page replacement lainnya.
Bagaimana perbedaan penerapan memory management pada Windows dan Linux jika dilihat pada introduction essay pada page ini, seperti misalnya dari segi:
- Struktur data: Tree pada Windows, Linked List pada Linux
- Paging: Cluster Demand Paging pada Windows, Demand Paging pada Linux
- Page Replacement: FIFO pada Windows, LRU pada Linux
Selain memory untuk proses dari user, kernel memory juga perlu strategi memory management diantaranya Buddy System dan Slab System. Secara garis besar, perbedaan keduanya adalah ukuran block dan bagaimana ketika memori didealokasi. Pada Buddy System, block yang dibuat untuk alokasi bervariasi dan digabungkan kembali saat didealokasi, sedangkan Slab System membagi menjadi ukuran yang sama saat alokasi dan tidak ada penggabungan saat dealokasi.
Pada virtual memory yang mengimplementasikan demand paging, selain algoritma untuk menentukan replacement dari page yang ada pada frame, diperlukan juga algoritma untuk menentukan banyak frame yang ada untuk page tersebut. Berdasarkan pembagian jumlah frame terhadap proses yang berjalan, terdapat equal allocation dan proportional allocation. Selain itu, jumlah frame ini juga dapat berubah secara dinamis mengikuti global allocation maupun local allocation.
Top command adalah salah satu command yang digunakan minggu ini. Command ini digunakan untuk melihat proses-proses yang sedang berjalan secara real-time. Tampilan dari top ini juga dapat disesuaikan dengan langkah-langkah yang ada pada page ini selain dari website OS yang ada.
Here is the Github Repo