Manajemen Memori
Memori
adalah pusat dari operasi pada sistem komputer modern. Memori adalah array
besar dari word atau byte, yang disebut alamat. CPU mengambil
instruksi dari memory berdasarkan nilai dari program counter. Instruksi
ini menyebabkan penambahan muatan dari dan ke alamat memori tertentu. Instruksi
eksekusi yang umum, contohnya, pertama mengambil instruksi dari memori.
Instruksi dikodekan dan mungkin mengambil operand dari memory. Setelah
instruksi dieksekusi pada operand, hasilnya ada yang dikirim kembali ke
memory. Unit memory hanya merupakan deretan alamat memory; tanpa tahu bagaimana
membangkitkan (instruction counter, indexing, indirection,
literal address dan lainnya) atau untuk apa (instruksi atau data). Oleh
karena itu, kita dapat mengabaikan bagaimana alamat memori dibangkitkan oleh
program, yang lebih menarik bagaimana deretan alamat memori dibangkitkan oleh
program yang sedang berjalan.
Pengikatan
alamat adalah cara instruksi dan data (yang berada di disk sebagai file yang
dapat dieksekusi) dipetakan ke alamat memori. Sebagian besar sistem
memperbolehkan sebuah proses user (user process) untuk meletakkan di
sembarang tempat dari memori fisik. Sehingga, meskipun alamat dari komputer
dimulai pada 00000, alamat pertama dari proses user tidak perlu harus dimulai
00000. Alamat pada source program umumnya merupakan alamat simbolik.
Sebuah compiler biasanya melakukan pengikatan alamat simbolik (symbolic
address) ke alamat relokasi dipindah (relocatable address). Misalnya
compiler mengikatkan alamat simbolik ke alamat relokasi “14 byte from the
beginning of this module”. Editor Linkage mengikatkan alamat relokasi ini ke
alamat absolute (absolute addresses) “74014”.
Instruksi
pengikatan instruksi dan data ke alamat memori dapat dilakukan pada saat :
·
Compile
time : Jika lokasi
memori diketahui sejak awal, kode absolut dapat dibangkitkan, apabila terjadi
perubahan alamat awal harus dilakukan kompilasi ulang.
·
Load
time : Harus
membangkitkan kode relokasi jika lokasi memori tidak diketahui pada saat waktu
kompilasi.
·
Execution
time : Pengikatan ditunda
sampai waktu eksekusi jika proses dapat dipindahkan selama eksekusi dari satu
segmen memori ke segmen memori lain. Memerlukan dukungan perangkat keras untuk
memetakan alamat (misalnya register basis dan limit).
4.2.
Alamat Logika dan Alamat Fisik
Alamat
yang dibangkitkan oleh CPU disebut alamat logika (logical address)
dimana alamat terlihat sebagai uni memory yang disebut alamat fisik (physical
address). Tujuan utama manajemen memori adalah konsep meletakkan ruang alamat
logika ke ruang alamat fisik.
Hasil
skema waktu kompilasi dan waktu pengikatan alamat pada alamat logika dan alamat memori adalah sama. Tetapi
hasil skema waktu pengikatan alamat waktu eksekusi berbeda. dalam hal ini,
alamat logika disebut dengan alamat maya (virtual address). Himpunan
dari semua alamat logika yang dibangkitkan oleh program disebut dengan ruang
alamat logika (logical address space); himpunan dari semua alamat fisik
yang berhubungan dengan alamat logika disebut dengan ruang alamat fisik (physical
address space).
Memory
Manajement Unit (MMU)
adalah perangkat keras yang memetakan alamat virtual ke alamat fisik. Pada
skema MMU, nilai register relokasi
tambahkan ke setiap alamat yang dibangkitkan oleh proses user pada waktu
dikirim ke memori.
Register
basis disebut register relokasi. Nilai dari register relokasi ditambahkan ke
setiap alamat yang dibangkitkan oleh proses user pada waktu dikirim ke memori.
sebagai contoh, apabila basis 14000, maka user mencoba menempatkan ke alamat
lokasi 0 dan secara dinamis direlokasi ke lokasi 14000.
Pengaksesan
ke lokasi logika 346, maka akan dipetakan ke lokasi 14346, seperti pada gambar
berikut ini.
User
program tidak pernah melihat alamat fisik secara real. Program dapat membuat
sebuah penunjuk ke lokasi 346, mengirimkan ke memory, memanipulasinya,
membandingkan dengan alamat lain, semua menggunakan alamat 346. Hanya ketika
digunakan sebagai alamat memory akan direlokasi secara relatif ke register
basis.
4.3.
Swapping
Sebuah
proses harus berada di memori untuk dieksekusi. Proses juga dapat ditukar (swap)
sementara keluar memori ke backing store dan kemudian dibawa kembali ke memori untuk melanjutkan
eksekusi. Backing store berupa disk besar dengan kecepatan tinggi yang
cukup untuk meletakkan copy dari semua memory image untuk semua user,
sistem juga harus menyediakan akses langsung ke memory image tersebut.
Contohnya, sebuah lingkungan multiprogramming dengan penjadwalan CPU
menggunakan algoritma round-robin. Pada saat waktu kuantum berakhir,
manajer memori akan memulai untuk menukar proses yang baru selesai keluar dan
menukar proses lain ke dalam memori yang dibebaskan.
Pada waktu
berjalan, penjadwal CPU (CPU scheduler) akan mengalokasikan sejumlah
waktu untuk proses yang lain di memori. Ketika masing-masing proses
menyelesaikan waktu kuantum-nya, akan ditukar dengan proses yang lain.
Kebijakan penukaran juga dapat digunakan pada algoritma penjadwalan berbasis
prioritas. Jika proses mempunyai prioritas lebih tinggi datang dan meminta
layanan, memori akan swap out proses dengan prioritas lebih rendah
sehingga proses dengan prioritas lebih tinggi dapat di-load dan
dieksekusi. Umumnya sebuah proses yang di-swap out akan menukar kembali
ke ruang memori yang sama dengan sebelumnya. Jika proses pengikatan dilakukan
pada saat load-time, maka proses tidak dapat dipindah ke lokasi yang
berbeda.
Untuk mengecek sisa kapasitas hardisk dan
penggunaan hardisk kita pada terminal, maka digunakan perintah : df, seperti
pada gambar berikut ini.
Komentar
Posting Komentar