Jump to content

Manajemen Memori

From Wiki

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.

Pengikatan Alamat (Address Binding)

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 komputer dimulai pada 00000, alamat pertama dari proses user tidak perlu harus dimulai 00000.

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. Misalnya : program format .com pada MS-DOS adalah kode absolut yang diikat pada saat waktu kompilasi
  • 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.

Dinamic Loading

Untuk memperoleh utilitas ruang memori, dapat menggunakan dynamic loading. Dengan dynamic loading, sebuah rutin tidak disimpan di memori sampai dipanggil. Semua rutin disimpan pada disk dalam format relocatable load. Mekanisme dari dynamic loading adalah program utama di-load dahulu dan dieksekusi.

Keuntungan dari dynamic loading adalah rutin yang tidak digunakan tidak pernah di-load. Skema ini lebih berguna untuk kode dalam jumlah besar diperlukan untuk menangani kasus-kasus yang jarang terjadi seperti error routine. Dinamic loading tidak memerlukan dukungan khusus dari sistem operasi. Sistem operasi hanya perlu menyediakan beberapa rutin pustaka untuk implementasi dynamic loading.

Dinamic Linking

Konsep dynamic linking sama dengan dynamic loading. Pada saat loading, linking ditunda sampai waktu eksekusi. Terdapat kode kecil yang disebut stub digunakan untuk meletakkan rutin library di memori dengan tepat. Stub diisi dengan alamat rutin dan mengeksekusi rutin. Sistem operasi perlu memeriksa apakah rutin berada di alamat memori.

Dinamic linking biasanya digunakan dengan sistem library, seperti language subroutine library. Tanpa fasilitas ini, semua program pada sistem perlu mempunyai copy dari library language di dalam executable image. Kebutuhan ini menghabiskan baik ruang disk maupun memori utama.

Overlay

Teknik Overlay biasanya digunakan untuk memungkinkan sebuah proses mempunyai jumlah yang lebih besar dari memori fisik daripada alokasi memori yang diperuntukkan.

Overlay tidak membutuhkan dukungan khusus dari sistem operasi. User dapat mengimplementasikannya secara lengkap menggunakan struktur file sederhana, membaca dari file ke memori dan meloncat ke memori dan mengeksekusi instruksi read yang lebih baru.

Ruang Alamat Logika dan Ruang Alamat Fisik

Alamat yang dibangkitkan oleh CPU disebut alamat logika (logical address) dimana alamat terlihat sebagai uni memory yang disebut alamat fisik (physical 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).

Tujuan utama manajemen memori adalah konsep meletakkan ruang alamat logika ke ruang alamat fisik.

Swapping

Proses 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

Proses Swapping

Teknik swapping yang sudah dimodifikasi ditemui pada beberapa sistem misalnya Linux, UNIX dan Windows.

Pembagian Memori

Memori utama biasanya dibagi ke dalam dua partisi yaitu:

  1. Sistem operasi biasanya diletakkan pada alamat memori rendah dengan vektor interupsi
  2. Proses user yang diletakkan pada alamat memori tinggi. Alokasi proses user pada memori berupa single partition allocation atau multiple partition allocation.

Hirarky Memory

Hirarky Memory

Cache Memory

Memory yang bertugas membantu tugas primary memory dalam memecah-mecah data yang akan diproses dan yang belum diproses, dengan tujuan mempermudah kinerja processor (karena data dibagi-bagi / dipotong-potong dulu sebelum diproses). Biasa ada dalam processor, mother board maupun peralatan mikrokontroller lain (VGA, Hard disk, Sound, dsb). Berukuran kecil, antara Kilo Bytes (KB) sampai dengan MB (Mega Bytes).

Main Memory

Memory utama dari sebuah komputer, biasa berbentuk RAM (disebut juga sebagai memory dinamis). Fungsi utamanya adalah menyimpan sementara data yang akan diproses oleh processor dan data yang telah diproses oleh processor untuk selanjutnya diteruskan ke media input/output yang lain VGA (ditampilkan), Sound (mengeluarkan suara), Hard Disk (menyimpan data/save), maupun media input/output lainnya. Besarannya adalah MB (Mega Byte) hingga GB (Giga Byte).

Secondary Memory

Memory pembantu dari sebuah komputer, biasa berbentuk Harddisk / ROM (Read Only Memory), disebut juga sebagai memory statis (pasif). Fungsi utamanya adalah menyerupai RAM tapi perbedaannya memory jenis ini bisa menyimpan data dalam waktu yang lama. Dan juga memory jenis ini (hard disk) biasa dipakai sebagai MEMORY BANTUAN, yaitu memori tambahan untuk membantu tugas RAM.

Manajemen Memory

Manajemen memori dilakukan dengan cara membagi-bagi memori untuk mengakomodasi banyak proses.

Manajemen memori dilakukan untuk menjamin agar setiap proses yang ready dapat segera memanfaatkan processor time.

Beberapa fungsi lainnya

  • Mengelola informasi memori yang dipakai & tidak dipakai.
  • Mengalokasikan memori ke proses yang memerlukan.
  • Men-dealokasikan memori dari proses yang telah selesai.
  • Mengelola swapping antara memori utama & disk.

Requierement Management Memory

  • Relocation
  • Protection
  • Sharing
  • Logical organization
  • Physical organization

Relocation

Prosesor dan sistem operasi harus dapat mentranslasikan memori referensi ke alamat fisik (physical address) yang mengalokasikan program dalam memori utama. Jika suatu program di-load ke memori, maka alamat lokasi memori (alamat absolut atau alamat fisik) yang akan ditempati harus ditentukan Alamat absolut suatu program dapat berubah-ubah sebagai akibat:

  • Swapping
  • Compaction

Jenis-jenis Alamat Data

  • Alamat Logical adalah alamat suatu word relatif terhadap titik referensi tertentu dan harus dilakukan translasi terhadap alamat fisik.
  • Alamat Relatif adalah alamat yang menunjukkan lokasi relatif terhadap alamat awal suatu program, terdiri dan:
    • Alamat instruksi dalam pencabangan
    • Alamat instruksi call
    • Alamat data
  • Alamat Fisik (mutlak/absolut) adalah alamat sebenarnya dan suatu memori

Protection

Suatu proses tidak boleh mengakses lokasi memori proses yang lain tanpa ijin Lokasi program di memori tidak tentu karena alamat mutlak pada saat compile tidak dapat diketahui. Penanganan proteksi memori diserahkan kepada prosesor (secara hardware), bukan bagian sistem operasi (software).

Sharing

Harus dimungkinkan suatu lokasi memori dapat diakses oleh lebih dari satu proses (secara legal) Beberapa proses yang memerlukan data yang sama, maka tidak perlu setiap proses mengcopy data dari disk ke memori, cukup sebuah copy saja.

Logical organization

Main memory dikelompokkan secara linier atau berdimensi satu yang berupa ruang alamat yang terdiri dari deretan byte atau word.

Sebagian besar program dibuat dalam bentuk modul → penempatan di memori tidak linier → diperlukan pengaturan secara logik

Kelebihan program dalam bentuk modul:

  • Modul dapat ditulis dan di-compile secara terpisah. Setiap modul dapat diberi tingkatan proteksi berbeda-beda (readonly, execute only).
  • Module dapat di-share oleh beberapa proses.

Physical organization

Memory dikelompokkan menjadi memori utama dan memori sekunder Diperlukan metode yang mengatur aliran data dari memori utama ke memori sekunder dan sebaliknya.

Pengaturan tersebut dilakukan oleh sistem operasi, bukan programmer, karena:

  • Programmer tidak tahu berapa ruang memori yang tersedia pada saat program dijalankan
  • Bila ruang memori yang tersedia tidak cukup untuk menampung program dan data → sistem dapat melakukan overlay
  • Overlay adalah menempatkan beberapa bagian modul/program pada area memori yang sama secara bergantian