Skip to main content

Manajemen Memori Pada Sistem Operasi Bagian 1

Memori adalah pusat dari operasi pada sistem komputer modern. Memori adalah array besar dari word atau byte yang biasa disebut alamat. CPU mengambil instruksi dari memory berdasarkan nilai dari program counter.

Instruksi ini menyebabkan penambahan muatan dari dan ke alamat memori tertentu. Instruksi eksekusi yang umum, contohnya, pertama mengambil instruksi dari memori. Instruksi dikodekan dan mungkin mengambil operand dari memory.

Setelah instruksi dieksekusi pada operand, hasilnya ada yang dikirim kembali ke memory. Sebagai catatan, unit memory hanya merupakan deretan alamat memory; tanpa tahu bagaimana membangkitkan (instruction counter, indexing, indirection, literal address dan lainnya) atau untuk apa (instruksi atau data).

Oleh karena itu, kita dapat mengabaikan bagaimana alamat memori dibangkitkan oleh program, yang lebih menarik bagaimana deretan alamat memori dibangkitkan oleh program yang sedang berjalan.

Manajemen memori pada sistem komputer 

Memori adalah pusat kegiatan pada sebuah komputer, karena setiap proses yang akan dijalankan harus melalui memori manager lebih dahulu. Sedangkan manajemen adalah cara / pengaturan agar sesuatu dapat bekerja secara maksimal dan efisien.

Sehingga dapat didefinisikan bahwa Manajemen Memori adalah cara / pengaturan memori agar kegiatan pada sebuah komputer dapat bekerja secara maksimal dan efisien. Memori harus diatur sebaik mungkin agar

  • Meningkatkan utilitas CPU yang sebesar-besarnya
  • Data dan instruksi dapat diakses dengan cepat oleh CPU
  • Memori utama memiliki kapasitas yang sangat terbatas sehingga pemakaiannya harus seefisien mungkin
  • Transfer data dari/ke memori utama ke/dari CPU dapat efisien
Baca juga :Memahami Fungsi dan Cara Kerja Memori RAM Pada Komputer

Fungsi manajemen memori adalah

  1. Mengelola informasi memori yang dipakai dan tidak dipakai
  2. Mengatur strategi alokasi memori
  3. Mengalokasikan memori ke proses yang memerlukan
  4. Mendealokasikan memori dari proses yang telah selesai
  5. Mengelola swapping antara memori utama dan disk
  6. Manejemen input/output data dari dan ke memori

Manajemen Memori dibedakan menjadi 2 (berdasarkan keberadaan swapping) yaitu manajemen memori dengan swapping dan manajemen memori tanpa swapping.

Manajemen Memori Tanpa Swapping adalah manajemen memori tanpa pemindahan proses antara memori utama dan disk selama eksekusi. Sedangkan Manajemen Memori Dengan Swapping adalah manajemen memori dengan pemindahan proses antara memori utama dan disk selama eksekusi.

Contoh manajemen memori pada Sistem Operasi Multi-tasking

  • Relokasi
    • Pada sebuah sitem operasi, menejemen memori harus bisa mengatur program dalam memori seperti alamat dan referensi program
    • Memori tidak mencukupi untuk menampung keseluruhan program dan tidak semua bagian program diproses dalam memori
  • Proteksi
    • Proteksi memori digunakan untuk mencegah suatu proses mereferensi proses lainnya tanpa ijin
    • Selain itu proteksi memori digunakan untuk mencegah adanya gangguan dari program jahat pada proses tertentu
  • Sharing
    • Dengan adanya sharing memori, suatu proses bisa berkomunikasi dengan proses lainnya
    • Contohnya berbagi informasi dan mengakses bagian memori yang sama
    • Sharing memori ini merupakan teknik yang tercepat untuk komunikasi antar proses
  • Logical Organization
    • Menejemen memori melakukan segmentasi pada  proses di memori tersebut
    • Dengan adanya segmentasi tersebut, modul-modul yang dimiliki setiap program dapat diakses atau dimodifikasi oleh program yang lain
  • Physical Organization
    • Menejemen memori bisa mengatasi perpindahan informasi diantara dua level memori yang digunakan

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.

Pada beberapa kasus, program user akan melalui beberapa langkah sebelum dieksekusi Alamat pada source program umumnya merupakan alamat simbolik. Sebuah compiler biasanya melakukan pengikatan alamat simbolik (symbolic address) ke alamat relokasi dipindah (relocatable address).

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.

Alamat yang dibangkitkan oleh CPU disebut alamat logika (logical address) dimana alamat terlihat sebagai unit memory yang disebut alamat fisik (physical address). Tujuan utama manajemen memori adalah konsep meletakkan ruang alamat logika ke ruang alamat fisik.

Hasil skema waktu kompilasi dan waktu pengikatan alamat pada alamat logika dan alamat memori adalah sama. Tetapi hasil skema waktu pengikatan alamat waktu eksekusi berbeda. dalam hal ini, alamat logika disebut dengan alamat maya (virtual 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).

Memory Management Unit

Memory Management Unit (MMU) adalah perangkat keras yang memetakan alamat virtual ke alamat fisik. Pada skema MMU, nilai register relokasi ditambahkan ke setiap alamat yang dibangkitkan oleh proses user pada waktu dikirim ke memori.

Kebanyakan MMU menggunakan tabel "data" yang dinamakan Page Table untuk memetakan nomor alamat virtual ke nomor alamat fisik pada memori utama. Cache asosiatif yang dinamakan Translation Lookside Buffer (TLB) digunakan untuk menghindari keharusan mengakses memori utama setiap kali alamat virtual dipetakan.

MMU lain mungkin menggunakan array memori secara privat atau register untuk menyimpan satu set page table. Nomor page fisik dikombinasikan dengan page offset untuk memberikan alamat fisik yang lengkap.

Data dalam page table atau Page Table Entry (PTE), juga dapat menyertakan informasi tentang apakah halaman tersebut telah ditulis ke blok modifikasi. Kadang kala, PTE melarang akses ke page virtual karena mungkin tidak ada alamat RAM fisik yang dialokasikan di dalamnya.

Kemudian, MMU akan memberi sinyal page fault pada CPU. Sistem operasi kemudian menanganinya dengan mencoba menemukan kerangka cadangan RAM dan menyiapkan PTE baru untuk memetakannya dalam alamat virtual yang diminta. Jika tidak ada RAM yang kosong, mungkin perlu memilih page yang ada dan menggunakan beberapa algoritma pengganti serta menyimpannya ke dalam penyimpanan.

MMU juga dapat menghasilkan kondisi kesalahan akses ilegal atau invalid page faulr ilegal, atau akses memori yang tidak tersedia yang mengarahkan pada kondisi bus error atau segmentation fault ketika ditangani oleh sistem operasi.

Pada komputer modern, MMU umumnya membagi memori kedalam page dengan ukuran 4-64 KB yang mampu ditingkatkan menjadi page besar dengan ukuran 2 MB hingga 1 GB. 

Lanjut ke manajemen memori pada sistem operasi bagian kedua

Apakah kalian punya pengalaman atau pendapat yang berbeda ? Tuliskan lewat kotak komentar di bawah. Usahakan sesuai topik artikel ini.
Tulis komentar