Pendahuluan Swap Alokasi Memori

alamat logis. Alamat yang telah dipetakan ini lalu dikirim ke memori. Pada gambar dibawah ini kita dapat melihat bahwa sebuah proses yang memiliki base register 30004 dan limit register 12090 akan dipetakan ke memori fisik dengan alamat awalnya sesuai dengan base register 30004 dan berakhir pada alamat 30004 + 12090 = 42094. Gambar 2.2. Base dan Limit Register Ketika penjadwal CPU memilih suatu proses untuk dieksekusi, ia akan memasukkan register relokasi dan juga limit register -nya. Register relokasi memungkinkan sistem operasi untuk merubah ukuran partisinya pada memori secara dinamis. Contohnya, kode dan buffer yang dialokasikan untuk driver peralatan pada sistem operasi dapat dihapus dari memori jika peralatan tersebut jarang digunakan. Kode semacam ini disebut kode sistem operasi yang transient, oleh karena kode ini dapat datang dan pergi dari memori tergantung kapan ia dibutuhkan. Sehingga penggunaan kode transient ini dapat merubah ukuran sistem operasi selama eksekusi program berlangsung.

2.4. Partisi Memori

Memori harus di diatur agar penempatan proses-proses tersebut dapat tersusun dengan baik. Hal tersebut berkaitan dengan banyaknya jumlah proses yang berada di memori pada suatu saatwaktu. Cara yang paling mudah adalah dengan membagi memori ke dalam beberapa partisi dengan ukuran yang tetap. Cara ini memungkinkan pembagian yang tidak sama rata. Tiap partisi dapat terdiri dari hanya satu buah proses. Sehingga derajat multiprogramming-nya dibatasi oleh jumlah partisi tersebut. Gambar 2.3 mengilustrasikan multiprogramming dengan partisi memori yang tetap. Gambar 2.3. Proses Partisi Memori Tetap 11 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