1. 1. Manajemen
Memory
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 computer 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).
2. 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.
Gambar Relokasi dinamis menggunakan register relokasi
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.
3. 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 seperti pada gambar berikut
ini.
Gambar
Proses Swapping
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.
Apabila
CPU scheduler memutuskan untuk mengeksekusi proses, maka sistem operasi
akan memanggil dispatcher. Dispatcher memeriksa untuk melihat apakah proses
selanjutnya pada ready queue ada di memori. Jika tidak dan tidak terdapat
cukup memori bebas, maka dispatcher swap out sebuah proses yang ada di
memori dan swap in proses tersebut. Kemudian reload register ke keadaan
normal. Teknik swapping yang sudah dimodifikasi ditemui pada beberapa sistem
misalnya Linux, UNIX dan Windows. Pada sistem operasi linux. Untuk melakukan
pengecekan sisa dan kapasitas RAM kita baik phisycall maupun swap nya gunakan
perintah : free –m, seperti pada gambar berikut ini.
Gambar 4.3. Hasil perintah free –m
Untuk
mengecek sisa kapasitas hardisk dan penggunaan hardisk kita pada terminal, maka
digunakan perintah : df, seperti pada gambar berikut ini.
Gambar Hasil perintah df
Untuk
melihat dalam satuan MB ketikkan perintah : df –h, sehingga akan dihasilkan
gambar sebagai berikut :
Gambar Hasil perintah df –h
Untuk
melihat kapasitas memory, maka ketikkan perintah : free -m, sehingga akan
dihasilkan gambar sebagai berikut :
Gambar Hasil perintah free –m
Sedangkan
untuk melihat besarnya memory virtual, dilakukan dengan cara mengetikkan
perintah vmstat seperti pada gambar berikut ini.
Gambar 4.7. Hasil perintah free –m
0 comments:
Post a Comment