Jumat, 01 Mei 2009

MANAJEMEN MEMORY

Pengertian

* Memori adalah salah satu 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/menyimpan ke alamat di memori.

* Tugas sistem operasi adalah mengatur peletakan banyak proses pada suatu memori.

* Memori harus dapat digunakan dengan baik, sehingga dapat memuat banyak proses dalam suatu waktu.

* Sebuah proses agar bisa dieksekusi bukan hanya membutuhkan sumber daya dari CPU, tetapi juga harus terletak dalam memori.

Swapping

* Dalam tahapannya, suatu proses bisa saja ditukar sementara keluar memori ke sebuah penyimpanan sementara dan kemudian dibawa lagi ke memori untuk melanjutkan pengeksekusian.

* Hal ini dalam sistem operasi disebut swapping.

Contoh Swapping

* Asumsikan sebuah multiprogramming environment dengan penjadwalan CPU Round-Robin.

* Ketika waktu kuantum habis, pengatur memori akan menukar proses yang telah selesai dan memasukkan proses yang lain ke dalam memori yang sudah bebas.

* Di saat yang bersamaan, penjadwal CPU akan mengalokasikan waktu untuk proses lain di dalam memori.

* Ketika waktu kuantum setiap proses sudah habis, proses tersebut akan ditukar dengan proses lain.

* Untuk kondisi ideal, penukaran proses dapat dilakukan dengan cepat sehingga proses akan selalu berada dalam memori dan siap dieksekusi saat penjadwal CPU hendak menjadwal CPU.

* Hal ini berkaitan dengan CPU utilization.

* Swapping dapat juga terdapat dalam penjadwalan berbasis prioritas (priority scheduling).

* Jika proses dengan prioritas lebih tinggi tiba dan meminta layanan, manajer memori dapat menukar keluar memori proses-proses yang prioritasnya rendah sehingga proses-proses yang prioritasnya lebih tinggi tersebut dapat dieksekusi.

* Setelah proses-proses yang memiliki prioritas lebih tinggi tersebut selesai dieksekusi, proses-proses dengan prioritas rendah dapat ditukar kembali ke dalam memori dan dilanjutkan eksekusinya.

* Cara ini disebut juga dengan metoda roll in, roll out.

Alokasi Memori

* Ketika proses yang sebelumnya ditukar, akan dikembalikan ke ruang memori. Ada 2 kemungkinan yang terjadi.

* Pertama, apabila pemberian alamat dilakukan pada waktu pembuatan atau waktu pengambilan, maka proses tersebut pasti akan menempati ruang memori yang sama.

* Kedua, apabila pemberian alamat diberikan pada waktu eksekusi, ada kemungkinan proses akan dikembalikan ke ruang memori yang berbeda dengan sebelumnya.

* Penukaran membutuhkan sebuah penyimpanan sementara.

* Penyimpanan sementara pada umumnya adalah sebuah fast disk, dan harus cukup untuk menampung salinan dari seluruh gambaran memori untuk semua pengguna, dan harus mendukung akses langsung terhadap gambaran memori tersebut.

* Sistem mengatur ready queue yang berisikan semua proses yang gambaran memorinya berada di memori dan siap untuk dijalankan.

* Saat sebuah penjadwal CPU ingin menjalankan sebuah proses, ia akan memeriksa apakah proses yang mengantri di ready queue tersebut sudah berada di dalam memori tersebut atau belum.

* Apabila belum, penjadwal CPU akan melakukan penukaran keluar terhadap proses-proses yang berada di dalam memori sehingga tersedia tempat untuk memasukkan proses yang hendak dieksekusi tersebut.

* Setelah itu proses yang diinginkan akan dieksekusi.

Proteksi Memori

* Proteksi memori adalah sebuah sistem yang mencegah sebuah proses dari pengambilan memori proses lain yang sedang berjalan pada komputer yang sama dan pada saat yang sama pula.

* Proteksi memori selalu mempekerjakan hardware (Memori Manajemen Unit/MMU) dan sistem software untuk mengalokasikan memori yang berbeda untuk proses yang berbeda.

* Memori utama harus dapat melayani baik sistem operasi maupun proses pengguna.

* Harus ada alokasi pembagian memori seefisien mungkin.

* Salah satunya adalah dengan cara alokasi memori berkesinambungan.

* Alokasi memori berkesinambungan berarti alamat memori diberikan kepada proses secara berurutan dari kecil ke besar.

* Keuntungan Alokasi Memori Berkesinambungan

1. Sederhana

2. Cepat

3. Mendukung proteksi memori

* Sedangkan kerugian dari menggunakan alokasi memori berkesinambungan adalah

Apabila tidak semua proses dialokasikan di waktu yang sama, akan menjadi sangat tidak efektif sehingga mempercepat habisnya memori.

* Alokasi memori berkesinambungan dapat dilakukan baik menggunakan sistem partisi banyak, maupun menggunakan sistem partisi tunggal.

* Sistem partisi tunggal berarti alamat memori yang akan dialokasikan untuk proses adalah kelanjutan dari alamat memori proses sebelumnya.

* Sedangkan sistem partisi banyak berarti sistem operasi menyimpan informasi tentang semua bagian memori yang tersedia untuk dapat diisi oleh proses-proses (disebut lubang / hole).

*

Alokasi Penyimpanan Dinamis

* Alokasi penyimpanan dinamis, yakni bagaimana memenuhi permintaan sebesar n dari kumpulan lubang-lubang (alokasi untuk proses) yang tersedia.

Ada berbagai solusi untuk mengatasi hal ini, yaitu:

* First fit : Mengalokasikan lubang pertama ditemukan yang besarnya mencukupi. Pencarian dimulai dari awal.

* Best fit : Mengalokasikan lubang dengan besar minimum yang mencukupi permintaan.

* Worst fit : Mengalokasikan lubang terbesar yang ada

* Setiap metoda memiliki kelebihan dan kekurangan masing-masing.

* Menggunakan best fit dan worst fit berarti kita harus selalu memulai pencarian lubang dari awal, kecuali apabila lubang sudah disusun berdasarkan ukuran.

* Metode worst fit akan menghasilkan sisa lubang yang terbesar.

* Sementara metoda best fit akan menghasilkan sisa lubang yang terkecil.

Fragmentasi

* Fragmentasi adalah munculnya lubang-lubang yang tidak cukup besar untuk menampung permintaan dari proses.

* Fragmentasi dapat berupa fragmentasi internal maupun fragmentasi eksternal.

Fragmentasi Ekternal

Fragmentasi ekstern muncul apabila jumlah keseluruhan memori kosong yang tersedia memang mencukupi untuk menampung permintaan tempat dari proses, tetapi letaknya tidak berkesinambungan atau terpecah menjadi beberapa bagian kecil sehingga proses tidak dapat masuk

* Misalnya, sebuah proses meminta ruang memori sebesar 17 KB, sedangkan memori dipartisi menjadi blok-blok yang besarnya masing-masing 5 KB.

* Maka, yang akan diberikan pada proses adalah 3 blok ditambah 2 KB dari sebuah blok.

* Sisa blok yang besarnya 3 KB akan disiapkan untuk menampung proses lain atau jika ia bertetangga dengan ruang memori yang kosong, ia akan bergabung dengannya.

* Akibatnya dengan sistem partisi banyak dinamis, bisa tercipta lubang-lubang di memori, yaitu ruang memori yang kosong.

Keadaan saat lubang-lubang ini tersebar yang masing-masing lubang tersebut tidak ada yang bisa memenuhi kebutuhan proses padahal jumlah dari besarnya lubang tersebut cukup untuk memenuhi kebutuhan proses disebut sebagai fragmentasi ekstern.

Fragmentasi intern muncul apabila jumlah memori yang diberikan oleh penjadwal CPU untuk ditempati proses lebih besar daripada yang diminta proses karena adanya selisih antara permintaan proses dengan alokasi lubang yang sudah ditetapkan.

Fragmentasi Internal

* Misalnya ada proses dengan permintaan memori sebesar 17 KB dan memori dipartisi menjadi blok yang masing-masing besarnya 5 KB.

* Pada sistem partisi banyak tetap, memori yang dialokasikan untuk proses adalah 4 blok, atau sebesar 20 KB. Padahal, yang terpakai hanya 17 KB.

* Sisa 3 KB tetap diberikan pada proses tersebut, walaupun tidak dipakai oleh proses tersebut.

* Hal ini berarti pula proses lain tidak dapat memakainya.

* Perbedaan memori yang dialokasikan dengan yang diminta inilah yang disebut fragmentasi intern.

Linear Address

* Salah satu jenis alamat memori pada arsitektur mikroprosesor Intel 80×86

* Merupakan penghubung antara segmentation unit dan paging unit

* 32-bit unsigned integer tunggal yang dapat digunakan untuk pengalamatan hingga 4 GB

* Umumnya berupa notasi heksadesimal

* Kernel menggunakan bagian awal dari memori yang dimulai dari PAGE_OFFSET

* Semua linear address setelah PAGE_OFFSET dapat digunakan untuk memetakan berbagai area memori non-kontigu

* Setiap area memori dipisahkan oleh interval sebesar 4-8 KB

* Untuk mencari interval linear address dapat dimulai dari PAGE_OFFSET


Overlays

Overlays berguna untuk memasukkan suatu proses yang membutuhkan memori lebih besar dari yang tersedia. Idenya untuk menjaga agar di dalam memori berisi hanya instruksi dan data yang dibutuhkan dalam satuan waktu. Routine -nya dimasukkan ke memori secara bergantian.

ini merupakan skema dari two-Pass Assembler

Sebagai contoh, sebuah two-pass assembler . selama pass1 dibangun sebuah tabel simbol, kemudian selama pass2, akan membuat kode bahasa mesin. kita dapat mempartisi sebuah assembler menjadi kode pass1, kode pass2, dan simbol tabel, dan routine biasa digunakan untuk kedua pass1 dan pass2.

Untuk menempatkan semuanya sekaligus, kita akan membutuhkan 200K memori. Jika hanya 150K yang tersedia, kita tidak dapat menjalankan proses. Bagaimana pun perhatikan bahwa pass1 dan pass2 tidak harus berada di memori pada saat yang sama. Kita mendefinisikan dua overlays . Overlays A untuk pass1, tabel simbol dan routine , overlays 2 untuk simbol tabel, routine , dan pass2.

Kita menambahkan sebuah driver overlays (10K) dan mulai dengan overlays A di memori. Ketika selesai pass1, pindah ke driver , dan membaca overlays B ke dalam memori, menimpa overlays A, dan mengirim kontrol ke pass2. Overlays A butuh hanya 120K, dan B membutuhkan 150K memori. Kita sekarang dapat menjalankan assembler dalam 150K memori. Pemanggilan akan lebih cepat, karena lebih sedikit data yang ditransfer sebelum eksekusi dimulai. Jalan program akan lebih lambat, karena ekstra I/O dari kode overlays B melalui overlays A.

Seperti dalam pemanggilan dinamis, overlays tidak membutuhkan bantuan dari sistem operasi. Implementasi dapat dilakukan secara lengkap oleh user dengan berkas struktur yang sederhana, membaca dari berkas ke memori, dan pindah dari memori tersebut, dan mengeksekusi instruksi yang baru dibaca. Sistem operasi hanya memperhatikan jika ada lebih banyak I/O dari biasanya.

Di sisi lain pemrogram harus merancang program dengan struktur overlays yang layak. Tugas ini membutuhkan pengetahuan yang lengkap tentang struktur dari program, kode dan struktur data.

Pemakaian dari overlays , dibatasi oleh komputer mikro, dan sistem lain yang mempunyai batasan jumlah memori fisik, dan kurangnya dukungan perangkat keras, untuk teknik yang lebih maju. Teknik otomatis menjalankan program besar dalam dalam jumlah memori fisik yang terbatas, lebih diutamakan.

Tidak ada komentar:

Posting Komentar