Skip to content Skip to sidebar Skip to footer

Materi tentang Manajemen Memori pada Sistem Operasi

Assalamu‘alaikum wr. wb.

Hello gais, Kembali lagi bersama Inzaghi's Blog! Jika sebelumnya sudah membahas tentang Sistem Operasi dan Proses Scheduling, sekarang giliran membahas tentang Manajemen Memori pada Sistem Operasi.




A. Pengertian Manajemen Memori

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.

B. Fungsi Manajemen Memori

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
Fungsi manajemen memori adalah :
  • Mengelola informasi memori yang dipakai dan tidak dipakai
  • Mengalokasikan memori ke proses yang memerlukan
  • Mengalokasikan memori dari proses yang telah selesai
  • Mengelola swapping antara memori utama dan disk
  • Manajemen 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 :

1. Relokasi
  • Pada sebuah Sistem 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

2. Proteksi
  • Proteksi memori digunakan untuk mencegah suatu proses mereferensi proses lainnya tanpa izin. 
  • Selain itu proteksi memori digunakan untuk mencegah adanya gangguan dari program jahat pada proses tertentu

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

4. Logical Organization
  • Manajemen memori melakukan segmentasi pada  proses di memori tersebut
  • Dengan adanya segmentasi tersebut, modul-modul yang dimiliki setiap programdapat  diakses atau dimodifikasi oleh program yang lain

5. Physical Organization
  • Manajemen 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 (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.

C. Jenis/Istilah dalam Manajemen Memori

1. 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. Pada saat waktu kuantum berakhir, manajer memori akan memulai untuk menukar proses yang baru selesai keluar dan menukar proses lain ke dalam memori yang dibebaskan.

Pada waktu berjalan, penjadwal CPU (CPU scheduler) akan mengalokasikan sejumlah waktu untuk proses yang lain di memori. Ketika masing-masing proses menyelesaikan waktu kuantum-nya, akan ditukar dengan proses yang lain.

Kebijakan penukaran juga dapat digunakan pada algoritma penjadwalan berbasis prioritas. Jika proses mempunyai prioritas lebih tinggi datang dan meminta layanan, memori akan swap out proses dengan prioritas lebih rendah sehingga proses dengan prioritas lebih tinggi dapat di-load dan dieksekusi.

Umumnya sebuah proses yang di-swap out akan menukar kembali ke ruang memori yang sama dengan sebelumnya. Jika proses pengikatan dilakukan pada saat load-time, maka proses tidak dapat dipindah ke lokasi yang berbeda.

Tetapi, jika pengikatan pada saat execution-time, maka kemungkinan proses ditukar ke ruang memori yang berbeda, karena alamat fisik dihitung selama waktu eksekusi. Bila CPU scheduler memutuskan untuk mengeksekusi proses, OS memanggil dispatcher. Dispatcher memeriksa untuk melihat apakah proses selanjutnya pada ready queue ada di memori.

Jika tidak dan tidak terdapat cukup memori bebas, maka dispatcher swap out sebuah proses
yang ada di memori dan swap in proses tersebut. Kemudian reload register ke keadaan normal. Teknik swapping yang sudah dimodifikasi ditemui pada beberapa sistem misalnya Linux, UNIX dan Windows.

Ilustrasi Swapping

2. Partitioning

Memori utama biasanya dibagi ke dalam dua partisi yaitu untuk :
  • Sistem operasi biasanya diletakkan pada alamat memori rendah dengan vektor
  • Proses user yang diletakkan pada alamat memori tinggi.
Alokasi proses user pada memori berupa single partition allocation atau :
  • Pada single partition allocation diasumsikan sistem operasi ditempatkan di memori rendah dan proses user dieksekusi di memori tinggi. Kode dan data sistem operasi harus diproteksi dari perubahan tak terduga oleh user proses. Proteksi dapat dilakukan dengan menggunakan register relokasi (relocation register) dan register limit (limit register). Register relokasi berisi nilai dari alamat fisik terkecil sedangkan register limit berisi jangkauan alamat logika dan alamat logika harus lebih kecil dari register limit. MMU memetakan alamat logika secara dinamis dengan menambah nilai pada register relokasi.
  • Multiple Partition Allocation mengijinkan memori user dialokasikan untuk proses yang berbeda yang berada di antrian input (input queue) yang menunggu dibawa ke memori. Terdapat dua skema yaitu partisi tetap (fixed partition) dimana memori dibagi dalam sejumlah partisi tetap dan setiap partisi berisi tepat satu proses.

Jumlah partisi terbatas pada tingkat multiprogramming. Digunakan oleh IBM OS/360 yang disebut Multiprogramming with a Fixed number of Task (MFT). Skema yang kedua adalah partisi dinamis (variable partition) merupakan MFT yang digeneralisasi yang disebut Multiprogramming with a Variable number of Tasks (MVT). Skema ini digunakan terutama pada lingkungan batch.

Pada MVT, sistem operasi menyimpan tabel yang berisi bagian memori yang tersedia dan yang digunakan. Mula-mula, semua memori tersedia untuk proses user sebagai satu blok besar (large hole). Lubang (hole) adalah blok yang tersedia di memori yang mempunyai ukuran berbeda. Bila proses datang dan memerlukan memori, dicari lubang (hole) yang cukup untuk proses tersebut.

Bila ditemukan memory manager mengalokasikan sejumlah memori yang dibutuhkan dan menyimpan sisanya untuk permintaan berikutnya. Sistem operasi menyimpan informasi tentang partisi yang dialokasikan dan partisi yang bebas (hole).

3. Paging

Paging merupakan kemungkinan solusi untuk permasalahan fragmentasi eksternal dimana ruang alamat logika tidak berurutan; mengizinkan sebuah proses dialokasikan pada memori fisik yang terakhir tersedia. Memori fisik dibagi ke dalam blok-blok ukuran tetap yang disebut frame. Memori logika juga dibagi ke dalam blok-blok dengan ukuran yang sama yang disebut page. Semua daftar frame yang bebas disimpan. Untuk menjalankan program dengan ukuran n page, perlu menemukan n frame bebas dan meletakkan program pada frame tersebut. Tabel page (page table) digunakan untuk menerjemahkan alamat logika ke alamat fisik.

Setiap alamat dibangkitkan oleh CPU dengan membagi ke dalam 2 bagian yaitu :
  • Page number (p) digunakan sebagai indeks ke dalam table page (page table).
  • Page table berisi alamat basis dari setiap page pada memori fisik.
  • Page offset (d) mengombinasikan alamat basis dengan page offset untuk mendefinisikan alamat memori fisik yang dikirim ke unit memori.
Ilustrasi Memory Paging

Implementasi Sistem Paging

Setiap sistem operasi mempunyai metode sendiri untuk menyimpan tabel page. Beberapa sistem operasi mengalokasikan sebuah tabel page untuk setiap proses. Pointer ke tabel page disimpan dengan nilai register lainnya dari PCB.

Pada dasarnya terdapat 3 Metode yang berbeda untuk implementasi tabel page :
  1. Tabel page diimplementasikan sebagai kumpulan dari "dedicated" register. Register berupa rangkaian logika berkecepatan sangat tinggi untuk efisiensi translasi alamat paging.
  2. Tabel page disimpan pada main memori dan menggunakan Page Table Base Register (PTBR) untuk menunjuk ke tabel page yang disimpan di main memori. Penggunakan memori untuk mengimplementasikan tabel page akan memungkinkan tabel page sangat besar (sekitar 1 juta entry). Perubahan tabel page hanya mengubah PTBR dan menurunkan waktu contextswitch. Akan tetapi penggunaan metode ini memperlambat akses memori dengan faktor 2. Hal ini dikarenakan untuk mengakses memori perlu dua langkah : pertama untuk lokasi tabel page dan kedua untuk lokasi alamat fisik yang diperlukan.
  3. Menggunakan perangkat keras cache yang khusus, kecil dan cepat yang disebut associative register atau translation look-aside buffers (TLBs). Merupakan solusi standar untuk permasalahan penggunaan memori untuk implementasi tabel page. Sekumpulan associative register berupa memori kecepatan tinggi. Setiap register terdiri dari 2 bagian yaitu key dan value. Jika associative register memberikan item, akan dibandingkan dengan semua key secara simultan. Jika item ditemukan nilai yang berhubungan diberikan. Model ini menawarkan pencarian cepat tetapiperangkat keras masih mahal.

4. Segementasi

Konsep segmentasi adalah user atau programmer tidak memikirkan sejumlah rutin program yang dipetakan ke main memori sebagai array linier dalam byte tetapi memori dilihat sebagai kumpulan segmen dengan ukuran berbeda-beda, tidak perlu berurutan diantara segment tersebut. 

Segmentasi adalah skema manajemen memori yang memungkinkan user untuk melihat memori tersebut. Ruang alamat logika adalah kumpulan segmen. Setiap segmen mempunyai nama dan panjang. Spesifikasi alamat berupa nama segmen dan offset. Segment diberi nomor dan disebut dengan nomor segmen (bukan nama segmen) atau segment number. 

Segmen dibentuk secara otomatis oleh compiler. Sebuah program adalah kumpulan segmen. Suatu segmen adalah Unit Logika seperti Program Utama, Prosedur, Fungsi, Metode, Obyek, Variabel Lokal, Variabel Global, Blok Umum, Stack, Tabel Simbol, Array dan lain-lain.


Biasanya Manajemen Memori sangat penting bagi semua Sistem Operasi. Itulah Materi tentang Manajemen Memori pada Sistem Operasi. Semoga bermanfaat bagi Anak IT. 

Terima Kasih šŸ˜„šŸ˜˜šŸ‘ŒšŸ‘ :)

Wassalamu‘alaikum wr. wb.

Ads