Pemetaan Memori Alokasi Memori
Ketika sebuah proses datang, ia akan diletakkan ke dalam input queue antrian proses pada disk yang menunggu dibawa ke memori untuk dieksekusi sesuai dengan ukuran terkecil partisi yang
mampu menampungnya. Kerugian dari mengurutkan proses ke dalam antrian yang berbeda berdasarkan ukurannya muncul ketika partisi yang besar akan menjadi kosong karena tidak ada
proses dengan ukuran sesuai yang diletakkan di partisi tersebut. Namun di lain sisi, antrian untuk partisi dengan ukuran kecil sangat padat karena banyaknya proses dengan ukuran yang sesuai. Cara
alternatif yang dapat dilakukan adalah dengan membuat sebuah antrian tunggal seperti terlihat pada gambar diatas. Ketika sebuah partisi bebas, proses dengan ukuran sesuai partisi tersebut yang
terletak di depan antrian dapat dimasukkan lalu dieksekusi. Namun metode ini memiliki kelemahan, yaitu bagaimana jika proses yang memasuki partisi yang cukup besar ternyata ukurannya jauh lebih
kecil dari partisi itu sendiri? Masalah ini dapat diatasi dengan mencari proses terbesar ke dalam seluruh antrian yang dapat ditampung oleh sebuah partisi pada saat itu. Namun algoritma ini
mendiskriminasikan proses yang kecil karena proses yang diambil adalah proses terbesar yang dapat dimuat ke dalam partisi yang sedang bebas saat itu.
Dalam partisi tetap ini, sistem operasi menggunakan sebuah tabel untuk mengindikasikan bagian memori mana yang kosong dan mana yang terisi. Pada awalnya semua partisi kosong dan dianggap
sebagai sebuah blok besar yang tersedia hole. Ketika sebuah proses datang dan membutuhkan memori, ia akan dicarikan lubang yang cukup besar yang mampu menampungnya. Setelah
menemukannya, memori yang dialokasikan untuknya hanyalah sebesar memori yang dibutuhkannya sehingga menyisakan tempat untuk memenuhi kebutuhan proses lain. Sistem operasi mencatat
kebutuhan memori masing-masing proses yang berada dalam antrian serta jumlah memori yang masih tersedia untuk menentukan proses mana yang harus dimasukkan. Sistem akan memiliki
sebuah daftar yang berisi ukuran blok yang masih tersedia serta antrian masukan proses. Sistem operasi dapat mengurutkan antrian input tersebut berdasarkan algoritma penjadwalan. Memori
dialokasikan pada proses yang ukurannya sesuai hingga akhirnya kebutuhan memori untuk proses berikutnya tidak dapat dipenuhi karena tidak ada lagi blok yang cukup untuknya. Sistem operasi
akan menunggu hingga blok yang cukup besar untuk menampung proses tersebut tersedia atau sistem operasi dapat juga melewati proses tersebut dan mencari jikalau ada proses dengan
kebutuhan memori yang dapat ditampung oleh blok memori yang tersedia. Pada kenyatannya, partisi tetap kurang mengoptimalkan memori sebagai sumber daya yang penting karena seringkali
terjadi, partisi yang cukup besar dialokasikan untuk proses dengan ukuran yang lebih kecil sehingga sisa dari partisi tersebut tidak digunakan.
Pada alokasi penyimpanan dinamis, kumpulan lubang-lubang ruang memori kosong dalam berbagai ukuran tersebar di seluruh memori sepanjang waktu. Apabila ada proses yang datang,
sistem operasi akan mencari lubang yang cukup besar untuk menampung memori tersebut. Apabila lubang yang tersedia terlalu besar, maka ia akan dipecah menjadi 2. Satu bagian digunakan untuk
menampung proses tersebut sedangkan bagian lain akan digunakan untuk bersiap-siap menampung proses lain. Setelah proses tersebut selesai menggunakan alokasi memorinya, ia akan melepaskan
ruang memori tersebut dan mengembalikannya sebagai lubang-lubang kembali. Apabila ada 2 lubang yang berdekatan, keduanya akan bergabung untuk membentuk lubang yang lebih besar. Pada
12
saat itu, sistem harus memeriksa apakah ada proses dalam antrian yang dapat dimasukkan ke dalam ruang memori yang baru terbentuk tersebut. Isu utama dari alokasi penyimpanan dinamis adalah
bagaimana memenuhi permintaan proses berukuran n dengan kumpulan lubang-lubang yang tersedia. Ada beberapa solusi untuk masalah ini: