Manajemen Memori
Manajemen memori adalah
suatu kegiatan untuk mengelola memori komputer. Proses ini menyediakan
cara mengalokasikan memori untuk proses. Pengelolaan memori utama sangat
penting untuk sistem komputer, penting untuk memproses dan fasilitas
masukan/keluaran secara efisien, sehingga memori dapat menampung
sebanyak mungkin proses.
MEMORI
- Memori adalah pusat kegiatan pada sebuah komputer, karena setiap proses yang akan dijalankan harus melalui memori terlebih dahulu.
- CPU mengambil instruksi dari memori sesuai yang ada pada program counter.
- Instruksi memerlukan proses memasukkan atau menyimpan ke alamat di memori.
- Tugas sistem operasi adalah mengatur peletakan banyak proses pada suatu memori.
- Bagian operating system yang mengatur memori disebut dengan memory manager.
- Memori harus dapat digunakan dengan baik, sehingga dapat memuat banyak proses dalam suatu waktu.
Entitas memori sendiri ada 4 macam: 1. Used-RAM : RAM yang terpakai.
2. Cached-RAM: RAM yang dipakai sebagai tempat simpan sementara untuk aplikasi jika dieksekusi kembali.
3. Free-RAM : RAM yang tidak terpakai.
4. Swap : memori tambahan menggunakan harddisk.
Pemetaan file diperlukan karena file dipetakan secara teratur sehingga bisa mendapatkan akses ke sumber daya dan metadata dari dalam memori.
Fungsi Manajemen Memori:
1. Utilitas CPU meningkat.
2. Data dan instruksi dapat diakses dengan cepat oleh CPU.
3. Tercapai efisiensi dalam pemakaian memori yang terbatas.
4. Transfer data dari/ke memori utama ke/dari CPU dapat lebih efisien.
5. Mengelola informasi yang dipakai dan tidak dipakai.
6. Mengalokasikan memori ke proses yang memerlukan.
7. Mendealokasikan memori dari proses telah selesai.
8. Mengelola swapping atau paging antara memori utama dan disk.
Manajemen memori dengan swaping ialah kemampuan memindahkan citra proses
antara memori utama dan harddisk selama eksekusi
Manajemen Memori pada Windows
Windows memiliki memori fisik dan virtual yang dibutuhkan oleh
proses sebuah program atau lebih (multitasking). Singkatnya, Virtual
Memory selalu dimiliki oleh sebuah sistem operasi untuk mencegah
terjadinya deadlock antar aplikasi maupun sistem itu sendiri.
1) Melalui Ctrl + Shift + Esc
2) Melalui Ctrl + Alt + Del dan pilih Start Task Manager
3) Melalui Klik kanan pada task bar dan pilih Start Task Manager
Manajemen Memori pada Linux
Linux memanfaatkan virtual memori untuk mendukung kinerja sistem.
Sebagai sistem operasi multiprogramming, virtual memori dapat
meningkatkan efisisensi sistem. Sambil proses menunggu bagiannya diswap
masuk ke memori, menunggu selesainya operasi masukan/keluaran dan proses
diblocked. Jatah waktu pemroses dapat diberikan ke proses-proses lain
Manajemen memori Linux menyediakan:
Ruang alamat besar, ruang alamat dapat lebih besar dibanding memori fisik yang tersedia
Proteksi, tiap proses di sistem mempunyai ruang alamat maya tersendiri.
Ruang-ruang alamat maya itu sepenuhnya terpisah. Proses yang berjalan di
satu aplikasi tidak dapat mengganggu proses lainnya.
Pemetaan memori, dilakukan pemetaan antara memori maya ke memori fisik yang tersedia.
Memori maya bersama (shared virtual memory), memori maya bersama ini
untuk menghemat ruang memori, seperti pustaka dinamis bagi beberapa
proses.
Linux menempatkan proses pada memori yang dibagi menjadi sejumlah
partisi. Pemartisian ini bersifat dinamis maka jumlah, lokasi dan ukuran
proses di memori dapat beragam sepanjang waktu secara dinamis. Proses
yang akan masuk ke memori segera dibuatkan partisi sesuai kebutuhan.
Linux menciptakan ruang disk tempat swap terlebih dahulu, saat proses
diciptakan, ruang swap pada disk dialokasikan. Ketika proses harus
dikeluarkan dari memori utama, proses selalu ditempatkan ke ruang yang
telah dialokasikan, bukan ke tempat-tempat berbeda setiap kali terjadi
swap-out. Ketika proses berakhir, ruang swap pada disk didealokasikan.
- WINDOWS
Windows memiliki memori fisik dan virtual yang dibutuhkan oleh
proses sebuah program atau lebih (multitasking). Sebelum kita membahas
tentang memory-nya kita patut mengetahui dulu apa itu proses. Proses
adalah sebuah program yang sedang dieksekusi, sedangkan program adalah
kumpulan instruksi yang ditulis ke dalam bahasa yang dimengerti sistem
operasi. Sebuah proses membutuhkan sejumlah sumber daya untuk
menyelesaikan tugasnya. Sumber daya tersebut dapat berupa CPU time,
alamat memori, berkas-berkas, dan perangkat-perangkat I/O. Sistem
operasi mengalokasikan sumber daya-sumber daya tersebut saat proses itu
diciptakan atau sedang diproses/dijalankan. Ketika proses tersebut
berhenti dijalankan, sistem operasi akan mengambil kembali semua sumber
daya agar bisa digunakan kembali oleh proses lainnya.
Bagian ini menjelaskan bagaimana linux menangani memori dalam
sistem. Memori manajemen merupakan salah satu bagian terpenting dalam
sistem operasi. Karena adanya keterbatasan memori, diperlukan suatu
strategi dalam menangani masalah ini. Jalan keluarnya adalah dengan
menggunakan memori virtual. Dengan memori virtual, memori tampak lebih
besar daripada ukuran yang sebenarnya.
Dengan memori virtual kita dapat:- Ruang alamat yang besar sistem operasi membuat memori terlihat lebih besar daripada ukuran memori sebenarnya. Memori virtual bisa beberapa kali lebih besar daripada memori fisiknya.
- Pembagian memori fisik yang dil, manajemen memori membuat pembagian yang adil dalam pengalokasian memori antara proses-proses.
- Perlindungan memori manajemen menjamin setiap proses dalam sistem terlindung dari proses-proses lainnya. Dengan demikian, program yang crash tidak akan mempengaruhi proses lain dalam sistem tersebut.
- Penggunaan memori virtual bersama, memori virtual mengizinkan dua buah proses berbagi memori diantara keduanya, contohnya dalam shared library. Kode library dapat berada di satu tempat, dan tidak dikopi pada dua program yang berbeda.
Memori fisik dan memori virtual dibagi menjadi bagian-bagian
yang disebut page. Page ini memiliki ukuran yang sama besar. Tiap page
ini punya nomor yang unik, yaitu Page Frame Number (PFN). Untuk setiap
instruksi dalam program, CPU melakukan mapping dari alamat virtual ke
memori fisik yang sebenarnya.
Penerjemahan alamat di antara virtual dan memori fisik dilakukan oleh
CPU menggunakan tabel page untuk proses x dan proses y. Ini menunjukkan
virtial PFN 0 dari proses x dimap ke memori fisik PFN Setiap anggota
tabel page mengandung informasi berikut ini:
- Virtual PFN
- PFN fisik
- Informasi akses page dari page tersebut
Untuk menerjemahkan alamat virtual ke alamat fisik, pertama-tama
CPU harus menangani alamat virtual PFN dan offsetnya di virtual page.
CPU mencari tabel page proses dan mancari anggota yang sesuai degan
virtual PFN. Ini memberikan PFN fisik yang dicari. CPU kemudian
mengambil PFN fisik dan mengalikannya dengan besar page untuk mendapat
alamat basis page tersebut di dalam memori fisik. Terakhir, CPU
menambahkan offset ke instruksi atau data yang dibutuhkan. Dengan cara
ini, memori virtual dapat dimap ke page fisik dengan urutan yang
teracak.
Cara untuk menghemat memori fisik adalah dengan hanya meload page
virtual yang sedang digunakan oleh program yang sedang dieksekusi.
Tehnik dimana hanya meload page virtual ke memori hanya ketika program
dijalankan disebut demand paging.
Ketika proses mencoba mengakses alamat virtual yang tidak ada
di dalam memori, CPU tidak dapat menemukan anggota tabel page.
Contohnya, dalam gambar, tidak ada anggota tabel page untuk proses x
untuk virtual PFN 2 dan jika proses x ingin membaca alamat dari virtual
PFN 2, CPU tidak dapat menterjemahkan alamat ke alamat fisik. Saat ini
CPU bergantung pada sistem operasi untuk menangani masalah ini. CPU
menginformasikan kepada sistem operasi bahwa page fault telah terjadi,
dan sistem operasi membuat proses menunggu selama sistem operasi
menagani masalah ini.
CPU harus membawa page yang benar ke memori dari image di disk.
Akses disk membutuhkan waktu yang sangat lama dan proses harus menunggu
sampai page selesai diambil. Jika ada proses lain yang dapat
dijalankan, maka sistem operai akan memilihnya untuk kemudian
dijalankan. Page yang diambil kemudian dituliskan di dalam page fisik
yang masih kosong dan anggota dari virtual PFN ditambahkan dalam tabel
page proses. Proses kemudian dimulai lagi pada tempat dimana page fault
terjadi. Saat ini terjadi pengaksesan memori virtual, CPU membuat
penerjemahan dan kemudian proses dijalankan kembali.
Demand paging terjadi saat sistem sedang sibuk atau saat image
pertama kali diload ke memori. Mekanisme ini berarti sebuah proses dapat
mengeksekusi image dimana hanya sebagian dari image tersebut terdapat
dalam memori fisik.
Jika memori fisik tiba-tiba habis dan proses ingin memindahkan
sebuah page ke memori, sistem operasi harus memutuskan apa yang harus
dilakukan. Sistem operasi harus adil dalam mambagi page fisik dalam
sistem diantara proses yang ada, bisa juga sistem operasi menghapus satu
atau lebih page dari memori untuk membuat ruang untuk page baru yang
dibawa ke memori. Cara page virtual dipilih dari memori fisik
berpengaruh pada efisiensi sistem.
Linux menggunakan tehnik page aging agar adil dalam memilih page
yang akan dihapus dari sistem. Ini berarti setiap page memiliki usia
sesuai dengan berapa sering page itu diakses. Semakin sering sebuah page
diakses, semakin muda page tersebut. Page yang tua adalah kandidat
untuk diswap.
Pengaksesan memori virtual bersama
Memori virtual mempermudah proses untuk berbagi memori saat semua
akses ke memori menggunakan tabel page. Proses yang akan berbagi memori
virtual yang sama, page fisik yang sama direference oleh banyak proses.
Tabel page untuk setiap proses mengandung anggota page table yang
mempunyai PFN fisik yang sama.
Efisiensi
Desainer dari CPU dan sistem operasi berusaha meningkatkan
kinerja dari sistem. Disamping membuat prosesor, memori semakin cepat,
jalan terbaik adalah manggunakan cache. Berikut ini adalah beberapa
cache dalam manajemen memori di linux:
- Page Cache digunakan untuk meningkatkan akses ke image dan data dalam disk. Saat dibaca dari disk, page dicache di page cache. Jika page ini tidak dibutuhkan lagi pada suatu saat, tetapi dibutuhkan lagi pada saat yang lain, page ini dapat segera diambil dari page cache.
- Buffer Cache page mungkin mengandung buffer data yang sedang digunakan oleh kernel, device driver dan lain-lain. Buffer cache tampak seperti daftar buffer. Contohnya, device driver membutuhkan buffer 256 bytes, adalah lebih cepat untuk mengambil buffer dari buffer cache daripada mengalokasikan page fisik lalu kemudian memecahnya menjadi 256 bytes buffer-buffer.3.
- Swap Cache hanya page yang telah ditulis ditempatkan dalam swap file. Selama page ini tidak mengalami perubahan setelah ditulis ke dalam swap file, maka saat berikutnya page di swap out tidak perlu menuliskan kembali jika page telah ada di swap file. Di sistem yang sering mengalami swap, ini dapat menghemat akses disk yang tidak perlu.
Salah satu implementasi yang umum dari hardare cache adalah di CPU,
cache dari anggota tabel page. Dalam hal ini, CPU tidak secara langsung
membaca tabel page, tetap mencache terjemahan page yang dibutuhkan.
- Penempatan program dalam memori
Linux membuat tabel-tabel fungsi untuk loading program, memberikan kesempatan kepada setiap fungsi untuk meload file yang diberikan saat sistem call exec dijalankan. Pertama-tama file binari dari page ditempatkan pada memori virtual. Hanya pada saat program mencoba mengakses page yang telah diberikan terjadi page fault, maka page akan diload ke memori fisik.
2. Linking statis dan linking dinamis:
a. Linking statis:
library-library yang digunakan oleh program ditaruh secara langsung dalam file binari yang dapat dieksekusi. Kerugian dari linking statis adalah setiap program harus mengandung kopi library sistem yang umum.
b. Linking dinamis:
hanya sekali meload library sistem menuju memori. Linking dinamis lebih efisien dalam hal memori fisik dan ruang disk.
Komentar
Posting Komentar