Manajemen Memori

     Memori adalah pusat dari operasi pada sistem komputer modern, berfungsi sebagai tempat penyimpanan informasi yang harus diatur dan dijaga sebaik-baiknya. 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. 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. Pengelolaan memori utama sangat penting untuk sistem komputer.
Berikut  kami sajikan bahasan-bahasan yang terkait dengan memori :

MANAJEMEN MEMORI

1. Definisi Manajemen Memori
   
        Manjemen memori (Memory Manager) adalah salah satu bagian sistem operasi yang mempengaruhi dalam menentukan proses mana yang diletakkan pada antrian. Manajemen memori DOS merupakan mekanisme pengaturan memori pada sistem operasi DOS. Sistem operasi berjalan dalam modus real dengan arsitektur berbasis prosesor intel x86. Dalam modus real, hanya 20-bit pertama dari bus alamat yang akan digunakan oleh sistem operasi untuk mengakses memori, sehingga menjadikan jumlah memori yang dapat diakses hanya mencapai 220=1048576 bytes (1 MB) saja, dari yang seharusnya 32-bit/40-bit pada prosesor-prosesor modern. Ada beberapa macam jenis memori diantaranya :

- Memori Kerja
• ROM/PROM/EPROM/EEPROM
• RAM
• Cache memory
- Memori Dukung
· Floppy, harddisk, CD, dll.

2 . Manajemen Memori
Terdapat 2 (dua) manajemen memori yaitu :
a. Manajeman memori statis
Dengan pemartisian statis, jumlah, lokasi dan ukuran proses dimemori tidak beragam sepanjang waktu secara tetap.
b. Manajemen memori dinamis
Dengan pemartisian dinamis , jumlah, lokasi dan ukuran proses dimemori dapat beragam sepanjang waktu secara dinamis.

Manajemen Memori Berdasarkan Alokasi memori Terdapat 2 (dua) cara menempatkan informasi ke dalam memori kerja, yaitu:
a. Alokasi Memori Berurutan (Contiguous Allocation)
Pada alokasi memori berurutan, setiap proses menempati satu blok tunggal lokasi memori yang berurutan.
Kelebihan : sederhana, tidak ada rongga memory bersebaran, proses berurutan dapat dieksekusi secara cepat.
Kekurangan : memori boros, tidak dapat disisip apabila tidak ada satu blok memori yang mencukupi

b. Alokasi Memori Tak Berurutan (Non Contiguous Allocation)
Program/proses ditempatkan pada beberapa segmen berserakan, tidak perlu saling berdekatan atau berurutan. Biasanya digunakan untuk lokasi memori maya sebagai lokasi page-page.
Kelebihan : sistem dapat memanfaatkan _ memori utama secara lebih efesien, dan sistem opersi masih dapat menyisip proses bila jumlah lubang-lubang memori cukup untuk memuat proses yang akan dieksekusi.
Kekurangan : memerlukan pengendalian yang lebih rumit dan memori jadi banyak yang berserakan tidak terpakai.

c. Penggunaan memori
Pencocokan ukuran informasi ke penggalan memori kerja disebut sebagai fit. Bagian dari memori kerja yang tidak terpakai dan letaknya tersebar di banyak wilayah memori kerja disebut sebagai fragmen. Peristiwa terjadinya fragmen disebut fragmentasi

d. Pencocokan (fit) dan fragmentasi
Beberapa jenis strategi pencocokan antara lain:
1. Cocok pertama (first fit)
Pencocokan terjadi menurut antrian informasi
2. Cocok pertama berdaur (cyclical first fit)
Pencocokan tidak harus dimulai dari urutan penggalan memori yang pertama, tetapi dapat dilakukan setelah terjadi pencocokan sebelumnya.
3. Cocok terbaik (best fit)
Pencocokan dilakukan sesuai dengan penggalan memori yang ukurannya pas.
4. Cocok terburuk (Worst fit)
Informasi akan menempati penggalan yang ukurannya terbesar.

e. Fragmentasi
Menurut prosesnya terdapat dua macam fragmentasi :
1. Fragmentasi internal
Kelebihan memori pada penggalan memori ketika penggalan memori itu menerima penggalan informasi yang berukuran kurang dari ukuran penggalan memori.
2. Fragmentasi Ekternal
Penggalan memori bebas yang ukurannya terlalu kecil untuk dapat menampung penggalan informasi yang akan dimuat ke penggalan memori itu.
Contoh : Proses

3. Fungsi manajemen memori :
Manajemen memori sangat penting untuk memproses dan fasilitas masukan/keluaran secara efisien, sehingga memori dapat menampung sebanyak mungkin proses dan sebagai upaya agar pemrogram atau proses tidak dibatasi kapasitas memori fisik di sistem komputer.  Berikut ini kami sebutkan fungsi manajemen memori diantaranya :
1.Mengelola informasi memori yang dipakai dan tidak dipakai.
2.Mengalokasikan memori ke proses yang memerlukan.
3.Mendealokasikan memori dari proses yang telah selesai.
4.Mengelola swapping antara memori utama dan disk.

4.  Manajemen memori berdasarkan keberadaan swapping atau paging
Terbagi dua yaitu :
1.      Manajemen tanpa swapping atau paging
Yaitu manajemen memori tanpa pemindahan citra proses antara memori utama dan disk selama eksekusi. Yang terdiri dari :
Ø  Monoprogramming, ciri-cirinya:
- Hanya satu proses pada satu saat
- Hanya satu proses menggunakan semua memori
- Pemakai memuatkan program ke seluruh memori dari disk atau tape
- Program mengambil kendali seluruh mesin
Ø  Multiprogramming Dengan Pemartisian Statis
Terbagi dua :
- Pemartisian menjadi partisi-partisi berukuran sama, yaitu ukuran semua partisi memori adalah sama
- Pemartisian menjadi partisi-partisi berukuran berbeda, yaitu ukuran semua partisi memori adalah berbeda
   Strategi Penempatan Program Ke Partisi
·      Satu Antrian Tunggal Untuk Semua Partisi
Keuntungan : Lebih fleksibel serta implementasi dan operasi lebih minimal karena hanya mengelola satu antrian.
Kelemahan : Proses dapat ditempatkan di partisi yang banyak diboroskan, yaitu proses kecil ditempatkan di partisi sangat besar.
·      Satu Antrian Untuk Tiap Partisi (banyak antrian Untuk Seluruh Partisi) . Keuntungan : Meminimalkan pemborosan memori
Kelemahan : Dapat terjadi antrian panjang di suatu partisi sementara antrian partisi - partisi lain kosong
2. Manajemen dengan swapping atau paging
Swapping : pemindahan proses dari memori utama ke disk dan kembali lagi.
1. Multiprogramming dengan Pemartisisan Dinamis
Jumlah , lokasi dan ukuran proses di memori dapat beragam sepanjang waktu secara dinamis.
Kelemahan:
- Dapat terjadi lubang-lubang kecil memori di antara partisi-partisi yang dipakai.
- Merumitkan alokasi dan dealokasi memori
2. Pencatatan Pemakaian memori
- Pencatatan memakai peta bit (Bit Map)
- Pencatatan memakai linked list


Manajemen Memori SO Linux dan Microsoft Windows


A. Manajemen Memori di Linux

Manajemen Memori Fisik

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:
1. 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.
2. Pembagian memori fisik yang dil
Manajemen memori membuat pembagian yang adil dalam pengalokasian memori antara proses-proses.
3. 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.
4. Penggunaan memori virtual bersama
Memori virtual mengijinkan 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 1. Setiap anggota tabel page mengandung informasi berikut ini:
1. Virtual PFN
2. PFN fisik
3. 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.

Demand Paging

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.

Swaping

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:

1. 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.

2. 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 hardware 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.

Load dan Eksekusi Program

1. 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:
librari-librari 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 librari sistem menuju memori. Linking dinamis lebih efisien dalam hal memori fisik dan ruang disk.


B. Manajemen Memori di Microsoft (Windows)

Pada waktu Windows kali pertama diperkenalkan, memory (RAM) sangat mahal dan hampir semua PC di pasaran berjuang untuk berhubungan dengan operating system yang baru tersebut dengan konfigurasi memory yang kemudian digunakan sekarang ini. Meskipun mesin DOS telah menawarkan konsep pengaturan memory (sebagian besar melalui utiliti pihak ketiga), tetapi itu belum cukup sampai Windows menjadi OS pilihan untuk PC user di mana pengaturan memory dilakukan secara serius.

Sekarang memory sudah murah, paling tidak dibandingkan dengan dulu. Hardware PC sekarang bisa mengalamati dan menggunakan sampai 4 GB memory, jadi mengapa manajemen memory masih menjadi bagian penting dari OS? Terlepas dari fakta bahwa Windows berkembang dan bertumbuh—dan dengan begitu menuntut memory lebih—selalu ada alasan mengapa PC yang mengatur memory dengan baik akan berjalan lebih efisien dibanding yang tidak.

Bagian Memory

Memory bisa dibagi ke dalam dua bagian: non-page dan page (juga dikenal dengan page pool). Untuk memahami perbedaannya, kita perlu melihat dulu konsep paging, dengan menjelaskan memori virtual. Karena sedikit PC yang menggunakan RAM fisik sampai 4 GB penuh, Windows mengambil sisanya dan menggunakannya sebagai memory virtual.

Secara singkat, memory virtual adalah bagian ruang harddisk yang Windows simpan dan perlakukan seolah-olah itu adalah memory fisik (sampai batas 4 GB). Memory fisik dan virtual bisa diperlakukan sama seperti semua program yang berjalan pada PC, karena memory manajer dalam kernel Windows menangani semua permintaan akses.

Pada waktu Windows atau program membuat permintaan untuk mendapatkan memory lebih, memory manajer pertama melihat apakah masih ada memory fisik yang tersedia. Jika ada, ia mengabulkan permintaan tersebut dan memberi alamat kepada program yang menunjukkan page memory fisik. Kesulitan muncul jika tidak ada RAM fisik yang cukup. Ketika ini terjadi, memory manajer memeriksa memory fisik untuk mencari item yang dimuat ke dalam RAM, tetapi tidak digunakan selama beberapa waktu dan tidak kritis bagi operasional sistem.
Jika ditemukan, ia menyimpan isi dari page memory tersebut ke harddisk. Ini disebut swapping out, yang mana dari situlah awalnya istilah swapfile berasal. Dengan dipindahkannya bagian yang tidak terpakai ke harddisk, Windows bisa membebaskan memory fisik yang mereka gunakan dan memberikannya kepada proses atau program baru. Ketika item yang di-swap diperlukan lagi, mereka bisa dimuat ulang ke dalam memory fisik. Tentu, bisa saja ada yang lainnya yang akan di-swap ke harddisk untuk membantu pemuatan ulang item asli.

Semua yang di-swap disimpan dalam page pool. Tentu saja, ada beberapa bagian dari OS yang harus selalu tetap pada memory fisik: sebagai contoh, Anda tidak bisa menyimpan inti manajemen memory ke harddisk.

Secara umum, item pada area non-page ditaruh ke situ oleh Windows sendiri, walaupun ada beberapa pengecualian. Beberapa utiliti pada tingkat sistem—seperti Norton AntiVirus—menganggap sangat penting bagi mereka untuk memasukkan modul mereka sendiri ke area non-page. Itu masuk akal, karena virus tidak bisa mengeluarkan mesin scanning virus ke swapfile untuk mendapatkan akses bebas ke sistem.

Pada Windows XP, swapfile dikenal dengan pagefile atau paging file, tetapi melakukan pekerjaan yang sama. Secara default, paging file disimpan dalam direktori root dari drive yang digunakan untuk boot. Ketika paging file diakses, tidak sulit untuk melihat bahwa meletakkannya pada partisi harddisk fisik yang sama dengan program, data dan Windows itu sendiri bisa menyebabkan banyak kelambatan.

Mengoptimalkan Swapfile

Jika Anda mempunyai satu harddisk fisik dan hanya satu partisi yang tersedia, jelas Anda tidak akan mempunyai pilihan. Jika satu harddisk fisik dibagi ke dalam dua atau lebih partisi, memindahkan paging file juga bukan ide yang bagus. Dengan harddisk modern yang berputar pada kecepatan tinggi, bagian paling lambat dari akses harddisk adalah pencarian file pada waktu head secara fisik pindah ke sektor harddisk yang berisi data yang diperlukan. Memindahkan paging file ke partisi kedua kadang-kadang bisa membuat akses menjadi lambat, karena head berpindah-pindahantara partisi primer dan sekunder untuk memuat dan menyimpan data.

Cara paling efisien untuk mengoptimalkan penggunaan memory virtual adalah dengan menaruh paging file pada harddisk fisik terpisah. Karena mempunyai head sendiri, pencarian yang dilakukan bebas dari akses drive yang lain. Idealnya, paging file harus menjadi yang pertama yang mengambil ruang pada harddisk kedua, dan tidak sulit untuk melakukan itu. Jika Anda mulai dengan partisi baru, pindahkan lokasi paging file (lihat boks “Memindahkan Paging File”). Jika harddisk kedua sudah berisi data, Anda perlu mengosongkannya sebelum memindahkan paging file, baru kemudian mengembalikan data. Dalam banyak kasus, memberi tempat baru kepada paging file pada harddisk fisik kedua dapat memberikan peningkatan kinerja yang nyata.

Komentar

Postingan populer dari blog ini

Skema Dasar Sistem Komputer

7 Lapisan OSI Layer Dan Fungsi Protokol ARP, RARP, ICMP, HTTP, FTP, SMTP, POP3, IMAP4

Macam Macam Sistem Operasi Komputer