Memori berfungsi sebagai tempat penyimpanan informasi yang harus di atur dan di jaga
sebaik-baiknya. Pengelolaan memori utama sangat penting untuk sistem komputer, penting untuk
memproses dan fasilitas masukan/keluaran secara efisien, sehingga memori dapat menampung
sebanyak mungkin proses dan sebagai upaya agar pemogram atau proses tidak dibatasi kapasitas
memori fisik di sistem komputer. Fungsi manajemen memori mempunyai peranan sangat penting
dalam sistem komputer. Fungsi menejemen memori tersebut adalah :
a. Meningkatkan kinerja atau Utilitas CPU.
b. meningkatkan kecepatan akses CPU terhadap data dan instruksi Data dan instruksi dapat
diakses dengan cepat oleh CPU.
c. meningkatkan efisensi pemakaian memori yang terbatas.
d. Meningkatkan efisiensi transfer atau perpindahan data dari atau ke memori utama dan dari
atau ke CPU.
e. Mengelola informasi yang dipakai dan tidak dipakai.
f. Mengalokasikan memori ke proses yang memerlukan.
g. Mendealokasikan memori dari proses telah selesai.
h. Mengelola swapping atau paging antara memori utama dan disk.
Memori adalah array besar dari word atau byte, yang disebut alamat. CPU mengambil
instruksi dari memory berdasarkan nilai dari program counter. Sedangkan manajemen memori
adalah suatu kegiatan untuk mengelola memori komputer. Proses ini menyediakan cara
mengalokasikan memori untuk proses atas permintaan mereka, membebaskan untuk digunakan
kembali ketika tidak lagi diperlukan serta menjaga alokasi ruang memori bagi proses.
Manajemen Memori merupakan salah satu bagian terpenting pada sistem operasi. Sejak awal
komputer digunakan untuk keperluan komputasi, kebutuhan akan memori yang lebih besar
dibandingkan dengan keadaan fisik memori di dalam sistem terus meningkat. Berbagai
perhitungan dan strategi terus dilakukan untuk mengatasi keterbatasan ukuran memori fisik.
Sistem operasi memberikan tanggapan terhadap manajemen memori utama untuk aktivitas-
aktivitas sebagai berikut:
a. Menjaga dan memelihara bagian-bagian memori yang sedang digunakan dan dari yang
menggunakan.
b. Memutuskan proses-proses mana saja yang harus dipanggil kememori jika masih ada ruang
di memori.
c. Mengalokasikan dan mendelokasikan ruang memori jika diperlukan
Memori merupakan pusat kegiatan pada komputer, sebab setiap proses yang akan dijalankan,
harus melalui memori terlebih dahulu. Sistem Operasi bertugas mengatur proses yang diletakan
pada memori. Memori harus digunakan dengan baik, sehingga dapat menjalankan proses dengan
optimal.
Sebelum masuk ke dalam memori, suatu proses harus menunggu. Hal ini disebut Input
Queue/antrian.
Proses paging alamat terjadi pada saat :
a. Compile Time : proses yang sedang di compile.
b. Load Tima : proses dipanggil.
c. Execution Time : proses di jalankan.
Pada memori terdapat ruang alamat. Ruang alamat ini terbagi 2 yaitu Ruang alamat logika &
fisik :
a. Alamat logika merupakan alamat yang dibentuk di CPU, atau alamat virtual.
b. Alamat fisik merupakan alamat yang terlihat oleh memori.
c. Supaya dapat mengubah dari alamat logika ke fisik di butuhkan MMU (Memori Manajemen
Unit).
d. MMU adalah pusat dari manajemen memori.
Pada komputer tanpa memori logika, alamat langsung diletakan ke bus dan menyebakan
memori fisik alamat itu dapat dibaca / tulis. Pada komputer dengan memori logika, alamat tidak
diletakan langsung ke bus, tetapi harus melewati MMU yang kemudian MMU memetakan
alamat logika ke alamat memori fisik.
Strategi yang dikenal untuk mengatasi hal tersebut adalah memori maya. Memori maya
menyebabkan sistem seolah-olah memiliki banyak memori dibandingkan dengan keadaan
memori fisik yang sebenarnya. Memori maya tidak saja memberikan peningkatan komputasi,
akan tetapi memori maya juga memiliki beberapa keuntungan seperti :
Teknik manajemen memori (1), (2), (3) dan (4) merupakan pengelolaan dengan kapasitas
memori sebatas memori fisik yang tersedia.. Teknik ini tidak dapat digunakan untuk memuat
program program yang ukurannya lebih besar dari kapasitas fisik memori yang tersedia.
Teknik manajemen memori (5),(6) dan (7) dapat digunakan untuk mengatasi kapasitas
memori yang terbatas , sehingga program yang lebih besar dibandingkan kapasitas memori fisik
tersedia dapat dijalankan.
Alamat yang dihasilkan oleh CPU berupa alamat logika, sedangkan yang masuk ke dalam
memori adalah alamat fisik. Pada compile time dan load time, alamat fisik dan logika identik.
Sebaliknya, perbedaan alamat fisik dan logika terjadi pada execution time.
Kumpulan semua alamat logika yang dihasilkan oleh program adalah ruang alamat
logika/ruang alamat virtual. Kumpulan semua alamat fisik yang berkorespondensi dengan alamat
logika disebut ruang alamat fisik. Pada saat program berada di CPU, program tersebut memiliki
alamat logika, kemudian oleh MMU dipetakan menjadi alamat fisik yang akan disimpan di
dalam memori.
Ilustrasinya sebagai berikut, nilai pada register ini akan ditambah dengan setiap alamat yang
dibuat oleh user process yang kemudian dikirim ke memori. Contohnya register relokasi berada
di 14000, alamat logika di 346, maka langsung dipetakan menjadi alamat fisik di 14346.
Melibatkan banyak pemakai secara simultan sehingga di memori akan terdapat lebih dari satu
proses bersamaan. Oleh karena itu dibutuhkan sistem operasi yang mampu mendukung dua
kebutuhan tersebut.
Melakukan dua aktivitas :
a. Proteksi memori dengan isolasi ruang-ruang alamat secara disjoint (terpisah).
b. Pemakaian bersama memori.
Memungkinkan proses-proses bekerja sama mengakses daerah memori bersama. Ketika
konsep multiprogramming digunakan, pemakaian CPU dapat ditingkatkan.
MULTIPROGRAMMING pemartisian statis
Terdapat beberapa alasan :
a. Mempermudah pemogram.
Pemrogram dapat memecah program menjadi dua proses atau lebih.
b. Agar dapat memberi layanan interaktif ke beberapa orang secara simultan.
Untuk itu diperlukan kemampuan mempunyai lebih dari satu proses dimemori agar memperoleh
kinerja yang baik.
c. Efisiensi penggunaan sumber daya.
Bila pada multiprogramming maka proses tersebut diblocked (hanya DMA yang bekerja) dan
proses lain mendapat jatah waktu pemroses, maka DMA dapat meningkatkan efisiensi sistem.
d. Eksekusi lebih murah jika proses besar dipecah menjadi beberapa proses kecil.
e. Dapat mengerjakan sejumlah job secara simultan.
Ciri-ciri:
1. Pada kondisi awal, memori tidak dibagi menjadi partisi-partisi
2. Pemartisian dilakukan pada saat image proses akan disalin ke memori utama.
3. Ukuran partisi yang dialokasikan akan disesuaikan dengan ukuran image proses.
4. Partisi akan dibebaskan jika program sudah selesai.
5. Keuntungan : tidak terjadi fragmentasi internal alokasi memori disesuaikan dengan besarnya
image proses.
Cara kerja:
a. Pengalokasian dilakukan dengan mencari hole à suatu ruang memori utama yang kosong,
yang cukup besar untuk menampung image proses.
b. Hole sisa kadang kala terlalu kecil untuk dapat dialokasikan ke proses lainnya sehingga
tidak bisa digunakan lagi à fragmentasi eksternal.
c. Salah satu cara untuk mengatasi masalah ini adalah melakukan memory compaction.
Yaitu: menggeser image proses-proses yang ada di memori sehingga hole terkumpul di satu
tempat saja
Kelemahan:
a. Proses alokasi dan dealokasi menjadi lebih rumit
b. Perlu pengelolaan informasi area memori yang masih kosong.
Ada 2 metode pengelolaan memori kosong:
1. Peta bit (bitmap)
Menggunakan area memori khusus untuk mencatat seluruh area kosong pada memori utama.
Memakai nilai 0 dan 1
Nilai 0 à alamat memori tersebut masih kosong
Nilai 1 à alamat memori tersebut sudah terisi
2. Linked list
Informasi mengenai hole kosong berikutnya dicatat pada hole kosong sebelumnya.
Tidak diperlukan area memori khusus. Karena seluruh informasi tercatat di area memori
kosong itu sendiri sehingga menghemat kapasitas memori utama.
Diperlukan algoritma untuk menentukan hole mana yang akan dialokasikan ke suatu
proses.
A. Algoritma Best-fit
Mencari memori blok yang paling kecil yang dapat menampung image proses
Memerlukan waktu lama karena harus searching seluruh blok memori utama
Fragmentasi eksternal dapat ditekan sekecil mungkin
B. Algoritma First-fit
Mencari memori kosong dari alamat awal sampai menemukan blok yang dapat menampung
image proses
Sederhana dan cepat.
C. Algoritma Next-fit
Hampir sama dengan First-fit.
Bedanya: proses searching dimulai dari alamat alokasi terakhir
D. Algoritma Worst-fit
Mencari hole yang paling besar di seluruh area memori utama.
Tujuannya: hole sisa yang tercipta setelah alokasi masih cukup besar untuk dialokasikan ke
proses lainnya.
3. Sistem Buddy
Berupa pemartisian secara dinamis
Ciri khusus adalah partisi yang terbentuk senantiasa berukuran besar sebesar
bilangan 2n 2,4,8,16…..256,512,1024(1Mb)
Alokasi memori pada sistem buddy:
a. Menentukan ukuran partisi
Ditentukan ukuran partisi untuk menampung image proses yaitu ukuran bilangan pangkat 2
terkecil
Misal : ukuran image proses = 12kb, maka ukuran partisi yang bisa digunakan adalah 16kb.
b. Pengalokasian
Selanjutnya adalah mencari hole yang ukurannya sebesar perhitungan.
Jika tidak ada maka dicarikan hole yang berukuran sedikit lebih besar. Kemudian dipecah
secara bertahap sesuai dengan aturan bilangan pangkat 2.
Misal : ukuran image proses = 12kb dan hole yang paling kecil adalah 64kb.
o maka dipecah menjadi 2 partisi 32kb, selanjutnya dipecah lagi menjadi 2 partisi 16kb.
o dan partisi 16kb pertama yang bisa dipakai untuk image proses 12kb.
5) Organisasi secara fisik. Dalam hal ini biasanya memori dibagi menjadi dua yaitu :
Memori utama
Memori sekunder.
:: Partitioning
Partitioning adalah teknik membagi memori menjadi beberapa bagian sesuai dengan kebutuhan.
Sistem operasi akan menempati bagian memori yang tetap.
Ada dua cara dalam pempartisian, yaitu :
A. Pemartisian Statis
Pemartisian Statis adalah pemartisian memori menjadi partisi tetap yang mana proses-proses
akan ditempatkan pada memori yang telah dipartisi tersebut.
B. Pemartisian Dinamis
Dengan menggunkan partisi statis menyebabkan memori terlalu banyak diboroskan dengan
proses-proses yang lebih kecil dibanding partisi yang ditempatinya. Namun apabila
menggunakanpartisi dinamis maka jumlah, lokasi, dan ukuran proses di memori dapat beragam
sepanjang waktu secara dinamis. proses yang akan masuk ke memori segera dibuatkan partisi
untuknya sesuai kebutuhannya. Teknik ini meningkatkan utilitas memori.
:: Swapping
Proses swapping menukarkan sebuah proses keluar dari memori untuk sementara waktu ke
sebuah penyimpanan sementara dengan sebuah proses lain yang sedang membutuhkan sejumlah
alokasi memori untuk dieksekusi. Tempat penyimpanan sementara ini biasanya berupa sebuah
fast disk dengan kapasitas yang dapat menampung semua salinan dari semua gambaran memori
serta menyediakan akses langsung ke gambaran tersebut. Jika eksekusi proses yang dikeluarkan
tadi akan dilanjutkan beberapa saat kemudian, maka ia akan dibawa kembali ke memori dari
tempat penyimpanan sementara tadi.
Bagaimana sistem mengetahui proses mana saja yang akan dieksekusi? Hal ini dapat
dilakukan dengan ready queue. Ready queue berisikan semua proses yang terletak baik di
penyimpanan sementara maupun memori yang siap untuk dieksekusi. Ketika penjadwal CPU
akan mengeksekusi sebuah proses, ia lalu memeriksa apakah proses bersangkutan sudah ada di
memori ataukah masih berada dalam penyimpanan sementara. Jika proses tersebut belum berada
di memori maka proses swapping akan dilakukan seperti yang telah dijelaskan di atas.
Manajemen Memori tanpa swapping adalah manajemen memori tanpa pemindahan proses antara
memori utama dan disk selama eksekusi terdiri dari :
- Monoprogramming
- Multiprogramming dengan pemartisian statis
a. Monoprogramming
Merupakan manajemen memori paling sederhana. Sstem komputer hanya mengijinkan 1
program/pemakai berjalan pada 1 waktu. Semua sumber daya sepenuhnya dikuasai proses yang\
sedang berjalan.
Ciri-ciri manajemen memori monoprogramming :
1) hanya 1 proses pada 1 saat
2) hanya 1 proses menggunakan semua memori
3) pemakai memuatkan program ke seluruh memori dari disk / tape
4) program mengambil kendali seluruh mesin
Karena hanya terdapat 1 proses dan menguasai seluruh sistem maka alokasi memori dilakukan
secara berurutan.
Merupakan manajemen memori dengan pemindahan proses antara memori utama dan disk
selama eksekusi. Diterapkan pada multiprogramming dengan pemartisian dinamis. Partisi
dinamis partisi statis menyebabkan memori terlalu banyak diboroskan dengan proses-proses
yang lebih kecil dibanding partisi yang ditempatinya. Dengan partisi dinamis maka jumlah,
lokasi, dan ukuran proses di memori dapat beragam sepanjang waktu secara dinamis. proses
yang akan masuk ke memori segera dibuatkan partisi untuknya sesuai kebutuhannya. Teknik ini
meningkatkan utilitas memori.
Masalah lain pada partisi dinamis adalah proses dapat tumbuh berkembang. Solusinya adalah
bila proses bersebelahan dengan lubang memori tak dipakai, proses tumbuh memakai lubang itu.
Masalah menjadi lebih parah bila proses bersebelahan dengan proses-proses lain. Alternatif
penyelesaian :
- bila masih terdapat lubang besar yang dapat memuat proses, maka proses dipindah ke
lubang memori yang dapat memuat
- 1 proses atau lebih diswap ke disk agar memberi lubang cukup besar untuk proses yang
berkembang
- jika proses tidak dapat tumbuh di memori dan daerah swap di disk telah penuh,proses harus
menunggu/disingkirkan.
Paging
Salah satu cara mengatasi external fragmentation(munculnya lubang-lubang yang tidak cukup
besar untuk menampung permintaan dari proses). adalah membentuk teknik pengalokasian non-
contigous(tidak berurutan). Paging adalah teknik yang berorientasi hardware untuk mengelola
memori fisik. Paging digunakan agar program yang besar dapat berjalan pada komputer yang
mempunyai memori fisik yang kecil. Dalam sistem paging, hardware memori virtual membagi
alamat logis menjadi dua bagian, yaitu virtual page number atau disebut juga page number dan
word offset dalam page. Hardware melakukan pembagian ini dengan menyekat atau memisahkan
bit alamat, yaitu bit high order menjadi page number dan bit low order menjadi offset. Unit
memori yang menyimpan page disebut page frame ( kerangka frame ), atau kadang disebut
block, untuk membedakan mereka dengan page virtual. Untuk sistem yang baru, page mframe
mempunyai jangkauan 512 sampai 4096 byte.
Sebagai bagian dari peta page, sistem pengoperasian memelihara atau mengelola page tabel
yang menyimpan berbagai bagian informasi mengenai page program. Page tabel terdiri atas
sejumlah page tabel entries, dan setiap page tabel entries menyimpan informasi mengenai page
tertentu. Virtual page number berfungsi sebagai offset terhadap page table.