BAB V MANAJEMEN MEMORI

Memori merupakan tempat menampung data dan kode instruksi program. Kode instruksi program akan dibaca dari memori ke register prosesor untuk dieksekusi baris demi baris. Manajemen memori berkaitan dengan aktivitas pengelolaan penggunaan memori pada saat komputer aktif dan menjalankan proses-proses. Pada saat komputer dimatikan, kode instruksi program dan data yang telah diolah juga butuh disimpan secara permanen agar dapat digunakan pada kesempatan lain.

Register

Register berada secara fisik di dalam chip prosesor, menjadikannya tingkatan memori tercepat. Contohnya termasuk Instruction Register (IR) yang digunakan untuk menampung kode instruksi yang akan dieksekusi, serta register AX, BX, CX, DX, dan register lainnya yang berfungsi menampung data dan informasi status eksekusi kode instruksi. Kapasitas penyimpanan register umumnya sangat terbatas, 

Cache Memory

Memori cache dirancang khusus untuk mengatasi perbedaan kecepatan yang signifikan antara memori utama dan prosesor. Memori ini terbagi menjadi L1 cache dan L2 cache, dan umumnya terintegrasi langsung di dalam prosesor. .

Main Memory (Memori Utama)

Memori utama, yang umumnya dikenal sebagai RAM (Random Access Memory), dapat diakses secara acak. Sifatnya adalah volatile, yang berarti data yang tersimpan akan hilang ketika komputer dimatikan. Meskipun lebih ekonomis dibandingkan register, memori utama dapat diproduksi dengan kapasitas penyimpanan yang jauh lebih besar.

Secondary Memory (Memori Sekunder)

Memori sekunder umumnya berupa disk (misalnya, hard disk drive). Sifat penyimpanannya adalah permanen dan non-volatile, yang berarti data tetap tersimpan meskipun komputer dimatikan. Kapasitas penyimpanan disk cenderung sangat besar, contohnya 160 GB. Namun, kecepatan transfer datanya jauh lebih lambat dibandingkan dengan memori utama.


A. PENGALAMATAN MEMORI

Metode pengalamatan memori secara spesifik mendefinisikan model alamat yang digunakan dalam kode instruksi program, mekanisme penyalinan (loading) kode dan data program ke memori utama, serta kapan dan bagaimana alamat dalam kode instruksi diterjemahkan ke alamat fisik memori utama yang sesungguhnya.

1. Pengalamatan Secara Fisik (Physical/Absolute Addressing)

Pada metode pengalamatan memori secara fisik, alamat yang dituliskan dalam kode instruksi program hasil kompilasi sudah merupakan alamat fisik memori utama yang sesungguhnya. Selama eksekusi, prosesor akan memproses alamat dalam kode instruksi secara langsung tanpa memerlukan translasi alamat.

2. Pengalamatan Secara Relatif (Relative Addressing)

Pengalamatan relatif umumnya digunakan pada sistem yang menerapkan alokasi memori berurutan, di mana seluruh image proses harus menempati satu area memori yang utuh. Alamat dalam kode instruksi program merupakan alamat relatif (offset) terhadap posisi awal program.

3. Pengalamatan Secara Logika (Logical Addressing)

Pada pengalamatan logika, alamat yang ada dalam kode program adalah alamat logika yang masih perlu diterjemahkan atau ditranslasikan ke alamat fisik memori utama saat eksekusi. Translasi alamat untuk pengalamatan logika umumnya terjadi pada saat eksekusi.


B. ADDRESS BINDING

Address binding adalah aktivitas translasi alamat yang terdapat dalam kode instruksi program menjadi alamat fisik yang sebenarnya di memori utama. Translasi alamat ini dapat terjadi pada tiga momen berbeda dalam siklus hidup program: pada saat kompilasi (compile time), pada saat alokasi ke memori utama (loading-time), atau pada saat eksekusi (execution time),

1. Compile Time 

Jika lokasi kode instruksi atau data program di memori sudah ditetapkan dengan pasti sejak awal, maka pada saat kompilasi program, alamat absolut (fisik) dapat langsung dituliskan ke dalam kode program. 

2. Loading Time 

Untuk mengatasi inflexibilitas compile time binding, proses address binding dapat ditunda hingga loadinng program ke memori utama. Hasil kompilasi program yang disimpan sebagai berkas hanya berisi alamat relatif. Ketika kode program akan dialokasikan ke memori utama, alamat-alamat relatif tersebut ditranslasikan ke alamat fisik sesuai dengan lokasi aktual di mana program akan ditempatkan.

3. Execution Time 

Address binding dapat pula dilakukan pada saat eksekusi kode instruksi program. Dalam skenario ini, baik alamat referensi pada kode instruksi program yang tersimpan pada berkas maupun pada kode instruksi program yang telah dialokasikan di memori utama hanyalah berupa alamat logika. Alamat logika ini akan ditranslasikan ke alamat fisik hanya ketika instruksi yang mengandung alamat referensi tersebut dieksekusi oleh prosesor. 


C. MANAJEMEN MEMORI PADA SISTEM MONOPROGRAMMING

Manajemen memori pada sistem monoprogramming memiliki ciri khas yang sederhana. Hanya ada satu proses yang aktif pada suatu waktu, dan proses tersebut diberikan kendali penuh atas seluruh area memori pengguna. Program dimuatkan secara keseluruhan ke memori utama dari disk atau tape sebelum eksekusi dimulai. Saat dieksekusi, program mengambil alih kendali atas seluruh sumber daya komputer. Alokasi memori dilakukan secara berurutan (contiguous), 

1. Alokasi Memori 

Pada sistem monoprogramming, seluruh area memori yang tidak digunakan oleh sistem operasi dan device driver akan dialokasikan sepenuhnya kepada proses pengguna yang sedang berjalan.

2. Proteksi Memori 

Meskipun hanya ada satu proses pengguna, kode instruksi dan data sistem operasi tetap memerlukan perlindungan dari akses langsung atau modifikasi yang tidak sah oleh proses aplikasi pengguna. 

Proteksi ini dapat diimplementasikan dengan bantuan dua register perangkat keras:

  1. Register Pembatas (Limit Register): Berisi jangkauan atau lebar ruang alamat logika dari proses aplikasi pengguna. 
  2. Register Relokasi (Relocation Register): Diisi dengan alamat fisik awal dari proses pengguna. Akses ke bagian memori OS dicegah melalui mekanisme relokasi ini. 

Dengan bantuan kedua register ini, sistem memastikan bahwa proses pengguna hanya dapat mengakses bagian memori utama yang memang menjadi miliknya


D. MANAJEMEN MEMORI PADA SISTEM MULTIPROGRAMMING

Berbeda dengan sistem monoprogramming, manajemen memori pada sistem multiprogramming memiliki karakteristik yang jauh lebih kompleks dan dinamis:

  1. Sejumlah proses dapat menempati memori utama pada setiap saat.
  2. Image proses dari program dapat dimuat seluruhnya atau hanya sebagian saja ke memori utama.
  3. Alokasi memori utama ke proses dapat dilakukan secara berurutan (contiguous) ataupun tidak berurutan (non-contiguous).
  4. Dimungkinkan seluruh atau sebagian image proses berpindah lokasi memori utama selama eksekusinya.
  5. Dimungkinkan pula suatu lokasi memori utama diakses bersama oleh sejumlah proses atau disebut dengan memory sharing.

1. Pengalokasian Berurut dengan Partisi Statis

Pengalokasian memori utama secara berurut dengan partisi statis memiliki karakteristik sebagai berikut:

  1. Memori dibagi menjadi partisi-partisi dengan ukuran yang tetap.
  2. Satu proses hanya menggunakan satu partisi. Jika proses sudah selesai, partisi tersebut dapat digunakan oleh proses lain.
  3. Membutuhkan pengelolaan informasi mengenai partisi-partisi yang kosong yang siap untuk dialokasikan.

2. Pengalokasian Berurut dengan Partisi Dinamis

Pengalokasian memori berurut dengan partisi dinamis memiliki beberapa karakteristik:

  1. Pada kondisi awal, memori utama tidak dibagi-bagi menjadi partisi-partisi.
  2. Pemartisian dilakukan pada saat image proses akan disalinkan ke memori utama.
  3. Ukuran partisi yang dialokasikan akan disesuaikan dengan ukuran image proses.
  4. Partisi akan dibebaskan jika program sudah selesai.
  5. Membutuhkan pengelolaan informasi mengenai area memori utama yang masih kosong dan dapat dialokasikan ke proses.

Keuntungan dari pemartisian secara dinamis ini adalah tidak terjadinya fragmentasi internal karena partisi memori dialokasikan sesuai dengan ukuran image proses. Namun, kelemahannya adalah terjadinya fragmentasi eksternal, yaitu sisa ruang memori utama yang masih kosong (hole) yang terlalu kecil untuk dapat dialokasikan lagi ke proses lainnya sehingga tidak dapat digunakan lagi. 

3. Pengalokasian Berurut dengan Sistem Buddy

Sistem Buddy adalah metode alokasi dinamis khusus yang mengorbankan sebagian efisiensi memori demi alokasi dan dealokasi yang jauh lebih cepat. Pendekatan terstrukturnya menyederhanakan penggabungan memori saat dealokasi, menjadikannya efisien untuk sistem di mana pergantian memori yang cepat sering terjadi. Ini mewakili pilihan desain spesifik lainnya untuk menyeimbangkan metrik kinerja yang berbeda.

4. Pengalokasian Tak Berurut dengan Sistem Paging

Berbeda dengan model pengalokasian berurut, pada model pengalokasian tak berurut, bagian-bagian dari image proses dapat diletakkan secara terpisah di memori utama. Model alokasi tak berurut yang akan dibahas di sini adalah sistem paging.

5. Pengalokasian Tak Berurut dengan Sistem Segmentation

Selain sistem paging, model pengalokasian tak berurut lainnya adalah sistem segmentation. Berbeda dengan sistem paging yang menganut pemartisian secara statis, sistem segmentation memakai sistem pemartisian secara dinamis. Jadi, memori utama tidak dipartisi dari awal, tetapi dipartisi pada saat terjadi alokasi memori utama ke proses baru.


E. OPTIMALISASI UTILITAS MEMORI

Umumnya, memori utama pada suatu komputer merupakan sumber daya yang terbatas sehingga penggunaannya butuh dioptimalkan. Dengan mengoptimalkan penggunaan memori, diharapkan tingkat multiprogramming atau konkurensi, yaitu jumlah proses yang dapat dijalankan secara bersamaan, juga ikut meningkat. Di bawah ini akan dijelaskan beberapa strategi untuk meningkatkan utilitas memori utama pada suatu sistem komputer.

1. Overlay

Overlay adalah suatu teknik pemrograman yang membagi program yang besar menjadi bagian-bagian yang lebih kecil sehingga dapat dimuat secara parsial ke dalam suatu page memori yang berukuran lebih kecil. 

2. Dynamic Loading

Dynamic loading adalah teknik pemrograman yang memungkinkan hanya bagian-bagian program yang sedang dibutuhkan pada saat runtime saja yang akan disalinkan ke memori utama, sehingga pemakaian memori menjadi lebih efisien. 

3. Dynamic Linking

Dynamic linking adalah teknik yang memungkinkan linking ke rutin-rutin pustaka program aplikasi dilakukan secara dinamis pada saat runtime. Dynamic linking menghemat penggunaan memori utama, karena jika sejumlah aplikasi menggunakan rutin pustaka yang sama, maka pustaka tersebut hanya akan disalinkan sekali saja ke memori utama namun dapat direferensi dan digunakan bersama oleh aplikasi-aplikasi tersebut.

4. Virtual Memory

Virtual memory atau memori maya adalah teknik pemetaan memori yang melibatkan memori sekunder, sehingga ukuran memori sistem secara logika dapat lebih besar dari ukuran memori utama secara fisik. 


KESIMPULAN

Hierarki memori, yang terdiri dari register, cache, memori utama, dan memori sekunder, dirancang sebagai respons terhadap batasan fisik dan ekonomi, secara cerdas menyeimbangkan kecepatan, kapasitas, dan biaya untuk menciptakan ilusi memori yang besar dan cepat. 

Evolusi metode pengalamatan memori, dari pengalamatan fisik yang kaku, ke pengalamatan relatif yang memungkinkan relokasi dasar, hingga pengalamatan logika yang canggih, mencerminkan upaya berkelanjutan untuk meningkatkan fleksibilitas dan abstraksi memori.

Dalam lingkungan monoprogramming yang sederhana, pengelolaan memori berfokus pada alokasi tunggal dan perlindungan dasar kernel. Namun, transisi ke sistem multiprogramming memperkenalkan kompleksitas signifikan, mendorong pengembangan skema alokasi memori yang lebih canggih, baik berurutan (partisi statis, dinamis, sistem buddy) maupun tak berurutan (paging, segmentation). 

Berbagai strategi optimisasi memori seperti overlay, dynamic loading, dan dynamic linking telah dikembangkan untuk memaksimalkan utilitas memori, mengurangi jejak memori program, dan memfasilitasi berbagi sumber daya. 

Komentar